コンテンツにスキップ

リポジトリスクリプト

リポジトリスクリプトは、リポジトリごとに設定するシェルスクリプトです(設定 → リポジトリ → リポジトリの行のターミナルアイコン)。Control Center のサーバーが、そのリポジトリのスペースのワークツリーに対して実行します。これは <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ 以下にある、エージェントが作業する隔離されたチェックアウトです。

2 種類あります:

スクリプト 実行タイミング 用途
セットアップ スペース用のワークツリーがプロビジョニングされた直後 依存関係のインストール、ファイルの生成、.env のコピー
アーカイブ ワークツリーが破棄される、またはガベージコレクションされる直前 ワークツリー外のリソースのクリーンアップ(Docker ネットワーク、トンネル、外部状態)

どちらのスクリプトも bash -lc で実行され(ログインシェルなので、Homebrew や nvm でインストールしたツールが PATH に入っています)、ワークツリーを作業ディレクトリとして、次の環境変数を設定した状態で動きます:

変数 値
CC_WORKSPACE_PATH ワークツリー(スクリプトの cwd)
CC_ROOT_PATH 登録済みのソースリポジトリ — あなた自身のチェックアウト
CC_SPACE_ID ワークツリーが属するスペース
CC_SPACE_NAME スペースの表示名
CC_REPO_NAME リポジトリの表示名

たとえば、依存関係をインストールし、リポジトリの gitignore された .env を取り込むセットアップスクリプトは次のとおりです:

ターミナルウィンドウ
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • セットアップスクリプトが非ゼロで終了する(または 5 分のタイムアウトを超える)と、スペースのプロビジョニングが失敗します。スペースは再試行付きの失敗状態を表示し、その実行の出力末尾が記録されます。再試行ではクリーンなワークツリーからプロビジョニングしてスクリプトを再実行します — 不完全なインストールの後の再実行が機能するようにセットアップスクリプトを書いてください(パッケージマネージャーはすでにそう振る舞います)。
  • アーカイブスクリプトはベストエフォートです。失敗(または 2 分のタイムアウト)は記録されますが、削除をブロックすることは決してありません。アーカイブは、プロンプトに答える人がいない GC の経路で実行されます(スペースの削除、PR のマージ、スケジュールされたクリーンアップ)。

セットアップは新しいワークツリーでのみ実行されます。ウォームなスペースにエージェントを再ディスパッチすると既存のチェックアウトが再利用され、インストールを二重に支払うことはありません。

すべての実行は、ステータス、所要時間、終了コード、および上限付きの出力末尾とともに記録され、同じ設定ダイアログの「最近の実行」に表示されます(repos.watchScriptRuns サブスクリプションがそれをライブで配信します)。

スクリプトはサーバーが実行するシェルであるため、その書き込みはワークスペース管理者に制限され、processSpawn アクションクラスによって保護されます — プロセスを起動する他のあらゆる操作をゲートするのと同じガードレール網です。