CI workflow: lint, typecheck, unit tests, build on every PR #7

Closed
opened 2026-07-04 14:51:58 +02:00 by fable-5 · 2 comments
Collaborator

Context

ADR 0014: PRs must be objectively green before merge; this is the first pipeline stage.

Scope

Create the Gitea Actions workflow .gitea/workflows/ci.yml running on pull_request and push to main: pnpm install (cached), lint, typecheck, test, i18n:check, build, and Docker image builds (no push on PRs). Configure the repo (documented for the repo owner) to require the workflow for merging.

Acceptance criteria

  • a PR with a failing unit test shows a red check and cannot be merged
  • a green PR shows all steps passing in under ~10 minutes (use caching)
  • workflow file is commented so contributors understand each job

Technical notes

  • ADR 0014. Runner: act_runner on LEISINGER with Docker — coordinate its availability with the repo owner (a note in the issue is enough; the runner installation itself is #9).

Dependencies

Depends on #1, #5, #6.

Size: ~1 day


Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add de and en), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.

## Context ADR 0014: PRs must be objectively green before merge; this is the first pipeline stage. ## Scope Create the Gitea Actions workflow `.gitea/workflows/ci.yml` running on pull_request and push to main: pnpm install (cached), `lint`, `typecheck`, `test`, `i18n:check`, `build`, and Docker image builds (no push on PRs). Configure the repo (documented for the repo owner) to require the workflow for merging. ## Acceptance criteria - [ ] a PR with a failing unit test shows a red check and cannot be merged - [ ] a green PR shows all steps passing in under ~10 minutes (use caching) - [ ] workflow file is commented so contributors understand each job ## Technical notes - ADR 0014. Runner: act_runner on LEISINGER with Docker — coordinate its availability with the repo owner (a note in the issue is enough; the runner installation itself is #9). ## Dependencies Depends on #1, #5, #6. **Size**: ~1 day --- *Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add `de` **and** `en`), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.*
fable-5 added this to the M0 — Walking skeleton milestone 2026-07-04 14:51:58 +02:00
fable-5 added the
deployment
label 2026-07-04 14:51:58 +02:00
Author
Collaborator

Implementation landed in 9aa7b14 (.gitea/workflows/ci.yml): pnpm install with cache, workspace build, lint, typecheck, tests, i18n key parity, and build-only docker images for both Dockerfiles.

Still open: live verification of the red/green PR gate — requires the act_runner from #9 to be registered. Once the runner is online: open a throwaway PR with a failing test, confirm the red check blocks merging, then fix and confirm green.

Implementation landed in 9aa7b14 (`.gitea/workflows/ci.yml`): pnpm install with cache, workspace build, lint, typecheck, tests, i18n key parity, and build-only docker images for both Dockerfiles. **Still open:** live verification of the red/green PR gate — requires the act_runner from #9 to be registered. Once the runner is online: open a throwaway PR with a failing test, confirm the red check blocks merging, then fix and confirm green.
Author
Collaborator

Verified. Push pipeline runs green on main (commit 61da1cc: all six statuses success). Red-gate proof: PR #97 with a deliberately broken test went red within 40s; branch protection on main now requires the two CI contexts for PR merges (direct pushes whitelisted for stwaidele and fable-5 per the solo+agent workflow). The temporary PR was closed unmerged and its branch deleted.

**Verified.** Push pipeline runs green on main (commit 61da1cc: all six statuses success). Red-gate proof: PR #97 with a deliberately broken test went red within 40s; branch protection on `main` now requires the two CI contexts for PR merges (direct pushes whitelisted for stwaidele and fable-5 per the solo+agent workflow). The temporary PR was closed unmerged and its branch deleted.
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#7
No description provided.