Goal
Make the shared Docker build actions emit verifiable OCI provenance for every pushed GHCR image so the public infra deployment can enforce source identity before promotion.
Scope
- Update both
build-actions/docker and build-actions/docker-job after the successful push to invoke GitHub artifact attestation for ghcr.io/${image_name} and the exact build digest, with registry publication enabled.
- Preserve least job permissions:
contents: read, packages: write, attestations: write, id-token: write; fail clearly when a caller omits them.
- Pin the external attestation action to a reviewed full commit SHA and let Renovate maintain the comment/tag metadata.
- Add tests/a release fixture that verifies
gh attestation verify oci://… --repo <expected source repo> succeeds and rejects a different repository/digest.
- Document the supply-chain contract for consumers.
Rollout
- Merge and release
a-novel-kit/workflows.
- Let Renovate repin
service-json-keys and service-authentication to the released action version.
- Cut fresh patch releases for both services so database, job, gRPC, and REST images all have attestations.
- Only then enable the infra deployment's hard provenance gate.
Published tags are immutable. If an attestation is wrong or missing, release a fixed workflow and fresh service patch; never rewrite the old image tag.
Acceptance criteria
- Every image built through either shared action has a registry-visible provenance attestation bound to its digest and source repository.
- Verification works without granting the deployment workflow package write access to GHCR.
- No token, attestation payload, registry credential, or image metadata with secret values appears in logs.
- Existing callers without the required permissions fail before publishing an unattested release or receive an explicitly staged compatibility window documented in the PR.
Context
Cross-org prerequisite for the Google Cloud infrastructure Epic in a-novel/.github. The current callers grant attestation permissions, but the shared actions do not emit attestations.
Goal
Make the shared Docker build actions emit verifiable OCI provenance for every pushed GHCR image so the public infra deployment can enforce source identity before promotion.
Scope
build-actions/dockerandbuild-actions/docker-jobafter the successful push to invoke GitHub artifact attestation forghcr.io/${image_name}and the exact build digest, with registry publication enabled.contents: read,packages: write,attestations: write,id-token: write; fail clearly when a caller omits them.gh attestation verify oci://… --repo <expected source repo>succeeds and rejects a different repository/digest.Rollout
a-novel-kit/workflows.service-json-keysandservice-authenticationto the released action version.Published tags are immutable. If an attestation is wrong or missing, release a fixed workflow and fresh service patch; never rewrite the old image tag.
Acceptance criteria
Context
Cross-org prerequisite for the Google Cloud infrastructure Epic in
a-novel/.github. The current callers grant attestation permissions, but the shared actions do not emit attestations.