リポジトリスクリプト
リポジトリスクリプトは、リポジトリごとに設定するシェルスクリプトです(設定 → リポジトリ → リポジトリの行のターミナルアイコン)。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 installcp "$CC_ROOT_PATH/.env" .envpnpm run build失敗時の動作
「失敗時の動作」というセクション- セットアップスクリプトが非ゼロで終了する(または 5 分のタイムアウトを超える)と、スペースのプロビジョニングが失敗します。スペースは再試行付きの失敗状態を表示し、その実行の出力末尾が記録されます。再試行ではクリーンなワークツリーからプロビジョニングしてスクリプトを再実行します — 不完全なインストールの後の再実行が機能するようにセットアップスクリプトを書いてください(パッケージマネージャーはすでにそう振る舞います)。
- アーカイブスクリプトはベストエフォートです。失敗(または 2 分のタイムアウト)は記録されますが、削除をブロックすることは決してありません。アーカイブは、プロンプトに答える人がいない GC の経路で実行されます(スペースの削除、PR のマージ、スケジュールされたクリーンアップ)。
セットアップは新しいワークツリーでのみ実行されます。ウォームなスペースにエージェントを再ディスパッチすると既存のチェックアウトが再利用され、インストールを二重に支払うことはありません。
実行履歴
「実行履歴」というセクションすべての実行は、ステータス、所要時間、終了コード、および上限付きの出力末尾とともに記録され、同じ設定ダイアログの「最近の実行」に表示されます(repos.watchScriptRuns サブスクリプションがそれをライブで配信します)。
スクリプトはサーバーが実行するシェルであるため、その書き込みはワークスペース管理者に制限され、processSpawn アクションクラスによって保護されます — プロセスを起動する他のあらゆる操作をゲートするのと同じガードレール網です。