跳至內容

程式庫腳本

程式庫腳本是你按程式庫設定的 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 install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • 設定腳本若以非零狀態結束(或超過其 5 分鐘逾時),會令該空間的佈建失敗: 空間會顯示失敗狀態並提供重試,同時記錄該次執行的輸出尾部。重試會從乾淨的 工作樹佈建,並再次執行該腳本——撰寫設定腳本時,請確保安裝只完成一部分之後 重新執行仍然可行(套件管理員本身就是這樣運作)。
  • 歸檔腳本屬於盡力而為:失敗(或其 2 分鐘逾時)會被記錄,但絕不會阻止 刪除。歸檔會在無人能回應提示的 GC 路徑上執行(空間已刪除、PR 已合併、排程 清理)。

設定只在全新的工作樹上執行:把代理重新派發到已預熱的空間,會重用現有的 檢出,不會再次付出安裝成本。

每一次執行都會記錄其狀態、耗時、結束碼,以及一段有上限的輸出尾部,可在同一個 設定對話框的「最近執行」下查看(repos.watchScriptRuns 訂閱會即時串流它)。

這些腳本是由伺服器執行的 shell,因此只有工作區管理員可以撰寫,並由 processSpawn 動作類別把關——與所有其他派生程序的作業共用同一張護欄網。