fix(ci): unbreak the image build, and prove the Dockerfile before a release needs it - #84
Merged
Conversation
BryanFRD
enabled auto-merge (squash)
August 15, 2026 11:55
There was a problem hiding this comment.
Both changes check out.
- Dockerfile: the SC2155 fix (assign then
export VAR1 VAR2) is correct and behaviorally identical to before. - docker.yml: the new
pull_request-triggeredverifyjob is properly scoped — it's the only job that runs onpull_requestevents (if: github.event_name == 'pull_request'), whilemeta/buildstay gated torelease/workflow_dispatchvia their own condition, so nothing tries to push or sign on a PR.push: false, amd64-only, path-filtered toDockerfile+ the workflow file, matching the PR description. Reusable workflow ref is pinned to a SHA (not a mutable tag), consistent with the existingbuildjob.
Nit: can't verify from this repo whether reusable-docker-build.yml cleanly no-ops registry/signing steps when push: false — worth a quick check in FerrLabs/.github if not already covered, but not blocking here since the observable behavior (Dockerfile lints/builds on PR, no publish) matches intent.
No blocking issues. Approving.
SonarQube — aucune nouvelle issueComparaison entre le projet bac à sable de cette PR et la branche par défaut : SonarQube Community n'analyse pas les PR, ce delta est calculé côté CI. Détail |
This was referenced Aug 15, 2026
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.
No image has been published since 0.20.0. Five releases — 0.21.0, 0.22.0, 0.23.0, 0.23.1, 0.24.0 — are tagged, have charts, and have no container behind them. GHCR stops at
0.20.0.The cause is one line. The sccache work in 0.21.0 added
export ACTIONS_CACHE_URL="$(cat ...)", and hadolint runs with--failure-threshold warning, so SC2155 ("declare and assign separately to avoid masking return values") fails the job. Assigning first and exporting after is the fix.The reason nobody noticed is the more interesting half. The image is built on
releaseonly, so the Dockerfile is exercised for the first time after a version exists. Every release since has been publishing a chart whoseappVersionnames an image that was never pushed — which is exactly the trap the homelab fell into an hour ago: Homelab#94 moved the release to chart 0.23.1, the pod could not pullghcr.io/ferrlabs/lfsx:0.23.1, and the service was down for about seventeen minutes until Flux gave up and rolled back.So this PR also makes a change to
Dockerfileprove itself before merging: apull_requesttrigger, path-filtered to the file and this workflow, running the same reusable withpush: falseand amd64 only. Lint and build, no registry, no signing, no Trivy — those stay on the release path. It is one build on the rare PR that touches the file, against five silent releases.No smoke test on that job on purpose: the release path keeps it, and duplicating the script here would be one more thing to drift.
After this merges, the images for the missing versions still have to be published by dispatching this workflow per version.