Skip to content

feat(ci): attest build provenance#287

Merged
hyperpolymath merged 1 commit into
mainfrom
feat/attest-build-provenance
Jun 25, 2026
Merged

feat(ci): attest build provenance#287
hyperpolymath merged 1 commit into
mainfrom
feat/attest-build-provenance

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Estate attestation rollout

Adds GitHub native build-provenance attestation to .github/workflows/ghcr-publish.yml.

Push mechanism: nerdctl (nerdctl build + nerdctl push to ghcr.io). This workflow pushes two distinct artifacts: the minimal image (:${{ github.sha }} / :latest, from .containerization/Containerfile) and the :full image (from .containerization/Containerfile.full).

How the digest is obtained: nerdctl push has no --digestfile flag, so after the pushes the workflow reads each image's real sha256:... digest back from the registry with skopeo inspect --format '{{.Digest}}' (pre-installed on ubuntu-latest), authenticating with GITHUB_TOKEN. Because the minimal and full images are different artifacts with different digests, each gets its own attestation step.

Changes:

  • The job already declared id-token: write + attestations: write — no permission change needed.
  • Captured the minimal and full image digests via skopeo inspect.
  • Added two actions/attest-build-provenance@e8998f94… (v2, pinned) steps (minimal + full), both with push-to-registry: true.

Verify with:

gh attest verify oci://ghcr.io/hyperpolymath/echidna:<tag> --repo hyperpolymath/echidna

🤖 Generated with Claude Code

Add GitHub native build-provenance attestation to the GHCR publish
workflow. The minimal (:sha/:latest) and :full images are built and
pushed with nerdctl, which has no --digestfile; each image's real sha256
digest is read back from the registry with skopeo after push and each
gets its own attestation via actions/attest-build-provenance. The job
already declared id-token/attestations permissions; this wires the
actual attestation steps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath merged commit 4b3e0cb into main Jun 25, 2026
29 of 40 checks passed
@hyperpolymath
hyperpolymath deleted the feat/attest-build-provenance branch June 25, 2026 08:39
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