Repository navigation
ci: release smoke builds every Dockerfile's binary, migrates and boots web + admin - #115
Merged
Merged
Conversation
jayleaton
force-pushed
the
ci/dev-main-branches
branch
from
October 23, 2026 09:26
944f96b to
e34fc99
Compare
…s web + admin Ported from auto-visuals #31 (why: #26, #29). CI never built the images or booted the binaries, so an image that cannot start, or a production config that refuses to boot without an optional integration, reached a deploy first. scripts/release-smoke.sh, in the single ci job (and make release-smoke): 1. builds every binary that has a Dockerfile with that Dockerfile's own build-stage ENV and RUN line (scripts/dockerfile-builds.sh reads them; nothing copies the flags), and fails if one is dynamically linked; 2. runs the binaries' own migrate on fresh databases; 3. boots web and admin with APP_ENV=production and only the config production requires, until /healthz answers 200. It runs only when a build input changed: scripts/affected.sh outputs smoke=true for a full run, a changed Dockerfile, or an affected package that a Dockerfile builds (test files alone do not count). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jayleaton
force-pushed
the
ci/release-smoke
branch
from
October 23, 2026 09:35
370bc91 to
8697a98
Compare
jayleaton
marked this pull request as ready for review
October 23, 2026 09:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ported from jayleaton/auto-visuals #31 (why: #26, #29). CI never built the images or booted the binaries. So when an image could not start, or a production config refused to boot without an optional integration, the first place that showed up was a deploy. In the Imagen port, #29 was an admin binary that a new dependency (purego) left dynamically linked even with
CGO_ENABLED=0, and #26 was an admin that would not boot in production without R2. Based on main (#105 and #106 are merged; also tested with #113's admin changes).Summary
Docs: AGENTS.md "Verifying" has a Release smoke bullet, and the CI-layout line mentions it. README.md is untouched.
Evidence
Passing, on Actions:
65883a7, warm cache:ok 10.8s smoke, and the job took 54 s.Measured cost:
The smoke runs in parallel with the other tasks, so it adds at most about 11 s of wall time.
Failing on a dynamically linked build (the #29 bug, reintroduced). A scratch commit added
_ "github.com/ebitengine/purego"toapps/admin/cmd/adminand changed nothing else. Run 39930402758 failed:I deleted the scratch branch afterwards. The run's separate
lintfailure was gofmt on the scratch import.When the smoke runs (
AFFECTED_FILES=… scripts/affected.sh):AGENTS.mddeploy/platform.yamlapps/web/internal/services/users_test.goonlyapps/web/internal/services/users.goapps/web/ui/static/app.css(embedded)apps/admin/Dockerfilescripts/release-smoke.sh(full run)make check-fastpassed andmake actionlintreported no issues. Per the load rules I did not run the smoke locally; Docker on this machine is also out of network pools formake db-up.Merge Danger
Door: two-way. Only CI, scripts and docs change. Delete the task or the
smokeoutput to turn it off.Blast Radius: CI
A PR that touches what a Dockerfile builds now also has to build static, migrate fresh databases and boot web and admin in production mode with only the required config. A new setting that production requires has to be added to the smoke's env lists, which is intended: that is exactly what a deploy would need too.
🤖 Generated with Claude Code