Ga naar inhoud

Repo-scripts

Repo-scripts zijn shellscripts die je per repository configureert (Instellingen → Repository’s → het terminalpictogram in de rij van een repo) en die de server van Control Center uitvoert tegen de worktree van een ruimte van die repo — de geïsoleerde checkout onder <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ waar agenten werken.

Er zijn twee soorten:

Script Wanneer het draait Waarvoor je het gebruikt
Installatie Direct nadat er een worktree voor een ruimte is ingericht Dependencies installeren, bestanden genereren, .env kopiëren
Archivering Vlak voordat een worktree wordt vernietigd of door garbage collection wordt opgeruimd Bronnen buiten de worktree opruimen (docker-netwerken, tunnels, externe state)

Beide scripts draaien via bash -lc (een login-shell, zodat tools die met Homebrew of nvm zijn geïnstalleerd op PATH staan), met de worktree als werkmap en de volgende omgevingsvariabelen ingesteld:

Variabele Waarde
CC_WORKSPACE_PATH De worktree (de werkmap van het script)
CC_ROOT_PATH De geregistreerde bronrepo — je eigen checkout
CC_SPACE_ID De ruimte waartoe de worktree behoort
CC_SPACE_NAME De weergavenaam van de ruimte
CC_REPO_NAME De weergavenaam van de repo

Een installatiescript dat bijvoorbeeld dependencies installeert en de gitignored .env van de repo binnenhaalt:

Terminalvenster
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Een installatiescript dat niet-nul afsluit (of de time-out van 5 minuten overschrijdt) laat het inrichten van de ruimte mislukken: de ruimte toont de mislukte status met een optie om het opnieuw te proberen, en de staart van de uitvoer van de run wordt vastgelegd. Een nieuwe poging richt een schone worktree in en draait het script opnieuw — schrijf installatiescripts zo dat een herhaling na een gedeeltelijke installatie werkt (pakketbeheerders doen dit al zo).
  • Een archiveringsscript is best-effort: een fout (of de time-out van 2 minuten) wordt vastgelegd, maar blokkeert het verwijderen nooit. Archivering draait op GC-paden waar niemand een prompt kan beantwoorden (ruimte verwijderd, PR gemerged, geplande opschoning).

Installatie draait alleen op een verse worktree: agenten opnieuw naar een warme ruimte dispatchen hergebruikt de bestaande checkout en laat je de installatie niet opnieuw betalen.

Elke uitvoering wordt vastgelegd met status, duur, exitcode en een begrensde staart van de uitvoer, zichtbaar in dezelfde instellingendialoog onder “Recente uitvoeringen” (het abonnement repos.watchScriptRuns streamt dit live).

Scripts zijn shell die de server uitvoert, dus het schrijven ervan is beperkt tot werkruimtebeheerders en wordt bewaakt door de actieklasse processSpawn — hetzelfde vangnet aan beveiligingen dat elke andere bewerking die een proces start afschermt.