Скрипти репозиторію
Скрипти репозиторію — це шел-скрипти, які ви налаштовуєте для кожного
репозиторію (Налаштування → Репозиторії → значок термінала в рядку
репозиторію) і які сервер Control Center виконує щодо worktree простору
цього репозиторію — ізольованого чекауту за шляхом
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/, де працюють агенти.
Буває два види:
| Скрипт | Коли виконується | Для чого |
|---|---|---|
| Налаштування | Одразу після створення worktree для простору | Встановлення залежностей, генерація файлів, копіювання .env |
| Архівування | Безпосередньо перед знищенням worktree або прибиранням його збирачем сміття | Прибирання ресурсів поза worktree (мережі docker, тунелі, зовнішній стан) |
Де виконуються скрипти
Розділ із назвою «Де виконуються скрипти»Обидва скрипти виконуються через bash -lc (логін-шел, тож інструменти,
встановлені через Homebrew/nvm, є в PATH) з worktree як робочою
директорією і такими заданими змінними середовища:
| Змінна | Значення |
|---|---|
CC_WORKSPACE_PATH |
worktree (робоча директорія скрипту) |
CC_ROOT_PATH |
Зареєстрований вихідний репозиторій — ваш власний чекаут |
CC_SPACE_ID |
Простір, якому належить worktree |
CC_SPACE_NAME |
Відображувана назва простору |
CC_REPO_NAME |
Відображувана назва репозиторію |
Наприклад, скрипт налаштування, який встановлює залежності й підтягує
ігнорований git файл .env репозиторію:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildПоведінка в разі помилки
Розділ із назвою «Поведінка в разі помилки»- Скрипт налаштування, який завершується з ненульовим кодом (або перевищує 5-хвилинний тайм-аут), зриває підготовку простору: простір показує невдалий стан із можливістю повторити, а хвіст виводу запуску записується. Повторна спроба підготовляє чистий worktree і запускає скрипт знову — пишіть скрипти налаштування так, щоб повторний запуск після часткового встановлення працював (менеджери пакетів уже поводяться саме так).
- Скрипт архівування виконується за принципом найкращих зусиль: помилку (або його 2-хвилинний тайм-аут) записують, але вона ніколи не блокує видалення. Архівування виконується на шляхах збирання сміття, де нікому відповісти на запит (простір видалено, PR змерджено, заплановане очищення).
Налаштування виконується лише на свіжому worktree: повторна відправка агентів у теплий простір використовує наявний чекаут і не платить за встановлення вдруге.
Історія запусків
Розділ із назвою «Історія запусків»Кожне виконання записують зі статусом, тривалістю, кодом виходу та обмеженим
хвостом виводу; його видно в тому самому діалозі налаштувань у розділі
«Останні запуски» (підписка repos.watchScriptRuns передає його наживо).
Дозволи
Розділ із назвою «Дозволи»Скрипти — це шел, який виконує сервер, тож писати їх дозволено лише
адміністраторам робочого простору, і це захищено класом дій processSpawn —
тією самою сіткою обмежень, що стримує будь-яку іншу операцію породження
процесів.