Skip to content

ci: sign Docker images and attach build provenance (backport of #4451) - #4524

Merged
stevenvegt merged 1 commit into
V5.4from
V5_4/cosign-keyless-signing
Sep 10, 2026
Merged

ci: sign Docker images and attach build provenance (backport of #4451)#4524
stevenvegt merged 1 commit into
V5.4from
V5_4/cosign-keyless-signing

Conversation

@stevenvegt

Copy link
Copy Markdown
Member

Backport of #4451 to V5.4. Adds Sigstore keyless signing plus SLSA provenance and SPDX SBOM attestations to the image build, so the next V5.4 patch release ships signed with a bill of materials. Users verify with:

cosign verify nutsfoundation/nuts-node:<tag> \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp '^https://github.com/nuts-foundation/nuts-node(-private)?/\.github/workflows/build-images\.yaml@'

Differences from the master change, all due to the branch's workflow layout:

  • The docker job on this branch has no permissions block and uses version tags for its actions; that is left as is. The new sign job carries its own permissions: id-token: write (which drops every other permission for that job) and pins its two actions by SHA, since it is the job that holds the OIDC credential.
  • V5.4 has no deployment/docker.rst; the "Verifying image signatures" section is added to the getting-started "Running on Docker" page instead.
    Verification: the workflow YAML parses, and a local Sphinx build of the docs succeeds with no warnings for the changed page. The sign job is skipped on pull_request, so the first real check is the workflow run on this branch after merge; the next tag build should be verified with the command above.

Not for release yet; part of the batch of fixes before the next V5.4 patch tag, together with #4506 and the pending backport of #4496 (version stamping).

Backport of #4451 to V5.4. The sign job runs separately so the OIDC
credential is never exposed to the third-party build actions, and it is
skipped on pull requests because forks get no OIDC token. The docs go to
the getting-started Docker page, since V5.4 has no deployment/docker.rst.

Assisted-by: AI
@stevenvegt
stevenvegt merged commit 09b5a88 into V5.4 Sep 10, 2026
6 checks passed
@stevenvegt
stevenvegt deleted the V5_4/cosign-keyless-signing branch September 10, 2026 13:23
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.

2 participants