Repository navigation
Conversation
Release images now carry an SPDX SBOM attestation next to the provenance attestation build-push-action already adds. Marking a release stable retags the image that release published instead of rebuilding it. The rebuild paired an older wheel with the default branch's Dockerfile, and gave users who had already pulled the release new layers to download. imagetools create carries the attestation manifests across. docs/ci-cd.md gains a Docker image section: what the image contains, how to persist the reachability engine cache between container runs, keeping pulls cheap in CI, and how to inspect the attestations.
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 5e0a92a. Configure here.
Oskar Haarklou Veileborg (BarrensZeppelin)
left a comment
There was a problem hiding this comment.
[agent] Simplification pass (quality only, not a bug hunt). Two small suggestions on the stable workflow and one optional docs note, all inline. Everything else looked fine: the checkout is still needed for the local setup-docker action, enable-qemu: "false" uses the existing input as intended, and retagging fixes the drift at its root.
| if ! docker buildx imagetools inspect "socketdev/cli:${INPUT_VERSION}" > /dev/null; then | ||
| echo "Error: socketdev/cli:${INPUT_VERSION} is not on Docker Hub" | ||
| exit 1 | ||
| fi |
There was a problem hiding this comment.
[agent] This pre-check repeats work. docker buildx imagetools create already fails with a "not found" error when the source tag doesn't exist, so the separate inspect only adds a registry round trip to get a friendlier message. Consider dropping it and letting create fail. The version-format check above should stay, since it keeps inputs like latest from being copied onto stable.
| # Point stable at the image the release already published instead of | ||
| # rebuilding it. A rebuild would pair that release's wheel with the | ||
| # default branch's current Dockerfile, and would give users who already | ||
| # pulled the release new layers to download. The retag keeps the | ||
| # release's attestations. |
There was a problem hiding this comment.
[agent] Most of this comment explains why the workflow no longer rebuilds, contrasting the new code with what it replaced. That history fits the PR description better. Our comment conventions keep code comments to the lasting "why" for future readers. A single line covers it, e.g.:
# Stable must be the release's exact digest, attestations included.| With `--reach`, the CLI downloads its pinned reachability engine on first use and | ||
| caches it under `$XDG_CACHE_HOME/socket/coana` (`/root/.cache/socket/coana` in the | ||
| image). A new container starts with an empty cache, so without a persistent |
There was a problem hiding this comment.
[agent] Optional: this restates the engine cache location that docs/cli-reference.md already documents (more precisely, as coana/v1). Consider giving only the in-container path here and linking to the reference for the rest, so a future change to the cache layout only has to be made in one place.
Oskar Haarklou Veileborg (BarrensZeppelin)
left a comment
There was a problem hiding this comment.
Nice improvements, LGTM ✅
Three small changes to how the Docker image is published and documented. Nothing in the package or the image's contents changes.
Changes
release.ymlsetssbom: trueondocker/build-push-action, so each release image carries an SPDX SBOM next to the provenance attestation the action already adds. It is generated from the built image on every build. Toolchains installed from release archives rather than a package manager (Rust via rustup, PyPy) show up thinly or not at all, and the docs say so.stableis a retag.docker-stable.ymlused to rebuild the image from the default branch withCLI_VERSION=<version>. That paired an older wheel with whatever the Dockerfile was at the time, and gave users who had already pulled<version>new layers to download. It now pointssocketdev/cli:stableat the publishedsocketdev/cli:<version>withdocker buildx imagetools create, after validating the input and checking that the tag exists. A--dry-runagainst2.11.11confirms that the retag keeps both attestation manifests.docs/ci-cd.mdcovers what the image contains, how to persist the reachability engine cache between container runs (a fresh container otherwise downloads the engine on every--reachrun), how to keep image pulls cheap in CI, and how to inspect the provenance and SBOM.Verification
zizmor: no findings on either workflow.actionlint: only pre-existing findings (shellcheck info inrelease.yml, and it doesn't yet recognize the$/action syntax).imagetools create --dry-run -t … socketdev/cli:2.11.11produced an index with both platform manifests and bothattestation-manifestentries.Bumps to
2.11.12. #439 also targets2.11.12; whichever merges second rides that version and only needs the changelog merged.Fixes CE-433
🤖 Generated with Claude Code
Note
Low Risk
Changes are limited to CI workflows, documentation, and version metadata; runtime CLI behavior and image contents are unchanged aside from new attestations on future release builds.
Overview
Release Docker builds now publish an SPDX SBOM attestation alongside provenance by setting
sbom: trueondocker/build-push-actioninrelease.yml.The manual stable workflow no longer rebuilds from PyPI/Dockerfile. It validates the release version, confirms
socketdev/cli:<version>exists on Docker Hub, and usesdocker buildx imagetools createto pointsocketdev/cli:stableat that image so stable matches the release digest and keeps its attestations. QEMU is disabled in setup because nothing is built.Docs add a Docker image section in
docs/ci-cd.md(usage, reachability engine cache mounts, CI pull tips, inspecting provenance/SBOM). Version is bumped to 2.11.12 with matching changelog entries.Reviewed by Cursor Bugbot for commit 5e0a92a. Configure here.