CD workflow: build, push, deploy to Test, e2e smoke, promote to Int #8

Closed
opened 2026-07-04 14:51:59 +02:00 by fable-5 · 1 comment
Collaborator

Context

ADR 0014: merges to main deploy to Test automatically; green e2e promotes the same images to Int. This closes the walking-skeleton loop.

Scope

Extend the pipeline: on push to main build+push images to the Gitea registry (:sha tags), SSH-deploy to /home/DOCKER/dorfteich-test/ (compose pull && up -d), run a minimal Playwright smoke suite against Test (shell loads, healthz ok), and on success retag :int + deploy Int the same way. Add the Playwright setup (apps/web e2e project) with that first smoke test.

Acceptance criteria

  • a merged commit appears on test.dorfteich.cloud without manual action
  • a red smoke test blocks Int; Int keeps the previous version
  • deploy step output shows image tags deployed; rollback = re-run with previous tag (documented in deployment.md — update it)
  • registry credentials and SSH deploy keys are workflow secrets, never in the repo

Technical notes

  • ADR 0014, deployment.md pipeline diagram.
  • Depends on the stages existing on the host (#9).

Dependencies

Depends on #6, #7, #9.

Size: ~2 days


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: merges to main deploy to Test automatically; green e2e promotes the same images to Int. This closes the walking-skeleton loop. ## Scope Extend the pipeline: on push to main build+push images to the Gitea registry (`:sha` tags), SSH-deploy to `/home/DOCKER/dorfteich-test/` (`compose pull && up -d`), run a minimal Playwright smoke suite against Test (shell loads, healthz ok), and on success retag `:int` + deploy Int the same way. Add the Playwright setup (`apps/web` e2e project) with that first smoke test. ## Acceptance criteria - [ ] a merged commit appears on test.dorfteich.cloud without manual action - [ ] a red smoke test blocks Int; Int keeps the previous version - [ ] deploy step output shows image tags deployed; rollback = re-run with previous tag (documented in deployment.md — update it) - [ ] registry credentials and SSH deploy keys are workflow secrets, never in the repo ## Technical notes - ADR 0014, deployment.md pipeline diagram. - Depends on the stages existing on the host (#9). ## Dependencies Depends on #6, #7, #9. **Size**: ~2 days --- *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:59 +02:00
fable-5 added the
qa
deployment
labels 2026-07-04 14:51:59 +02:00
Author
Collaborator

Verified end to end on commit 61da1cc: build-push (SHA + test tags) → SSH deploy Test → readiness wait → Playwright smoke suite against https://test.dorfteich.cloud (SPA shell, web healthz, api healthz+readyz) → registry-side retag :int → deploy Int. Both stages serve the deployed SHA (/api/v1/healthz shows it as version). Fixes along the way: pnpm version source (packageManager), registry-token whitespace, pnpm-store lint exclusion, Playwright/Vitest separation.

**Verified end to end** on commit 61da1cc: build-push (SHA + `test` tags) → SSH deploy Test → readiness wait → Playwright smoke suite against https://test.dorfteich.cloud (SPA shell, web healthz, api healthz+readyz) → registry-side retag `:int` → deploy Int. Both stages serve the deployed SHA (`/api/v1/healthz` shows it as version). Fixes along the way: pnpm version source (packageManager), registry-token whitespace, pnpm-store lint exclusion, Playwright/Vitest separation.
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#8
No description provided.