ci: проверки репозитория бота в SourceCraft CI #6

Closed
opened 2026-10-12 19:32:55 +03:00 by Eleboba · 0 comments
Owner

Описание

CI для tgit по ARCHITECTURE §5.1: гейт качества на каждый PR и push в dev.

Желаемый результат

  • .sourcecraft/ci.yaml: workflow check на push во все ветки (код приходит зеркалом из Gitea, PR живут в Gitea — pull_request-триггер SourceCraft не сработает, ADR-010).
  • Шаги: uv sync --frozen → ruff check → ruff format --check → mypy app → pytest --cov=app --cov-fail-under=70.
  • Упавший CI виден в PR.

Подзадачи

  • Выяснить образ куба с uv (или установка uv в python:3.12-slim)
  • .sourcecraft/ci.yaml
  • Порог покрытия: стартуем с 0, поднимаем до 70 к M4 (переменная в pyproject.toml)
  • Дописать в docs/dev/SOURCECRAFT_API.md эндпоинты /cicd/runs

Анализ

Затрагиваемые файлы

Файл Что меняется
.sourcecraft/ci.yaml новый
docs/dev/SOURCECRAFT_API.md раздел CI

Ограничения и риски

Формат ci.yaml — справочник; старый .src.ci.yaml не использовать. max_cube_duration ≤ 10m.

Как проверить

Запушить в Gitea ветку с намеренной ошибкой ruff → зеркало → CI в SourceCraft красный; исправить → зелёный.


Лог выполнения

Перенесено из SourceCraft: https://sourcecraft.dev/rogachevegorushka/tgit/issues/6

2026-10-13

  • .sourcecraft/ci.yaml: workflow check на любой push, кубы lint (ruff check + format --check + mypy) и test (pytest + coverage) на образе ghcr.io/astral-sh/uv:0.8-python3.12-bookworm-slim. Порог покрытия — храповик fail_under = 45 в pyproject.toml (сейчас 52 %, цель 70 % к M4).
  • Ручной прогон 1000000 — ✅ за 32 с, pytest реально отработал (лог куба). Проба с ошибкой ruff (1000001, временная ветка удалена) — ❌ на lint, в логе E402/F401.
  • Грабли: push из зеркала CI не запускал. Причина — SourceCraft читает триггеры on: из .sourcecraft/ci.yaml основной ветки, а в main файла нет. Основная ветка tgit в SourceCraft переключена на dev через API (default_branch). Автозапуск проверяется после мержа этого PR в dev.
  • В шпаргалку: формат прогонов/логов, ручной запуск, правило про основную ветку; ADR-010 дополнен.
## Описание CI для `tgit` по [ARCHITECTURE §5.1](docs/ARCHITECTURE.md): гейт качества на каждый PR и push в `dev`. ## Желаемый результат - `.sourcecraft/ci.yaml`: workflow `check` на `push` во все ветки (код приходит зеркалом из Gitea, PR живут в Gitea — `pull_request`-триггер SourceCraft не сработает, ADR-010). - Шаги: `uv sync --frozen` → `ruff check` → `ruff format --check` → `mypy app` → `pytest --cov=app --cov-fail-under=70`. - Упавший CI виден в PR. ## Подзадачи - [x] Выяснить образ куба с uv (или установка uv в `python:3.12-slim`) - [x] `.sourcecraft/ci.yaml` - [x] Порог покрытия: стартуем с 0, поднимаем до 70 к M4 (переменная в `pyproject.toml`) - [x] Дописать в `docs/dev/SOURCECRAFT_API.md` эндпоинты `/cicd/runs` ## Анализ ### Затрагиваемые файлы | Файл | Что меняется | |------|--------------| | `.sourcecraft/ci.yaml` | новый | | `docs/dev/SOURCECRAFT_API.md` | раздел CI | ### Ограничения и риски Формат ci.yaml — [справочник](https://sourcecraft.dev/portal/docs/en/sourcecraft/ci-cd-ref/); старый `.src.ci.yaml` не использовать. `max_cube_duration` ≤ 10m. ## Как проверить Запушить в Gitea ветку с намеренной ошибкой ruff → зеркало → CI в SourceCraft красный; исправить → зелёный. --- ## Лог выполнения > Перенесено из SourceCraft: https://sourcecraft.dev/rogachevegorushka/tgit/issues/6 ### 2026-10-13 - `.sourcecraft/ci.yaml`: workflow `check` на любой push, кубы `lint` (ruff check + format --check + mypy) и `test` (pytest + coverage) на образе `ghcr.io/astral-sh/uv:0.8-python3.12-bookworm-slim`. Порог покрытия — храповик `fail_under = 45` в `pyproject.toml` (сейчас 52 %, цель 70 % к M4). - Ручной прогон `1000000` — ✅ за 32 с, pytest реально отработал (лог куба). Проба с ошибкой ruff (`1000001`, временная ветка удалена) — ❌ на `lint`, в логе E402/F401. - **Грабли:** push из зеркала CI не запускал. Причина — SourceCraft читает триггеры `on:` из `.sourcecraft/ci.yaml` **основной ветки**, а в `main` файла нет. Основная ветка `tgit` в SourceCraft переключена на `dev` через API (`default_branch`). Автозапуск проверяется после мержа этого PR в `dev`. - В шпаргалку: формат прогонов/логов, ручной запуск, правило про основную ветку; ADR-010 дополнен.
Eleboba added this to the M1 · MVP: загрузка → коммит → CI milestone 2026-10-12 19:32:55 +03:00
Eleboba added the cifeaturesize/0.5 labels 2026-10-12 19:32:55 +03:00
Eleboba self-assigned this 2026-10-12 19:32:55 +03:00
Eleboba added a new dependency 2026-10-12 19:40:59 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: HSE/tgit#6