程式庫腳本
程式庫腳本是你按程式庫設定的 shell 腳本(設定 → 程式庫 → 程式庫列上的終端
圖示),Control Center 的伺服器會針對該程式庫的某個空間的工作樹執行它們
——也就是位於 <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ 之下、
供代理工作的那個隔離檢出。
共有兩種:
| 腳本 | 何時執行 | 用途 |
|---|---|---|
| 設定 | 為空間佈建工作樹之後立即執行 | 安裝依賴、產生檔案、複製 .env |
| 歸檔 | 在工作樹被銷毀或垃圾回收之前 | 清理工作樹以外的資源(docker 網絡、隧道、外部狀態) |
腳本在哪裡執行
標題為「腳本在哪裡執行」的章節兩個腳本都經 bash -lc 執行(登入 shell,因此以 Homebrew/nvm 安裝的工具都在
PATH 上),並以工作樹作為工作目錄,同時設定以下環境變數:
| 變數 | 值 |
|---|---|
CC_WORKSPACE_PATH |
工作樹(腳本的 cwd) |
CC_ROOT_PATH |
已註冊的來源程式庫——你自己的檢出 |
CC_SPACE_ID |
工作樹所屬的空間 |
CC_SPACE_NAME |
空間的顯示名稱 |
CC_REPO_NAME |
程式庫的顯示名稱 |
例如,以下設定腳本會安裝依賴,並引入程式庫中被 git 忽略的 .env:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run build失敗行為
標題為「失敗行為」的章節- 設定腳本若以非零狀態結束(或超過其 5 分鐘逾時),會令該空間的佈建失敗: 空間會顯示失敗狀態並提供重試,同時記錄該次執行的輸出尾部。重試會從乾淨的 工作樹佈建,並再次執行該腳本——撰寫設定腳本時,請確保安裝只完成一部分之後 重新執行仍然可行(套件管理員本身就是這樣運作)。
- 歸檔腳本屬於盡力而為:失敗(或其 2 分鐘逾時)會被記錄,但絕不會阻止 刪除。歸檔會在無人能回應提示的 GC 路徑上執行(空間已刪除、PR 已合併、排程 清理)。
設定只在全新的工作樹上執行:把代理重新派發到已預熱的空間,會重用現有的 檢出,不會再次付出安裝成本。
執行歷史
標題為「執行歷史」的章節每一次執行都會記錄其狀態、耗時、結束碼,以及一段有上限的輸出尾部,可在同一個
設定對話框的「最近執行」下查看(repos.watchScriptRuns 訂閱會即時串流它)。
這些腳本是由伺服器執行的 shell,因此只有工作區管理員可以撰寫,並由
processSpawn 動作類別把關——與所有其他派生程序的作業共用同一張護欄網。