Skip to content

ci: attest builds and attach provenance - #741

Merged
av1155 merged 2 commits into
mainfrom
ci/attest-build-provenance
Aug 12, 2026
Merged

ci: attest builds and attach provenance#741
av1155 merged 2 commits into
mainfrom
ci/attest-build-provenance

Conversation

@av1155

@av1155 av1155 commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

Produces a signed provenance attestation for each released image and puts it somewhere a user can actually reach it.

Closes #737

Changes

  • docker.yml: add actions/attest-build-provenance against the pushed image digest, with push-to-registry: true.
  • docker.yml: attach the Sigstore bundle to the GitHub release as houndarr-<tag>.sigstore.json.
  • docker.yml: the build job gains id-token, attestations, and contents: write for the upload.

BuildKit already emitted provenance: mode=max and an SBOM, but those are registry-side only, so anyone verifying a release from GitHub had nothing to check against. Releases previously carried no assets at all.

release.yml is triggered by the same tag push but runs independently, so the upload waits for the release rather than assuming it beats a multi-arch build.

Testing

actionlint clean. New steps are gated on startsWith(github.ref, refs/tags/v), so PR builds are untouched; this PR exercises that path by not running them. Shell inputs are passed through env: rather than inline expressions.

Worth noting: the build job now holds contents: write. It is job-level rather than top-level, the steps using it are tag-gated, and a fork PR token is read-only regardless.

Type of Change

  • CI/CD (ci:)

Checklist

  • Issue exists and is linked above with Closes #N
  • Linked issue has exactly one type:* and one priority:* label
  • Linked issue has at most one phase:* label (or none when not roadmap work)
  • Branch name matches issue scope
  • Tests added/updated for all changes — N/A, no application code
  • No secrets or sensitive data committed
  • Scope check: release integrity only, no behaviour change

av1155 added 2 commits August 11, 2026 20:10
Generates a signed SLSA provenance attestation for the pushed image
and stores it both in the registry and on the GitHub release.

BuildKit already emitted provenance and an SBOM, but those are
registry-side only. Anyone verifying a release from GitHub had no
signed artifact to check against, and neither did Scorecard.

The upload waits for release.yml, which is triggered by the same tag
push but runs independently, so the ordering is not assumed.
@av1155
av1155 merged commit f05a2c8 into main Aug 12, 2026
4 checks passed
@av1155
av1155 deleted the ci/attest-build-provenance branch August 12, 2026 00:50
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.

ci: attach signed build provenance to releases

1 participant