Gå til innholdet

Reposkript

Reposkript er shellskript du konfigurerer per repo (Innstillinger → Arkiv → terminalikonet på raden til et repo) som Control Centers server kjører mot worktreet til et område for det repoet — den isolerte utsjekkingen under <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ der agentene jobber.

Det finnes to typer:

Skript Når det kjøres Bruk det til
Oppsett Rett etter at et worktree er klargjort for et område Installere avhengigheter, generere filer, kopiere .env
Arkivering Like før et worktree ødelegges eller søppelsamles (GC) Rydde opp i ressurser utenfor worktreet (docker-nettverk, tunneler, ekstern tilstand)

Begge skriptene kjører via bash -lc (et innloggingsskall, så verktøy installert med Homebrew/nvm ligger på PATH) med worktreet som arbeidskatalog, og med disse miljøvariablene satt:

Variabel Verdi
CC_WORKSPACE_PATH Worktreet (arbeidskatalogen til skriptet)
CC_ROOT_PATH Det registrerte kilde-repoet — din egen utsjekking
CC_SPACE_ID Området worktreet tilhører
CC_SPACE_NAME Visningsnavnet til området
CC_REPO_NAME Visningsnavnet til repoet

For eksempel et oppsettskript som installerer avhengigheter og henter inn repoets gitignorerte .env:

Terminalvindu
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Et oppsettskript som avsluttes med en annen returkode enn null (eller overskrider tidsavbruddet på 5 minutter) gjør at klargjøringen av området mislykkes: området viser den mislykkede tilstanden med et nytt forsøk, og halen av kjøringens utdata registreres. Et nytt forsøk klargjør fra et rent worktree og kjører skriptet på nytt — skriv oppsettskript slik at en ny kjøring etter en delvis installasjon fungerer (pakkebehandlere oppfører seg allerede slik).
  • Et arkiveringsskript gjør så godt det kan: en feil (eller tidsavbruddet på 2 minutter) registreres, men blokkerer aldri sletting. Arkivering kjører på GC-baner der det ikke finnes noen til å svare på en forespørsel (område slettet, PR slått sammen, planlagt opprydding).

Oppsett kjører bare på et ferskt worktree: å sende agenter på nytt inn i et varmt område gjenbruker den eksisterende utsjekkingen og betaler ikke installasjonen på nytt.

Hver kjøring registreres med status, varighet, avslutningskode og en begrenset hale av utdataene, synlig i den samme innstillingsdialogen under «Nylige kjøringer» (repos.watchScriptRuns-abonnementet strømmer den direkte).

Skript er shell som serveren kjører, så det å skrive dem er begrenset til arbeidsområdeadministratorer og beskyttet av handlingsklassen processSpawn — det samme tillatelsesnettet som regulerer alle andre operasjoner som starter prosesser.