CI: Gitea Actions pipeline (build → unit → e2e) + pull-request workflow #9

Merged
kamilkrzywda merged 17 commits from ci/pr-workflow into master 2026-09-19 09:59:49 +02:00
Owner

What changes

New CI pipeline — .gitea/workflows/ci.yml (runs on the dind runner):

  • Triggers: pull_request → master and push to master
  • Single job with a docker:dind service; steps: checkout → resolve dind endpoint (tcp://localhost:2375, fallback tcp://docker:2375) → setup-node 22 + bun 1.4.2 (pinned, matches Dockerfile) → bun install --frozen-lockfile → build (npm run build) → unit tests (npx vitest run) → e2e (Playwright with local chromium, PW_REMOTE_BROWSER=0)
  • E2E runs against an isolated stack inside dind via new docker-compose.ci.yml (no Traefik/dev_net; app on port 3000 of the dind container, fresh named volume per run). Deployed through the playwright webServer block with E2E_DEPLOY_CMD; readiness checked against E2E_BASE_URL.
  • CI never deploys to or modifies production (https://flight.dev.kkhost.pl).

Playwright config — optional env overrides, defaults preserve the existing local flow:

  • E2E_BASE_URL (app under test), E2E_DEPLOY_CMD (webServer deploy command), PW_REMOTE_BROWSER=0 (local browsers instead of the shared remote server at 192.168.1.4:3000), e2e/state.spec.ts reads E2E_COMPOSE_ARGS for its mid-run container restart
  • @playwright/test pinned to 1.63.0 in devDependencies (must match the shared remote browser server image tag)

AGENTS.md — switched to a pull-request workflow:

  • Every change = feature branch off master → commits with CHANGELOG entry + version bump → PR to master → CI green required → merge → tag on master → manual deploy (docker compose up -d --build on the host) updates production
  • No direct pushes to master; CI never deploys to production

Version

v0.13.0 (process/infra change — no app code changes)

Verification

  • Local: unit tests 234/234 passed, tsc --noEmit clean, npx playwright test --list parses the new config (30 tests) without triggering a deploy
  • CI: this PR's pipeline run is the live verification of build → unit → e2e on dind

After merge

Tag v0.13.0 on master, then manual deploy to production if desired (no app behavior changes in this release).

## What changes **New CI pipeline — `.gitea/workflows/ci.yml`** (runs on the dind runner): - Triggers: `pull_request` → master and `push` to master - Single job with a `docker:dind` service; steps: checkout → resolve dind endpoint (`tcp://localhost:2375`, fallback `tcp://docker:2375`) → setup-node 22 + bun 1.4.2 (pinned, matches Dockerfile) → `bun install --frozen-lockfile` → **build** (`npm run build`) → **unit tests** (`npx vitest run`) → **e2e** (Playwright with local chromium, `PW_REMOTE_BROWSER=0`) - E2E runs against an **isolated stack inside dind** via new `docker-compose.ci.yml` (no Traefik/dev_net; app on port 3000 of the dind container, fresh named volume per run). Deployed through the playwright webServer block with `E2E_DEPLOY_CMD`; readiness checked against `E2E_BASE_URL`. - **CI never deploys to or modifies production** (`https://flight.dev.kkhost.pl`). **Playwright config** — optional env overrides, defaults preserve the existing local flow: - `E2E_BASE_URL` (app under test), `E2E_DEPLOY_CMD` (webServer deploy command), `PW_REMOTE_BROWSER=0` (local browsers instead of the shared remote server at 192.168.1.4:3000), `e2e/state.spec.ts` reads `E2E_COMPOSE_ARGS` for its mid-run container restart - `@playwright/test` pinned to `1.63.0` in devDependencies (must match the shared remote browser server image tag) **AGENTS.md** — switched to a pull-request workflow: - Every change = feature branch off master → commits with CHANGELOG entry + version bump → PR to master → CI green required → merge → tag on master → **manual deploy** (`docker compose up -d --build` on the host) updates production - No direct pushes to master; CI never deploys to production ## Version v0.13.0 (process/infra change — no app code changes) ## Verification - Local: unit tests 234/234 passed, `tsc --noEmit` clean, `npx playwright test --list` parses the new config (30 tests) without triggering a deploy - CI: this PR's pipeline run is the live verification of build → unit → e2e on dind ## After merge Tag `v0.13.0` on master, then manual deploy to production if desired (no app behavior changes in this release).
kamilkrzywda added 17 commits 2026-09-19 09:55:44 +02:00
ci: self-hosted map assets for e2e — download + cache pack, mount ./public
CI / build + unit + e2e (pull_request) Successful in 18m27s
97f82dd464
kamilkrzywda force-pushed ci/pr-workflow from 8ca5412de3 to 97f82dd464 2026-09-19 09:55:44 +02:00 Compare
kamilkrzywda merged commit eb2e7a7430 into master 2026-09-19 09:59:49 +02:00
kamilkrzywda deleted branch ci/pr-workflow 2026-09-19 09:59:49 +02:00
Sign in to join this conversation.