diff --git a/.sourcecraft/ci.yaml b/.sourcecraft/ci.yaml new file mode 100644 index 0000000..bc3b21c --- /dev/null +++ b/.sourcecraft/ci.yaml @@ -0,0 +1,33 @@ +# CI бота. Код приходит push-зеркалом из Gitea (ADR-010): PR живут в Gitea, поэтому +# триггер pull_request здесь не сработает — проверяем каждый push в любую ветку. +# Деплой на хост (workflow deploy на push в main) — #12. +on: + push: + - workflows: [check] + filter: + branches: ["**"] + +workflows: + check: + settings: + max_cube_duration: 10m + tasks: + - name: quality + cubes: + - name: lint + image: ghcr.io/astral-sh/uv:0.8-python3.12-bookworm-slim + env: + UV_LINK_MODE: copy + script: + - uv sync --frozen + - uv run ruff check . + - uv run ruff format --check . + - uv run mypy + - name: test + needs: ["-"] + image: ghcr.io/astral-sh/uv:0.8-python3.12-bookworm-slim + env: + UV_LINK_MODE: copy + script: + - uv sync --frozen + - uv run pytest -q --cov --cov-report=term diff --git a/pyproject.toml b/pyproject.toml index 6f542b0..c271ab6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,10 @@ testpaths = ["tests"] [tool.coverage.run] source = ["app"] branch = true +omit = ["app/__main__.py"] [tool.coverage.report] show_missing = true skip_covered = true +# Ratchet: raise as code lands, never lower. Target by M4 — 70 (SPEC §5.2). +fail_under = 45