Skip to content

ci: build + boot the Docker image on every PR (#212 follow-up)#221

Merged
forcingfx merged 2 commits into
mainfrom
ci/docker-smoke
May 31, 2026
Merged

ci: build + boot the Docker image on every PR (#212 follow-up)#221
forcingfx merged 2 commits into
mainfrom
ci/docker-smoke

Conversation

@forcingfx

Copy link
Copy Markdown
Owner

Why

CI never built or ran the Docker imagedocker-publish.yml builds it only on a release tag (and only build-push, never boots it), and the existing build-self-host job boots npm run serve from the source tree, not the image. That blind spot is exactly why issue #212 shipped five image-specific bugs through green CI.

What

A docker-smoke job in ci.yml (runs on every PR + push to main):

  1. Build the self-host image (docker build, amd64 native — ~2 min).
  2. Boot it (docker run) and poll /api/health until {"ok":true}.
  3. Validate Caddyfile and Caddyfile.lan via caddy validate with a blank ACME_EMAIL.

Coverage vs the #212 bugs

#212 bug Caught by
husky → npm ci exit 127 step 1 (build)
missing COPY packages/ → boot crash step 2 (boot)
SELF_HOSTED production boot guard step 2 (boot)
empty-email Caddyfile parse error step 3 (validate)
IP-host TLS (bind/default_sni) partially — step 3 validates config; full HTTPS-serving handshake is left to the release/manual smoke to avoid CI flakiness

So 4 of 5 are now caught automatically; the 5th has its config validated.

Verification

This PR's own CI runs the new job — that's the proof. (My local sandbox can't reach Docker; GitHub's runner can.) actionlint is clean on the new job; the two warnings it reports are pre-existing on the build-self-host step (line 205), untouched here.

Not auto-merging.

🤖 Generated with Claude Code

@vercel

vercel Bot commented May 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
feedzero Ready Ready Preview, Comment May 31, 2026 7:49pm

github.sudoku and others added 2 commits May 31, 2026 21:46
Adds a docker-smoke job to ci.yml: builds the self-host image (amd64,
native), boots it, and polls /api/health until {"ok":true}; then runs
`caddy validate` on both Caddyfile and Caddyfile.lan with a blank
ACME_EMAIL. The existing jobs only build/boot the SPA+server from the
SOURCE tree, so image-specific failure modes (multi-stage npm ci --omit=dev,
the COPY set, baked NODE_ENV=production, Caddyfile parsing) were never
exercised — that is why issue #212 shipped five such bugs through green CI.
This job would have caught four of the five automatically (build, boot
crash x2, empty-email Caddyfile parse).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@forcingfx forcingfx enabled auto-merge (squash) May 31, 2026 19:48
@forcingfx forcingfx merged commit f749651 into main May 31, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant