Commit graph

4 commits

Author SHA1 Message Date
f17ca00bbb ci: add concurrency-cancel on push to the same PR / branch
Some checks failed
tests / test (pull_request) Successful in 1m9s
tests / test (push) Failing after 11m18s
Forgejo runner runs with `capacity: 1` (one job at a time across every
repo it serves — mammon, infoxtractor, etc.). Without a concurrency
block, rapid-fire pushes to the same PR branch all queue behind any
task already running, burning the runner for 30+ min on stale commits.

`concurrency: { group: ci-$ref, cancel-in-progress: true }` tells
Forgejo to cancel any still-queued or still-running CI on this ref as
soon as a newer commit shows up. Applies to both push and
pull_request events.

(Previous PR bodies noted a "trigger bug" where I saw no CI response
on a push — that was actually just the capacity=1 queue with no visible
signal; the CI always fired, just minutes later. Runner capacity bump
lives in infrastructure, not this repo.)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 19:51:24 +02:00
097ebf5db7 ci: run on every push (not just main) so feat branches also get CI
Some checks are pending
tests / test (push) Waiting to run
tests / test (pull_request) Successful in 57s
Matches mammon's pattern more closely and makes PR CI reliable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 10:40:44 +02:00
a71f023ed9 fix(ci): match mammon's Forgejo Actions pattern (no explicit container image)
Some checks failed
tests / test (pull_request) Failing after 59s
The previous python:3.12-slim container lacked node, which actions/checkout@v4
requires. The Forgejo runner's default image includes node + apt + curl, so
we can bootstrap python + uv the same way mammon does.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 10:37:56 +02:00
57cdfd73fb feat(scaffold): project skeleton with uv + pytest + forgejo CI
Some checks failed
CI / test (pull_request) Failing after 4s
- pyproject.toml: runtime deps (FastAPI, SQLAlchemy async, Pydantic, PyMuPDF,
  python-magic, Pillow, dateutil), dev group (pytest, pytest-asyncio,
  pytest-httpx, ruff, mypy), optional `ocr` extra that pulls surya-ocr + torch
  (kept optional so CI without GPU can run the base package).
- pytest config: asyncio_mode=auto; `live` marker for tests that need a real
  Ollama/Surya (gated on IX_TEST_OLLAMA=1).
- Single smoke test (tests/unit/test_scaffolding.py) verifies the package
  imports and exposes __version__ — keeps CI green until the real test
  modules land in later chunks.
- .forgejo/workflows/ci.yml: runs ruff + pytest against a Postgres 16 service
  container. Explicit IX_TEST_MODE=fake keeps real-client tests out.
- .env.example: every IX_* var from spec §9 with on-prem-friendly defaults.
- uv.lock committed for reproducible builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 10:36:43 +02:00