diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index bf317bc..7242a2b 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -94,6 +94,7 @@ **Последствия:** - В SourceCraft ничего не пушим и не мержим — зеркало перезаписывает его целиком. - Триггер `pull_request` в SourceCraft не срабатывает (PR живут в Gitea) → CI бота запускается на `push` во все ветки. +- SourceCraft берёт триггеры CI из основной ветки → основная ветка `tgit` в SourceCraft — `dev` (в Gitea остаётся `main`); иначе CI включался бы только после продвижения в `main`. - Токен SourceCraft хранится в настройках зеркала Gitea → нужен отдельный токен с доступом только к `tgit`. - Issues #1–#21 перенесены из SourceCraft с теми же номерами; в SourceCraft закрыты со ссылкой. diff --git a/docs/dev/SOURCECRAFT_API.md b/docs/dev/SOURCECRAFT_API.md index d84cece..a78de55 100644 --- a/docs/dev/SOURCECRAFT_API.md +++ b/docs/dev/SOURCECRAFT_API.md @@ -61,14 +61,27 @@ curl -s -X POST -H "$H" -H "$J" "$R/milestones" -d '{"name":"M5 · …","descrip ## CI/CD ```bash -curl -s -H "$H" "$R/cicd/runs" # прогоны -curl -s -H "$H" "$R/cicd/runs/" # статус прогона -curl -s -H "$H" "$R/cicd/logs////" # лог куба +curl -s -H "$H" "$R/cicd/runs" # прогоны: {"runs": [...], "next_page_token"} +curl -s -H "$H" "$R/cicd/runs/" # прогон: status + workflows[].tasks[].cubes[] +curl -s -H "$H" "$R/cicd/logs////" # лог куба: {"logs": "...", "page_complete", "done"} + +# ручной запуск (head и config_revision — {"branch"|"tag"|"commit": ...}; по умолчанию — основная ветка) +curl -s -X POST -H "$H" -H "$J" "$R/cicd/runs" \ + -d '{"head":{"branch":"feat/x"},"config_revision":{"branch":"feat/x"},"workflows":[{"name":"check"}]}' + # секрет: value — base64 от значения curl -s -X PUT -H "$H" -H "$J" "$R/secrets/DEPLOY_HOST" -d "{\"value\":\"$(printf %s 'user@host' | base64 -w0)\"}" ``` -Исходящих webhooks нет — статус CI получаем опросом (ADR-003). +- **Триггеры `on:` читаются из `.sourcecraft/ci.yaml` основной ветки репозитория.** Пока файла там нет — push ничего + не запускает. Основная ветка `tgit` в SourceCraft — `dev` (`PATCH $R -d '{"default_branch":"dev"}'`), чтобы CI + включался мержем в `dev`, а не продвижением в `main`. +- Прогон: `slug` — числовой (`1000000`…), `status`: `created` → `processing` → `success`/`failed`; `event_type`: + `push`/`manual`/…. У кубов служебные шаги со `slug`, начинающимся на `#` (`#git-clone`, `#prepare-image-for-`). +- Если куб упал, остальные кубы задачи остаются в `created` и не запускаются. +- Код в кубе склонирован в `/sourcecraft/workspace` (`$SOURCECRAFT_WORKSPACE`) — это рабочий каталог. Переменные: + `SOURCECRAFT_COMMIT_SHA`, `SOURCECRAFT_COMMIT_REF_NAME` и др. +- Исходящих webhooks нет — статус CI получаем опросом (ADR-003). ## Метки репозитория