- 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
48 lines
2.0 KiB
Markdown
48 lines
2.0 KiB
Markdown
# CI Requirements — ThoughtSync
|
|
|
|
> Spec lives in [`docs/process.md`](https://git.fabledsword.com/bvandeusen/CI-runner/src/branch/main/docs/process.md)
|
|
> in 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 `Dockerfile` targets python:3.12-slim; tests run on
|
|
the image's 3.14 — both >=3.12, so results stay representative)
|
|
- node 24 — `npm ci` + `vue-tsc` in the typecheck job, and the frontend builder
|
|
stage inside the production `Dockerfile`. (Also required by the JS-based
|
|
`actions/checkout` action — 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
|
|
pinned `ci-python` image's pre-installed toolchain instead; `npm ci` / `uv pip
|
|
install` cold cost is a non-blocker.
|
|
- Build gates on `typecheck` + `lint` only. The `test` job 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).
|
|
- `dev` push -> `:dev` + `:<sha>`; `v*` tag -> `:latest` + `:<version>` + `:<sha>`
|
|
(family rule 46).
|
|
- The production runtime `Dockerfile` tracks python:3.12 so test results stay
|
|
representative of the deployed image.
|