- 2-stage Dockerfile (node:22 build Vue -> python:3.12-slim runtime); CMD runs `alembic upgrade head` then hypercorn (rule 82). - .forgejo/workflows/ci.yml on ci-python:3.14: typecheck (vue-tsc) + lint (ruff check src/) + test (uv venv + pytest, DB-free) + gated buildx push with the rule-46 tag scheme (:dev/:latest/:<sha>). No local integration lane yet. - ci-requirements.md (rule 39); docker-compose for a local app+Postgres stack. - Real README with layout, dev instructions, and the milestone arc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRgehjoz7Yv8LkUfADxACm
2.0 KiB
2.0 KiB
CI Requirements — ThoughtSync
Spec lives in
docs/process.mdin the CI-Runner repo.
Runtime image
git.fabledsword.com/bvandeusen/ci-python:3.14
Selected via container.image (not a runs-on label) on all four jobs in
.forgejo/workflows/ci.yml: typecheck (Vue/TS), lint (ruff), test (pytest),
build (docker buildx).
Image deps used
- python 3.12+ (the runtime
Dockerfiletargets python:3.12-slim; tests run on the image's 3.14 — both >=3.12, so results stay representative) - node 24 —
npm ci+vue-tscin the typecheck job, and the frontend builder stage inside the productionDockerfile. (Also required by the JS-basedactions/checkoutaction — a Node-less runner fails every job at checkout.) - ruff — lint job runs
ruff check src/with zero install overhead - uv — test job creates the venv (
uv venv /opt/venv) and installs the package with dev deps - docker CLI + buildx — build job pushes the dev/release image to the Forgejo registry
Per-job tool installs
Nothing installed at job time beyond what the image provides — all four jobs run
entirely on ci-python:3.14.
Notes
- No
actions/cache. Deliberately omitted for npm/uv: it's a GitHub-fetched JS action and on a cold runner concurrent jobs race fetching it. We lean on the pinnedci-pythonimage's pre-installed toolchain instead;npm ci/uv pip installcold cost is a non-blocker. - Build gates on
typecheck+lintonly. Thetestjob runs in parallel for visibility but does not block the dev image push. DB-backed / integration tests run against the dev image manually — ThoughtSync's unit tests are DB-free (no Postgres service lane in CI yet). devpush ->:dev+:<sha>;v*tag ->:latest+:<version>+:<sha>(family rule 46).- The production runtime
Dockerfiletracks python:3.12 so test results stay representative of the deployed image.