Перейти до вмісту

Скрипти репозиторію

Скрипти репозиторію — це шел-скрипти, які ви налаштовуєте для кожного репозиторію (Налаштування → Репозиторії → значок термінала в рядку репозиторію) і які сервер 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 install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Скрипт налаштування, який завершується з ненульовим кодом (або перевищує 5-хвилинний тайм-аут), зриває підготовку простору: простір показує невдалий стан із можливістю повторити, а хвіст виводу запуску записується. Повторна спроба підготовляє чистий worktree і запускає скрипт знову — пишіть скрипти налаштування так, щоб повторний запуск після часткового встановлення працював (менеджери пакетів уже поводяться саме так).
  • Скрипт архівування виконується за принципом найкращих зусиль: помилку (або його 2-хвилинний тайм-аут) записують, але вона ніколи не блокує видалення. Архівування виконується на шляхах збирання сміття, де нікому відповісти на запит (простір видалено, PR змерджено, заплановане очищення).

Налаштування виконується лише на свіжому worktree: повторна відправка агентів у теплий простір використовує наявний чекаут і не платить за встановлення вдруге.

Кожне виконання записують зі статусом, тривалістю, кодом виходу та обмеженим хвостом виводу; його видно в тому самому діалозі налаштувань у розділі «Останні запуски» (підписка repos.watchScriptRuns передає його наживо).

Скрипти — це шел, який виконує сервер, тож писати їх дозволено лише адміністраторам робочого простору, і це захищено класом дій processSpawn — тією самою сіткою обмежень, що стримує будь-яку іншу операцію породження процесів.