Chore: Migrate from attest-build-provenance to attest - #57
Merged
tykeal merged 1 commit intoAug 21, 2026
Merged
Conversation
ModeSevenIndustrialSolutions
requested review from
a team
and
a balanced review from Copilot
August 21, 2026 13:55
Copilot started reviewing on behalf of
ModeSevenIndustrialSolutions
August 21, 2026 13:55
View session
There was a problem hiding this comment.
Pull request overview
Migrates tag-driven release provenance generation to the recommended actions/attest action.
Changes:
- Replaces the deprecated wrapper with SHA-pinned
actions/attestv4.2.2. - Updates workflow documentation and README references.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
README.md |
References the new attestation action. |
.github/workflows/build-test-release.yaml |
Migrates provenance generation and adds rationale. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
As of v4, actions/attest-build-provenance is a thin wrapper that forwards its inputs to actions/attest. GitHub directs new implementations to actions/attest, which emits SLSA build provenance by default when given no predicate. The wrapper is not entirely empty: it also sets NODE_OPTIONS=--max-http-header-size=32768, added upstream for header overflow when pushing attestations to an OCI registry. This job sets no push-to-registry, so the swap is behaviour-preserving here. Repos that do push to a registry must carry the setting across. The subject-path input and the job's id-token/attestations permissions are otherwise unchanged. This covers the tag-driven lane. The merge lane adds attestation using actions/attest from the outset, so both lanes now reach for the same action rather than diverging. Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Matthew Watkins <mwatkins@linuxfoundation.org>
ModeSevenIndustrialSolutions
force-pushed
the
chore/attest-migration
branch
from
August 21, 2026 14:01
9422f60 to
c3694ca
Compare
Copilot started reviewing on behalf of
ModeSevenIndustrialSolutions
August 21, 2026 14:02
View session
This was referenced Aug 21, 2026
tykeal
approved these changes
Aug 21, 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.
Closes #55
Why
From the
actions/attest-build-provenancev4.2.2 release notes:Its
action.ymlis a composite whose single step forwards all eleven inputs toactions/attest@508db95. With nopredicate-type/predicatesupplied,actions/attestemits SLSA build provenance by default, so nothing needs hand-rolling.It is a thin wrapper rather than an empty one. It also sets:
added by actions/attest-build-provenance#687 because node's default 16KB header limit overflows against some OCI registries when pushing attestations to a registry. I originally described the wrapper as a "pure passthrough"; Copilot caught that, and it is corrected here and in the five sibling migration issues.
This job sets no
push-to-registry, so the setting has no bearing and the swap is behaviour-preserving. Two of the six repositories carrying this migration do use that input —docker-workflows(conditional onghcr.io/) andsigul-sign-docker(trueunconditionally) — and both issues are updated to require carryingNODE_OPTIONSacross.Change
One
uses:line in theattestjob ofbuild-test-release.yaml, plus the README reference and an explanatory comment:subject-pathand the job'sid-token: write/attestations: writepermissions are unchanged.The new pin
1e69f48is v4.2.2 ofactions/attest, verified via the API to be a commit SHA rather than a tag object:Relationship to #56
#56 adds attestation to the merge lane and uses
actions/attestfrom the outset, since it is new code. This PR covers the pre-existing tag-driven lane, so both end up on the same action rather than the repo carrying one of each.The two touch different files (
merge.yamlvsbuild-test-release.yaml) and are independent — neither blocks the other, and they merge in either order.Scope
Deliberately narrow. This is one of six identical migrations across the portfolio (
docker-workflows#41,go-workflows#49,python-build-action#249,sigul-sign-docker#192,workflows-template#39); each is tracked and changed in its own repository rather than batched.Two things I did not bundle, to keep this atomic:
actions/attestexposes a first-classsbom-pathinput that the wrapper does not usefully surface, and this workflow already has ansbomjob — so attesting the SBOM alongside the tarball is nearly free. That is a feature, not a migration, and belongs in its own issue.Validation
prek run --all-files— all hooks pass, includingactionlintandgha-workflow-linter, which resolve the new pinmarkdown-table-fixer lint . --auto-fix— no issuesaislop ci— exit 0. Note it reportsfiles: 0: this repo is YAML and Markdown only, so the scanner has nothing in scope. Recording that rather than presenting it as a meaningful pass.grepconfirms noattest-build-provenancereference remains outside the explanatory comment.The attest job is release-gated and this repo holds no release credentials, so CI exercises the build/test lane rather than this job. The change is an action swap with identical inputs, so the risk sits almost entirely in whether the pin resolves — which
gha-workflow-linterchecks.