Skip to content

ci(release-server): enable max provenance + SBOM on Docker images#26

Merged
dvcdsys merged 1 commit intomainfrom
ci/server-attestations-sbom
May 2, 2026
Merged

ci(release-server): enable max provenance + SBOM on Docker images#26
dvcdsys merged 1 commit intomainfrom
ci/server-attestations-sbom

Conversation

@dvcdsys
Copy link
Copy Markdown
Owner

@dvcdsys dvcdsys commented May 2, 2026

Summary

  • Add provenance: mode=max and sbom: true to both Docker build-push steps in release-server.yml (CPU multi-arch + CUDA amd64).
  • Brings CI image attestations in line with what the local server/Makefile already produces (make docker-build-cuda / scout-cuda / docker-build-cuda-dev).

Why

Docker Scout grade for the same Dockerfile differed between artifacts:

  • Locally built/pushed :cu128-devB
  • CI-built :cu128 / :v0.4.0-cu128 (release-server.yml) → C

Investigation showed the runtime image is identical (same amd64 manifest size, same Dockerfile, same Go code). The delta is entirely in the attestation manifest:

Tag Provenance SBOM
CI :v0.4.0-cu128 mode=min (~42 KB) none
Local :cu128-dev mode=max (~34 KB) SPDX (~883 KB)

docker/build-push-action@v6 defaults are provenance: true (= mode=min) and sbom: false. Without an SBOM, Scout's "Supply chain attestations" policy fails, dragging the grade down. Setting both flags explicitly aligns CI with the local Makefile and should restore grade B on the next server/v* release without changing image contents.

Test plan

  • Cut a non-prod throwaway tag (e.g. server/v0.4.1-test) → confirm CI workflow runs without errors and pushes both CPU and CUDA images
  • docker buildx imagetools inspect dvcdsys/code-index:<new-tag>-cu128 --raw — verify attestation manifest includes both spdx.dev/Document and slsa.dev/provenance/v1 layers
  • docker scout cves dvcdsys/code-index:<new-tag>-cu128 --platform linux/amd64 — verify HIGH/CRITICAL count unchanged
  • Check Docker Hub Scout grade — expect B (matching the locally produced image)

🤖 Generated with Claude Code

Adds `provenance: mode=max` and `sbom: true` to both build-push steps
(CPU and CUDA) in release-server.yml.

Docker Scout grade dropped from B (locally pushed images via
`make scout-cuda` / `make docker-build-cuda-dev`) to C (CI-pushed
`:cu128` / `:latest`) because the local Makefile targets pass these
flags explicitly while `docker/build-push-action@v6` defaults to
`provenance: mode=min` and `sbom: false`. Without an SBOM the
"Supply chain attestations" policy fails, dragging the grade down.

Aligning the CI flags with the Makefile should restore grade B on
the next `server/v*` release without changing image contents.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@dvcdsys dvcdsys merged commit 9728cf2 into main May 2, 2026
6 checks passed
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