Skip to content

feat(supply-chain): verify multi-arch image manifests post-release (#5)#33

Merged
awbx merged 1 commit into
mainfrom
feat/supply-chain-verify-images
May 19, 2026
Merged

feat(supply-chain): verify multi-arch image manifests post-release (#5)#33
awbx merged 1 commit into
mainfrom
feat/supply-chain-verify-images

Conversation

@awbx
Copy link
Copy Markdown
Owner

@awbx awbx commented May 19, 2026

Closes #5.

Summary

Adds a post-release `verify-images` job that runs `docker manifest inspect` on both registries and asserts `linux/amd64` + `linux/arm64` are both listed. Documents the multi-arch pull pattern in the README and the Helm chart.

What changes

File Change
`.github/workflows/release.yml` New `verify-images` job parallel to `provenance` / `verify-provenance`. Asserts both registries serve a manifest list with both expected platforms. Fails red if either is missing.
`README.md` Install section now documents `docker pull awbx/cronix:` (no arch suffix) as the canonical form, with both registries shown.
`deploy/helm/cronix/README.md` New §Architecture explaining the chart pulls a multi-arch image and works in mixed-arch clusters without changes.

Discovered along the way: GHCR was private

`ghcr.io/awbx/cronix` was set to private package visibility when first published. Anonymous pulls returned 401, which silently broke the `cosign verify ghcr.io/awbx/cronix:-amd64` example in the README — every adopter following the verify-a-release instructions would have hit a wall.

Flipped to public via the GitHub UI in the same session as opening this PR. Verified anonymous pull works post-flip. Docker Hub was already public.

Out of scope

Test plan

  • CI: all 7 required checks pass — note that the new `verify-images` job only runs on tag pushes, so the PR itself won't exercise it
  • First real exercise: cut `v0.10.3` after merge; `verify-images` should pass and emit a notice for each registry

GoReleaser already produces multi-arch manifest lists for every
release via the docker_manifests: block. Verified manually against
v0.10.2: both registries serve linux/amd64 + linux/arm64 under the
plain tag, so users get the right variant from docker pull without
specifying an arch suffix. What was missing was the regression
safety net + the docs to tell users this works.

What ships in this change:

- .github/workflows/release.yml — new verify-images job, runs after
  goreleaser publishes. docker manifest inspect against both
  ghcr.io/awbx/cronix:<version> and docker.io/awbx/cronix:<version>,
  asserting both linux/amd64 and linux/arm64 platforms are listed.
  Fails the release workflow loudly if docker_manifests: gets
  dropped from .goreleaser.yaml or if a per-arch build silently
  fails to push.

- README.md — Install section now documents the multi-arch pull
  pattern explicitly. Previously suggested "docker pull awbx/cronix"
  with no version, which works but doesn't surface that arm64 is
  supported.

- deploy/helm/cronix/README.md — new Architecture section
  documenting that the chart resolves the right image variant
  per node automatically, including in mixed-arch clusters. Calls
  out the per-arch tag override pattern for users who want to pin.

Out of scope:

- Arm64 smoke job (qemu-based "cronix version" run in CI). The
  third bullet from #5's acceptance criteria. Worth a follow-up;
  not blocking now that the manifest list itself is verified.

Note: GHCR package visibility was flipped to public in the same
session as this PR. Before the flip, ghcr.io/awbx/cronix was 403
to anonymous pulls, which would have made the cosign verify
example in the README's §Verify a release fail for everyone but
the owner. Verified anonymous pull works post-flip.

Signed-off-by: Abdelhadi Sabani <asabani.work@gmail.com>
@awbx awbx merged commit 0cf5293 into main May 19, 2026
8 checks passed
@awbx awbx deleted the feat/supply-chain-verify-images branch May 19, 2026 18:03
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.

supply-chain: verify arm64 container images end-to-end

1 participant