Sari la conținut

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ă)

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:

Fereastră terminal
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • 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.

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).

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.