Scripturi de repo
Scripturile de repo sunt scripturi shell pe care le configurezi per depozit
(Setări → Depozite → pictograma de terminal din rândul unui depozit) și pe care
serverul Control Center le rulează pe worktree-ul unui spațiu al acelui
depozit — copia de lucru izolată din
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/, unde lucrează agenții.
Există două tipuri:
| Script | Când rulează | Pentru ce îl folosești |
|---|---|---|
| Setup | Imediat după ce un worktree este provisionat pentru un spațiu | Instalarea dependențelor, generarea fișierelor, copierea .env |
| Arhivare | Chiar înainte ca un worktree să fie distrus sau colectat de gunoi | Curățarea resurselor din afara worktree-ului (rețele Docker, tuneluri, stare externă) |
Unde rulează scripturile
Secțiune intitulată „Unde rulează scripturile”Ambele scripturi rulează prin bash -lc (un shell de login, astfel încât
instrumentele instalate prin Homebrew/nvm să fie pe PATH), cu worktree-ul ca
director de lucru, și cu aceste variabile de mediu setate:
| Variabilă | Valoare |
|---|---|
CC_WORKSPACE_PATH |
Worktree-ul (directorul de lucru al scriptului) |
CC_ROOT_PATH |
Depozitul sursă înregistrat — propriul tău checkout |
CC_SPACE_ID |
Spațiul căruia îi aparține worktree-ul |
CC_SPACE_NAME |
Numele afișat al spațiului |
CC_REPO_NAME |
Numele afișat al depozitului |
De exemplu, un script de setup care instalează dependențele și aduce .env-ul
ignorat de git al depozitului:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildComportamentul la eșec
Secțiune intitulată „Comportamentul la eșec”- Un script de setup care se încheie cu un cod de ieșire diferit de zero (sau care depășește timeout-ul său de 5 minute) face ca provisionarea spațiului să eșueze: spațiul afișează starea de eșec însoțită de o reîncercare, iar finalul ieșirii rulării este înregistrat. O reîncercare provisionează dintr-un worktree curat și rulează din nou scriptul — scrie scripturile de setup astfel încât o rerulare după o instalare parțială să funcționeze (managerii de pachete se comportă deja astfel).
- Un script de arhivare se execută fără garanții de succes: un eșec (sau timeout-ul său de 2 minute) este înregistrat, dar nu blochează niciodată ștergerea. Arhivarea rulează pe căi de GC pe care nu există nimeni care să răspundă la o solicitare (spațiu șters, PR fuzionat, curățare programată).
Setup-ul rulează doar pe un worktree proaspăt: retrimiterea agenților într-un spațiu deja încălzit refolosește checkout-ul existent și nu plătește din nou instalarea.
Istoricul rulărilor
Secțiune intitulată „Istoricul rulărilor”Fiecare execuție este înregistrată cu starea, durata, codul de ieșire și un
final limitat al ieșirii, vizibile în același dialog de setări, la „Rulări
recente” (abonamentul repos.watchScriptRuns le transmite în direct).
Permisiuni
Secțiune intitulată „Permisiuni”Scripturile sunt shell pe care serverul îl execută, așa că scrierea lor este
restricționată la administratorii spațiului de lucru și protejată de clasa de
acțiune processSpawn — aceeași rețea de guardrail-uri care filtrează orice
altă operațiune care pornește un proces.