56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
# P1-8 — Gitea Actions CI workflow
|
|
|
|
Branch: `feat/p1-8-gitea-ci`
|
|
Worktree: `.worktrees/feat-p1-8-gitea-ci`
|
|
|
|
## Why
|
|
|
|
The repo had one Gitea Actions workflow — `build-push.yaml` — that
|
|
builds and pushes a Docker image on push to `main`. There's no test
|
|
gate. PRs can land broken code because nothing runs typecheck, lint,
|
|
Vitest, or Playwright before merge.
|
|
|
|
P1-8 from the readiness audit asked for a CI pipeline that runs the
|
|
test stack on every PR. This PR adds one.
|
|
|
|
## Changes
|
|
|
|
### `.gitea/workflows/ci.yml` (new)
|
|
|
|
Three jobs:
|
|
|
|
1. **`server-checks`** — installs `server/`, runs `typecheck`, `lint`,
|
|
`vitest`. Pre-seeds the DB before vitest so the existing test
|
|
suite (which talks to the real DB) has demo data.
|
|
2. **`client-checks`** — installs `client/`, runs `typecheck`, `lint`,
|
|
`vitest`. No DB needed.
|
|
3. **`e2e`** — depends on both, boots server + client, runs Playwright
|
|
E2E. `continue-on-error: true` for now because the existing
|
|
Playwright suite has one pre-existing failure on dev
|
|
(`paynow-webhook.test.js` "paid_amount undefined" — independent of
|
|
these gates). The flag can come off once that baseline failure is
|
|
fixed.
|
|
|
|
Triggers on:
|
|
|
|
- push to `dev`
|
|
- pull_request to `main` or `dev`
|
|
|
|
## Notes / gaps
|
|
|
|
- The `e2e` job is the only real consumer of secrets; for now it
|
|
uses a CI-only `JWT_SECRET` and `ALLOWED_ORIGINS` since the test
|
|
flows don't depend on real client/auth state beyond the demo
|
|
accounts. Production secrets live elsewhere.
|
|
- I've intentionally NOT called the docker `build-push.yaml`. The two
|
|
workflows are independent: `ci` runs on PR, `build-push` runs on
|
|
push to `main`. Promoting dev → main still requires manual approval.
|
|
|
|
## Verification
|
|
|
|
- Workflow file passes a YAML lint (no .yamllint in this repo, but
|
|
the structure mirrors the existing `build-push.yaml`).
|
|
- All bash steps use `working-directory` consistently — the previous
|
|
build-push workflow assumed `cd` semantics that don't exist in
|
|
Gitea Actions jobs.
|