Skrypty repozytorium
Skrypty repozytorium to skrypty powłoki, które konfigurujesz dla poszczególnych
repozytoriów (Ustawienia → Repozytoria → ikona terminala w wierszu
repozytorium), a które serwer Control Center uruchamia względem worktree
przestrzeni tego repozytorium — izolowanego checkoutu pod
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/, w którym pracują
agenci.
Wyróżniamy dwa rodzaje:
| Skrypt | Kiedy się uruchamia | Do czego służy |
|---|---|---|
| Skrypt konfiguracyjny | Zaraz po przygotowaniu worktree dla przestrzeni | Instalowanie zależności, generowanie plików, kopiowanie .env |
| Skrypt archiwizacji | Tuż przed zniszczeniem worktree lub odzyskaniem go przez GC | Sprzątanie zasobów poza worktree (sieci Dockera, tunele, stan zewnętrzny) |
Gdzie uruchamiają się skrypty
Dział zatytułowany „Gdzie uruchamiają się skrypty”Oba skrypty uruchamiają się przez bash -lc (powłoka logowania, więc
zainstalowane przez Homebrew/nvm narzędzia są dostępne w PATH), z worktree
jako katalogiem roboczym i ustawionymi następującymi zmiennymi środowiskowymi:
| Zmienna | Wartość |
|---|---|
CC_WORKSPACE_PATH |
Worktree (katalog roboczy skryptu) |
CC_ROOT_PATH |
Zarejestrowane repozytorium źródłowe — Twój własny checkout |
CC_SPACE_ID |
Przestrzeń, do której należy worktree |
CC_SPACE_NAME |
Nazwa wyświetlana przestrzeni |
CC_REPO_NAME |
Nazwa wyświetlana repozytorium |
Na przykład skrypt konfiguracyjny, który instaluje zależności i dociąga
ignorowany przez gita plik .env repozytorium:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildZachowanie w przypadku niepowodzenia
Dział zatytułowany „Zachowanie w przypadku niepowodzenia”- Skrypt konfiguracyjny, który zakończy się kodem wyjścia różnym od zera (albo przekroczy swój 5-minutowy limit czasu), powoduje niepowodzenie przygotowania przestrzeni: przestrzeń pokazuje stan niepowodzenia z możliwością ponowienia, a końcówka danych wyjściowych uruchomienia zostaje zapisana. Ponowienie przygotowuje przestrzeń od zera, z czystego worktree, i uruchamia skrypt ponownie — pisz skrypty konfiguracyjne tak, aby ponowne uruchomienie po częściowej instalacji działało (menedżery pakietów już tak się zachowują).
- Skrypt archiwizacji działa w trybie najlepszych starań: niepowodzenie (lub jego 2-minutowy limit czasu) zostaje zapisane, ale nigdy nie blokuje usunięcia. Archiwizacja uruchamia się na ścieżkach GC, na których nie ma nikogo, kto mógłby odpowiedzieć na monit (usunięcie przestrzeni, scalenie PR-a, zaplanowane sprzątanie).
Skrypt konfiguracyjny uruchamia się wyłącznie na świeżym worktree: ponowne wysłanie agentów do ciepłej przestrzeni używa ponownie istniejącego checkoutu i nie płaci drugi raz za instalację.
Historia uruchomień
Dział zatytułowany „Historia uruchomień”Każde wykonanie jest zapisywane wraz ze swoim statusem, czasem trwania, kodem
wyjścia i ograniczoną końcówką danych wyjściowych; widać je w tym samym oknie
ustawień, pod „Ostatnie uruchomienia” (subskrypcja repos.watchScriptRuns
strumieniuje je na żywo).
Uprawnienia
Dział zatytułowany „Uprawnienia”Skrypty to powłoka, którą wykonuje serwer, więc ich pisanie jest ograniczone
do administratorów obszaru roboczego i chronione przez klasę akcji
processSpawn — tę samą siatkę guardraili, która obejmuje każdą inną operację
uruchamiającą proces.