Skip to content

Attest the build provenance of every release file - #5

Merged
levidurfee merged 1 commit into
developmentfrom
ci/attest-provenance
Oct 16, 2026
Merged

levidurfee merged 1 commit into
developmentfrom
ci/attest-provenance

Conversation

@levidurfee

Copy link
Copy Markdown
Contributor

Summary

Adds signed build provenance to every release file.

  • Release workflow. After GoReleaser publishes, actions/attest v4.2.2 signs a SLSA build provenance attestation with Sigstore for every file in dist/SHA256SUMS: the six binaries and their SBOMs. Each attestation records which workflow run built the file, from which commit. GoReleaser writes SHA256SUMS after signing and notarizing the macOS binaries, so the digests match the files people download.
  • Permissions. The release job gains id-token: write (Sigstore signing) and attestations: write (storing the attestation). artifact-metadata: write is only needed when pushing to a container registry, so it's left out.
  • README. A new "Verify a release" section shows gh attestation verify ... --signer-workflow .../release.yml, which also works on a Homebrew-installed rypt.
  • docs/releasing.md. Mentions the attestation step and what to do if it fails: the release is already published by then, so delete the GitHub release (not the tag) and re-run.

The SBOM is attested as a release file. It is not yet bound to its binary as an SBOM-type attestation; that can follow if wanted.

Testing

  • actionlint v1.7.12 passes on all workflows.
  • The step only runs on a tag, so the first real check is the next release. After tagging, run gh attestation verify rypt-linux-amd64 --repo x6c-co/rypt-cli --signer-workflow x6c-co/rypt-cli/.github/workflows/release.yml on a downloaded binary.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NTEjHbdKp83qgQgmqR1BJ6

The release workflow's last step signs a SLSA build provenance
attestation, with actions/attest, for every file in SHA256SUMS: each
binary and its SBOM. It shows that this workflow built the file from the
tagged commit, which a checksum published beside the file cannot. The
README shows how to check one with "gh attestation verify".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTEjHbdKp83qgQgmqR1BJ6
@levidurfee
levidurfee merged commit d9373e3 into development Oct 16, 2026
3 checks passed
@levidurfee
levidurfee deleted the ci/attest-provenance branch October 16, 2026 01:04
@levidurfee levidurfee mentioned this pull request Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant