Commit Graph

8 Commits

Author SHA1 Message Date
8945c4f8c3 Pin playwright@1.52.0 to match Docker image + add pre-stage Dockerfile
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 5s
CI/CD / test-runners (pull_request) Failing after 29s
CI/CD / test-go-pg (pull_request) Successful in 2m40s
CI/CD / test-sqlite (pull_request) Successful in 2m52s
CI/CD / build-and-deploy (pull_request) Has been skipped
npm install playwright pulled v1.59.1 but the Docker image ships
v1.52.0 browsers, causing a version mismatch crash. Pin to 1.52.0.

Also add ci/Dockerfile.test-runner for pre-building the image into
registry.gobha.me:5000/ci-test-runner:latest — eliminates npm install
from every CI run.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 10:48:46 +00:00
bbdaaf5628 Fix playwright module resolution + parallelize test-runners
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 4s
CI/CD / test-runners (pull_request) Failing after 24s
CI/CD / test-go-pg (pull_request) Successful in 2m52s
CI/CD / test-sqlite (pull_request) Successful in 2m54s
CI/CD / build-and-deploy (pull_request) Has been skipped
1. Add npm install playwright to test-runner Dockerfile — the
   Playwright Docker image installs globally but require() from
   /work can't resolve it. Local install fixes the module path.

2. Remove test-sqlite dependency from test-runners job so it runs
   in parallel with DB tests instead of waiting for them.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 10:46:05 +00:00
ed8cb71ba6 Remove redundant npm install from test-runner Dockerfile
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 3s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m43s
CI/CD / test-sqlite (pull_request) Successful in 3m2s
CI/CD / test-runners (pull_request) Failing after 1m12s
CI/CD / build-and-deploy (pull_request) Has been skipped
The Playwright Docker image already ships with playwright and browsers
pre-installed. The npm install was failing (exit code 1, hidden by
2>/dev/null) and blocking the build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 10:05:39 +00:00
70c23e06a7 Build CI scripts into test-runner image instead of volume mount
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 3s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m50s
CI/CD / test-sqlite (pull_request) Successful in 2m55s
CI/CD / test-runners (pull_request) Failing after 59s
CI/CD / build-and-deploy (pull_request) Has been skipped
DinD volume mounts don't work — the Docker daemon can't see the CI
runner's workspace volume. Instead, COPY ci/ into the Playwright
image at build time via dockerfile_inline. No volume detection needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:57:30 +00:00
5a364e75f2 Fix test-runner volume mount for DinD workspace
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 5s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m48s
CI/CD / test-sqlite (pull_request) Successful in 2m50s
CI/CD / test-runners (pull_request) Failing after 16s
CI/CD / build-and-deploy (pull_request) Has been skipped
In Gitea runner pods, the repo checkout lives in a Docker volume, not
a host path. The `.:/work` mount in docker-compose.ci.yml resolved to
the Docker daemon's CWD (empty), causing "No such file or directory".

Resolve the actual Docker volume backing the CI workspace at runtime
and pass it via CI_WORKSPACE_VOLUME env var. Falls back to `.` for
local (non-DinD) usage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:52:33 +00:00
d499ba9e38 Fix CI healthcheck endpoint and bundled install FK violations
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 5s
CI/CD / test-go-pg (pull_request) Successful in 2m44s
CI/CD / test-sqlite (pull_request) Successful in 2m55s
CI/CD / test-runners (pull_request) Failing after 1m43s
CI/CD / build-and-deploy (pull_request) Has been skipped
Two bugs preventing the test-runners CI job from passing:

1. Health check used GET /api/v1/auth/login — a POST-only route that
   always returns 404. Changed to GET /api/v1/health which exists.

2. Bundled package install passed empty strings to FK-constrained
   columns (global_settings.updated_by, workflows.created_by),
   causing FOREIGN KEY constraint failures on every surface and
   workflow package. Fixed by resolving the bootstrap admin user ID
   at startup and threading it through the install path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:41:23 +00:00
d7242cb34e Fix CI DinD networking: replace host mode with compose-internal Playwright
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m44s
CI/CD / test-sqlite (pull_request) Successful in 2m48s
CI/CD / test-runners (pull_request) Failing after 2m38s
CI/CD / build-and-deploy (pull_request) Has been skipped
The test-runners job was failing because network_mode: host puts the
armature container on DinD's network namespace, unreachable from the
workflow container which is on a separate bridge network.

Fix: Remove host networking entirely. Add a test-runner service to the
CI compose override that runs Playwright tests on the same bridge
network as armature, using Docker DNS (http://armature:80).

Changes:
- docker-compose.ci.yml: Replace network_mode: host with healthcheck
  on armature + Playwright test-runner service (depends_on: healthy)
- ci.yaml: Collapse 7 test-runners steps into 3 (checkout, compose
  up --exit-code-from test-runner, teardown)
2026-04-02 05:24:41 -04:00
e45c31caaa Fix CI DinD networking: host network mode + curl timeout
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 3s
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m43s
CI/CD / test-sqlite (pull_request) Successful in 2m49s
CI/CD / test-runners (pull_request) Failing after 38s
CI/CD / build-and-deploy (pull_request) Has been skipped
The previous fix (container IP resolution) still failed because the
CI runner and compose containers are on separate Docker networks.

- Add docker-compose.ci.yml override with network_mode: host so the
  container shares the runner's network stack directly
- Add --connect-timeout 2 to curl in wait-for-healthy.sh so it fails
  fast instead of hanging indefinitely on unreachable hosts
- Cap health check at 30s (server boots in 5-10s)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:09:06 +00:00