Conversation
4 tasks
…wrapper Distilled from #2109 by Rares Popa. Two slices only; the rest of that PR is either frontend work the UI rebuild makes redundant, or a gating change that needs re-siting first. 1. Three jobs move from ubuntu-latest to ubuntu-24.04 _lint.yml `lint` and `lint-mem`, and _test.yml `test-diag`, each install a toolchain from an apt.llvm.org repo whose name contains the release: deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main noble IS 24.04. So these jobs already depend on a specific release while asking for whatever ubuntu-latest happens to mean that morning. The day GitHub advances ubuntu-latest, all three break at once, on a schedule nobody here chose, and the failure surfaces as an apt error far from its cause. Pinning the runner to the release the repo line already names costs nothing and removes the trapdoor. 2. actions/attest-sbom -> actions/attest attest-sbom is deprecated. Its remaining behaviour is to print "::warning::actions/attest-sbom has been deprecated" and forward to actions/attest with NODE_OPTIONS set, passing sbom-path through unchanged. Calling attest directly yields the same attestation minus the wrapper. Verified rather than assumed, because this sits on the release path: 59d89421af93a897026c735860bf21b6eb4f7b26 is exactly tag v4.1.0 of actions/attest, and sbom-path is a real input on that action at that SHA. The step keeps no continue-on-error, so a failed SBOM attestation still fails the release. That is the intended behaviour and the comment now says so: an unattested SBOM is worse than an absent one, because the artifact ships looking complete. Deliberately NOT taken from #2109, each for its own reason: - the actionlint job, as sited. _lint.yml is consumed by pr.yml, dry-run.yml and release.yml, pr.yml gates its whole test stage on `if lint succeeded`, and release.yml gates build on needs.lint.result == 'success'. A job there is merge-blocking and release-blocking with no branch-protection edit to make it visible, and this one curls a tarball from github.com releases with no cache and no fallback. actionlint is worth having; not on that path, and not before it has been run against current main. - the test-package-wrappers node matrix. It reruns the Go and PyPI suites a second time per OS to vary a Node version only the npm leg reads. - everything frontend: the test-frontend job, .node-version, and the dependabot graph-ui block. The UI is being rebuilt from the ground up, so gating on the current one buys coverage of a surface that is going away. Co-authored-by: Rares Popa <2606875+rarepops@users.noreply.github.com> Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
DeusData
force-pushed
the
distill/2109-ci-pins-and-sbom
branch
from
September 20, 2026 15:36
051702c to
238f9e6
Compare
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.
Distilled from #2109 by @rarepops, carried with
Co-authored-by. #2109 stays open — this takes two slices, not the PR.1. Three runners pinned to ubuntu-24.04
_lint.ymllintandlint-mem, and_test.ymltest-diag, each install a toolchain from an apt repo that names the release:noble is 24.04. These jobs already depend on a specific release while asking for whatever
ubuntu-latestmeans that morning. When GitHub advancesubuntu-latest, all three break at once on a day nobody chose, and it surfaces as an apt error far from its cause.2.
actions/attest-sbom→actions/attestattest-sbomis deprecated; what it does now is print a deprecation warning and forward toactions/attestwithNODE_OPTIONSset, passingsbom-paththrough unchanged.Verified rather than assumed, because this is on the release path:
59d89421af93a897026c735860bf21b6eb4f7b26is exactly tag v4.1.0 ofactions/attest(checked via the git ref API)sbom-pathis a real input on that action at that SHA (checked against itsaction.yml)The step keeps no
continue-on-error, so a failed SBOM attestation still fails the release — and the comment now says so explicitly. An unattested SBOM is worse than an absent one, because the artifact ships looking complete.Deliberately not taken from #2109
_lint.yml_lint.ymlis consumed bypr.yml,dry-run.ymlandrelease.yml;pr.ymlgates its whole test stage on lint succeeding andrelease.yml:105gates build onneeds.lint.result == 'success'. A job there is merge- and release-blocking with no branch-protection edit to make it visible — and this one curls a tarball from github.com releases with no cache or fallback. Worth having, not on that path, and not before it has been run against current main.test-package-wrappersnode matrixtest-frontend,.node-version, dependabot graph-ui.node-versionwould also desync the Windows VM, which pinsv22.23.1inprovision-windows.sh:96.Note
maincurrently carries one unrelated failing test (fix in #2248), so expect that red here until it lands. PyYAML is not installed locally so I could not lint the YAML offline — this PR's own CI consumes both edited reusable workflows, so a syntax error fails immediately.