Exclude thirdparty/licenses from the docker image source checksums#6437
Exclude thirdparty/licenses from the docker image source checksums#6437Grantim wants to merge 2 commits into
Conversation
The rebuild filter excludes thirdparty/licenses/** but the checksum script hashed it, so a licenses-only commit moved the expected source-checksum tag without building it, breaking consumers that pull strictly by that tag. Exclude licenses from the hash and make the script itself a rebuild trigger. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The licenses exclusion and the self-bootstrapping trick of adding the checksum script to the filters both look right. A few findings: 1. The alignment is incomplete. After this PR, these paths are still hashed by
If we keep the alignment approach, these should be added to the filter in the same PR — otherwise the new sync-invariant comment is false on day one. Inverse (harmless) direction: 2. Overlap with #6436. That PR solves the same incident by deleting the linux filters and gating prepare-images on a registry check instead (conventional tag resolved to leaf manifest digests vs the source-checksum tag), which also covers the cases alignment can't: a rebuild that fired but failed to push (canceled run, registry error) leaves the tag absent forever, since the next run's filter sees no relevant diff. The two PRs conflict in 3. Transition note. Redefining the checksum invalidates every existing 4. Stale caveat. |
Per review: the rebuild-selection mechanism moves to the registry-check approach of #6436, which the filter edits here would conflict with; the licenses exclusion composes with it under either merge order. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The rescope addresses points 1 and 2 cleanly — no config.yml conflict, no overstated invariant, and the comment now states the right principle. One remaining issue: merge ordering. Dropping the script-in-filter hunk removed the part that minted the redefined tags. As rescoped, the PR changes every
Two clean resolutions:
Context on urgency: |
|
Closing as superseded by #6436, which solves the same incident at the root: the paths-filters are gone entirely — prepare-config now syncs every conventional tag to its |
Rescoped per review to the checksum-input change only; the rebuild/selection mechanism is #6436's registry check, with which this composes under either merge order.
Problem:
docker_image_source_checksum.shhashedthirdparty/licenses/**, so licenses-only commits (#6429, #6422, #6434) moved every Linux image's expectedsource-checksum-*tag on commits that build no new image. Under the old paths-filter world that meant tags that were never pushed (manifest unknownfor consumers pinning them); under #6436 it would mean a pointless full image-rebuild cycle and tag churn on every license-text edit.Fix: exclude
thirdparty/licenses/**from the hashed set -- license texts ship in packages and are not image inputs. The script comment now states the invariant: hash only paths that affect image content.Transition note (applies regardless of mechanism): redefining the hash invalidates all previously pushed
source-checksum-*tags. This PR's earlier full-matrix run already minted and pushed new-definition tags for current master content (e.g. emscriptensource-checksum-aa94f48bb1837b1d); consumers pinned to older commits compute old-definition tags that will never exist, and unblock only by moving their pin past this merge.Test plan
bash -n; checksum computed for all six distro cases (ubuntu22/24, emscripten x3, rockylinux8-vcpkg).