fix(ci): make the docker dependency cache work and unbreak Dockerfile.bins - #267
Merged
kevincodex1 merged 1 commit intoJul 30, 2026
Merged
Conversation
….bins The Dockerfile cache layer primed from four crate manifests while the workspace has six members, and crates/gl takes a path dependency on icaptcha-client. Cargo loads the whole workspace before resolving, so the layer aborted on the missing manifest and || true swallowed it. Every image build has been a full cold build since icaptcha-client landed, including the docker-build smoke test on every PR. Copy all six manifests, and drop the || true: the layer is expected to succeed, and tolerating its failure is what let this sit dead unnoticed. Dockerfile.bins pinned rust:1.85-bookworm against a workspace rust-version of 1.91. An unmet MSRV is a hard cargo error, so both Linux musl targets of scripts/build-bins.sh have been unbuildable. Nothing in CI builds that file, which is why nothing reported it. Closes #265 Closes #266
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
kevincodex1
approved these changes
Jul 30, 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.
Two container builds that do not work, both found while adding
--lockedto the shipping builds in #243.Closes #265. Closes #266.
The dependency-cache layer never cached anything
Dockerfileprimed its dependency cache from four crate manifests, but the workspace has six members andcrates/gltakes a path dependency onicaptcha-client. Cargo loads the whole workspace before resolving anything, so the layer aborted on the missing manifest and|| trueswallowed it. Every image build has been a cold build of the full dependency graph sinceicaptcha-clientwas added, including thedocker-buildsmoke test on every PR.Copying all six manifests fixes it. Dropping the
|| trueis the part that keeps it fixed: the guard is what let this sit unnoticed, and this layer has no reason to tolerate failure.Before, building the first 24 lines unchanged:
After:
Dockerfile.bins could not build at all
It pinned
rust:1.85-bookwormagainst a workspacerust-version = "1.91". An unmet MSRV is a hard cargo error, soscripts/build-bins.shhas been broken for both Linux musl targets. Nothing in CI builds this file, which is why it stayed quiet. Released binaries are unaffected:release.ymlbuilds those on matching-arch runners.Bumping the base image to
rust:1.91-bookworm, matching the mainDockerfile, is the whole fix. Verified by building it: it now completes and produces a 158 MB image.Verification
Real
docker buildruns, not reasoning about the files:gitlawb-nodeimage builds end to end with the fixed cache layer.failed to read /build/crates/icaptcha-client/Cargo.toml) instead of continuing silently, so the removed|| trueis load-bearing and the next crate added to the workspace cannot break this quietly again.Dockerfile.binswith the new base image builds to completion foraarch64-unknown-linux-musl; on the old base it fails witherror: rustc 1.85.1 is not supported by the following packages. It fails identically with and without--locked, so ci: keep Cargo.lock in sync through releases and build --locked (#242) #243's flag was never the cause.One consequence worth naming: until now the cache layer produced no artifacts at all, so the dummy-binary guard at
Dockerfile:26-38(mtime bump, binary removal, fingerprint removal) was never actually exercised. It is now. I checked the built image rather than assuming it held: it ships a 36 MBgitlawb-nodereporting0.7.0and a 12 MBglreporting0.7.0, not thefn main() {}stubs.Base
Stacked on
ci/242-lock-sync-release(#243), which touches the sameDockerfileline. GitHub will retarget this tomainwhen #243 merges. Nothing here depends on #243 semantically, only textually.