Langkau ke kandungan

Skrip repositori

Skrip repositori ialah skrip shell yang anda konfigurasikan mengikut repositori (Tetapan → Repositori → ikon terminal pada baris repositori) yang dijalankan oleh pelayan Control Center terhadap worktree sesuatu ruang bagi repositori itu — checkout terasing di bawah <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ tempat ejen bekerja.

Terdapat dua jenis:

Skrip Bila ia berjalan Gunakannya untuk
Persediaan Sejurus selepas worktree disediakan untuk sesuatu ruang Memasang kebergantungan, menjana fail, menyalin .env
Arkib Sejurus sebelum worktree dimusnahkan atau dikutip oleh pengumpul sampah Membersihkan sumber di luar worktree (rangkaian docker, terowong, keadaan luaran)

Kedua-dua skrip dijalankan melalui bash -lc (shell log masuk, jadi alat yang dipasang melalui Homebrew/nvm berada pada PATH) dengan worktree sebagai direktori kerja, dan pemboleh ubah persekitaran ini ditetapkan:

Pemboleh ubah Nilai
CC_WORKSPACE_PATH Worktree (cwd skrip)
CC_ROOT_PATH Repositori sumber yang didaftarkan — checkout anda sendiri
CC_SPACE_ID Ruang yang memiliki worktree itu
CC_SPACE_NAME Nama paparan ruang itu
CC_REPO_NAME Nama paparan repositori itu

Contohnya, skrip persediaan yang memasang kebergantungan dan membawa masuk .env repositori yang diabaikan oleh git:

Tetingkap terminal
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Skrip persediaan yang keluar dengan bukan sifar (atau melebihi tamat masanya selama 5 minit) menggagalkan penyediaan ruang itu: ruang tersebut menunjukkan keadaan gagal dengan pilihan cuba semula, dan hujung output larian itu direkodkan. Cuba semula akan menyediakan daripada worktree yang bersih dan menjalankan skrip itu sekali lagi — tulis skrip persediaan supaya larian semula selepas pemasangan separa berkesan (pengurus pakej sudah berkelakuan begitu).
  • Skrip arkib bersifat usaha terbaik: kegagalan (atau tamat masanya selama 2 minit) direkodkan tetapi tidak pernah menyekat pemadaman. Arkib berjalan pada laluan GC tanpa sesiapa untuk menjawab gesaan (ruang dipadam, PR dicantumkan, pembersihan berjadual).

Persediaan hanya berjalan pada worktree yang baharu: menghantar semula ejen ke ruang yang sudah panas menggunakan semula checkout yang sedia ada dan tidak membayar semula pemasangan.

Setiap pelaksanaan direkodkan dengan status, tempoh, kod keluar dan hujung output terhadnya, yang kelihatan dalam dialog tetapan yang sama di bawah “Larian terkini” (langganan repos.watchScriptRuns menstrimnya secara langsung).

Skrip ialah shell yang dilaksanakan oleh pelayan, jadi menulisnya terhad kepada pentadbir ruang kerja dan dijaga oleh kelas tindakan processSpawn — jaring guardrail yang sama yang mengawal setiap operasi penjanaan proses yang lain.