ci: attest build provenance for the release binaries - #6142
Open
kobihikri wants to merge 1 commit into
Open
Conversation
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.
Hi, and thanks for act.
The release workflow builds and publishes the binaries with GoReleaser, but nothing attests them, so a downloaded
act_Linux_x86_64.tar.gzcarries no evidence of where it came from. Anyone who has the release assets has to take on trust that they were produced by this workflow from this tag.That matters a little more than usual for act specifically: it is a developer tool people install to run CI locally, often via a
curl | bashstyle install script or a package manager that just fetches the GitHub release asset. It tends to end up on machines that also hold repository credentials.This PR adds GitHub's build attestation after the GoReleaser step:
The subject paths follow your
.goreleaser.yml— the default archive format plus thezipoverride for Windows, and thechecksums.txtfrom the checksum block. After a release, anyone can verify an asset with:which reports the workflow, the commit and the run that produced it. Nothing else changes: GoReleaser runs exactly as before, and the Winget, Chocolatey and gh-extension steps that follow are untouched.
Two honest notes:
contents: writeandactions: writeare unchanged, so the rest of the job keeps the access it has today.dist/. If you would rather attest only the archives and notchecksums.txt, dropping that line is harmless — the checksums file is covered indirectly anyway.I have not claimed any SLSA level for this; the attestation is what it is, and the level depends on how you characterise the whole build.
Disclosure: I used AI assistance to help spot this and prepare the change, and I read the workflow and your GoReleaser config myself.