Repószkriptek
A repószkriptek olyan shell-szkriptek, amelyeket repónként állít be (Beállítások
→ Tárolók → a repó sorában lévő terminálikon), és amelyeket a Control Center
szervere az adott repó egy térhez tartozó worktree-jén futtat — azon az
elszigetelt checkouton, amely a
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ alatt található, és
ahol az ügynökök dolgoznak.
Két fajtájuk van:
| Szkript | Mikor fut | Mire használja |
|---|---|---|
| Telepítés | Közvetlenül azután, hogy egy térhez worktree-t provisionálnak | Függőségek telepítése, fájlok generálása, .env másolása |
| Archiválás | Nem sokkal azelőtt, hogy egy worktree megsemmisül vagy szemétgyűjtésre kerül | A worktree-n kívüli erőforrások (docker-hálózatok, alagutak, külső állapot) takarítása |
Hol futnak a szkriptek
Szekció neve “Hol futnak a szkriptek”Mindkét szkript bash -lc útján fut (bejelentkezési shell, így a Homebrew-val
vagy nvm-mel telepített eszközök is rajta vannak a PATH-on), a worktree-t
használva munkakönyvtárként, és a következő környezeti változókkal:
| Változó | Érték |
|---|---|
CC_WORKSPACE_PATH |
A worktree (a szkript munkakönyvtára) |
CC_ROOT_PATH |
A regisztrált forrásrepó — a saját checkoutja |
CC_SPACE_ID |
A tér, amelyhez a worktree tartozik |
CC_SPACE_NAME |
A tér megjelenített neve |
CC_REPO_NAME |
A repó megjelenített neve |
Például egy telepítőszkript, amely telepíti a függőségeket és behozza a repó
gitignore-olt .env fájlját:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildViselkedés hiba esetén
Szekció neve “Viselkedés hiba esetén”- Egy nem nulla kilépési kóddal záruló (vagy az 5 perces időkorlátját túllépő) telepítőszkript sikertelenné teszi a tér provisionálását: a tér a sikertelen állapotot egy újrapróbálkozási lehetőséggel együtt mutatja, és a futtatás kimenetének vége rögzítésre kerül. Az újrapróbálkozás tiszta worktree-ből provisionál, és újra lefuttatja a szkriptet — a telepítőszkripteket úgy írja meg, hogy egy részleges telepítés utáni ismételt futás is működjön (a csomagkezelők már így viselkednek).
- Az archiválószkript a lehetőségekhez mérten fut: a hibája (vagy a 2 perces időkorlát túllépése) rögzítésre kerül, de soha nem blokkolja a törlést. Az archiválás olyan GC-utakon fut, ahol nincs, aki válaszoljon egy kérdésre (tér törölve, PR összefésülve, ütemezett takarítás).
A telepítés csak friss worktree-n fut: ha ügynököket küld újra egy meleg térbe, az a meglévő checkoutot használja, és nem fizeti meg újra a telepítést.
Futtatási előzmények
Szekció neve “Futtatási előzmények”Minden végrehajtás rögzítésre kerül az állapotával, időtartamával, kilépési
kódjával és a kimenet egy korlátos végével; ez ugyanabban a beállítási
párbeszédablakban látható a „Legutóbbi futtatások” alatt (a
repos.watchScriptRuns feliratkozás élőben streameli).
Jogosultságok
Szekció neve “Jogosultságok”A szkriptek olyan shell, amelyet a szerver hajt végre, ezért írásuk
munkaterület-adminisztrátorokra korlátozódik, és a processSpawn
műveletosztály őrzi — ugyanaz a korlátháló, amely minden más folyamatindító
műveletet is szabályoz.