Conversation
The ci binaries cache key referenced hack/build_binaries.sh, renamed to .rb in the ruby rewrite. hashFiles silently drops the non-matching path, so the key hashed makefile alone -- edits to the build driver no longer busted the cache. Also add patches/chisel/*.patch so the key mirrors hack/hash_inputs.sh's binaries input set; without it a patch edit would hit a stale cache and ship stale chisel-hacked binaries.
inlined/*.yaml is generated from templates/ + scripts/ but also committed, so repo-tree consumers grab it directly. Nothing failed when the committed copy went stale -- ci and release both regenerate before use. Add a job that regenerates and diffs, failing if the committed inlined drifts from its sources.
The container env var was set to DEBIAN_FRONTEND=noninteractice (invalid value). debconf ignores an unknown frontend and falls back, so apt run inside the test container never got the intended non-interactive frontend. Correct the spelling in the allocate scripts, tests/spread.yaml, and the hand-maintained demo/spread.yaml; drop the now-dead spellchecker ignore directives; regenerate inlined/*.yaml.
The drift step piped make update-base into tee. GitHub's default step shell runs with -e but not pipefail, so a failing make was masked by tee's success -- the job would go green having resolved no digests. Add set -eo pipefail so the pipeline fails on make error.
89c22e2 changed the key to hash hack/build_binaries.rb, but that file only exists on the ruby-rewrite branch -- on this branch the build driver is hack/build_binaries.sh. hashFiles silently drops the non-existent .rb, so the key was hashing patches + makefile but not the driver itself. Point it back at .sh; keep the patches/chisel/*.patch addition (the real gap here).
templates fixed the DEBIAN_FRONTEND=noninteractive typo but the committed inlined/*.yaml were not regenerated, failing check-inlined.
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.
grab-bag of ci / build hygiene fixes that were quietly wrong. each is a distinct root cause, so splitting them out below.
binaries cache key was hashing the wrong inputs
the cache key referenced
hack/build_binaries.sh, buthashFilessilently drops any path that doesn't match -- so after churn around the driver filename the key was effectively hashingmakefilealone. edits to the build driver no longer busted the cache. also addedpatches/chisel/*.patchso the key mirrorshack/hash_inputs.sh's binaries input set -- w/out it a patch edit hits a stale cache and ships stale chisel-hacked binaries.key now:
hashFiles('hack/build_binaries.sh', 'patches/chisel/*.patch', 'makefile').DEBIAN_FRONTEND=noninteracticetypothe container env var was
noninteractice(invalid). debconf ignores an unknown frontend and falls back, so apt inside the test container never got the intended non-interactive frontend. fixed in theallocatescripts,tests/spread.yaml, and the hand-maintaineddemo/spread.yaml; dropped the now-dead#spellchecker: ignoredirectives; regeneratedinlined/*.yaml.inlined yaml drift guard
inlined/*.yamlis generated fromtemplates/+scripts/but also committed (repo-tree consumers grab it directly). nothing failed when the committed copy went stale -- ci and release both regenerate before use. added acheck-inlinedjob that regenerates and diffs, failing on drift. ubuntu runners ship ruby so no extra setup.base-refresh masked make failures
the drift step piped
make update-baseintotee. github's default step shell runs-ebut notpipefail, so a failingmakewas masked bytee's success -- the job went green having resolved no digests. addedset -eo pipefail.