Skip to content

fix: publish signed release artifacts (cosign v3 bundle format) - #72

Merged
MPV merged 1 commit into
masterfrom
claude/release-signing-bundle
Aug 8, 2026
Merged

MPV merged 1 commit into
masterfrom
claude/release-signing-bundle

Conversation

@MPV

@MPV MPV commented Aug 8, 2026

Copy link
Copy Markdown
Owner

What

Repairs release signing so a release actually ships artifacts — and does it as a releasable fix: so merging this cuts v0.3.1 and gets the first signed binaries out. v0.3.0 tagged/released but published nothing because signing aborted.

Root cause

cosign-installer pulls cosign v3, which removed sign-blob's --output-signature/--output-certificate flags in favour of a single Sigstore bundle. The old config aborted:

signing dist/checksums.txt: create bundle file: open : no such file or directory

Fix

signs:
  - cmd: cosign
    signature: "${artifact}.sigstore.json"
    args: [sign-blob, "--bundle=${signature}", "${artifact}", "--yes"]
    artifacts: checksum
    output: true

One checksums.txt.sigstore.json bundle (sig + cert + Rekor proof), covering every binary via checksums.txt. Verified against Sigstore's own .goreleaser.yml and GoReleaser's cosign v3 guidance (#6195). cosign stays current — no pin. docker_signs (cosign sign --yes) is unchanged (image signing wasn't affected). Verify instructions added to CONTRIBUTING.md.

On the fix: type

Strictly a .goreleaser.yaml change is ci:/build:, but v0.3.0's release is defective from a user's view (no downloadable/signed artifacts). Typing this fix: is the honest, practical framing — the user-facing effect is "signed binaries now publish" — and it's what makes merging this produce the release you want.

Result

Merge this → release-please opens a v0.3.1 Release PR → merge that → GoReleaser runs the fixed config → first fully signed release (binaries + .sigstore.json + image + SBOMs).

Supersedes

#70 (pin cosign) and #71 (hold signing) — both can be closed.

🤖 Generated with Claude Code

https://claude.ai/code/session_016RJcNXwJdwhtEgsfLfYKtv

@MPV
MPV force-pushed the claude/release-signing-bundle branch 2 times, most recently from f688b8f to 2c4737e Compare August 8, 2026 21:16
@MPV MPV changed the title ci: sign release artifacts with the cosign v3 bundle format fix: publish signed release artifacts (cosign v3 bundle format) Aug 8, 2026
v0.3.0 tagged and released but shipped no artifacts: GoReleaser aborted at the
signing step because cosign v3 (installed by cosign-installer) removed
sign-blob's --output-signature/--output-certificate flags in favour of a single
Sigstore bundle, so the old config failed with "create bundle file: open : no
such file or directory".

Migrate the checksum `signs` block to the bundle format: emit one
`checksums.txt.sigstore.json` via `--bundle=${signature}`, matching Sigstore's
own .goreleaser.yml and GoReleaser's cosign v3 guidance. cosign stays current
(no version pin); `docker_signs` (`cosign sign --yes`) is unchanged. With this,
the release publishes the binaries, checksums, SBOMs, image, and signatures.

Typed `fix:` intentionally so it cuts a release (v0.3.1) and gets the first
signed artifacts out — v0.3.0 published none. Verification lives in
CONTRIBUTING.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016RJcNXwJdwhtEgsfLfYKtv
@MPV
MPV force-pushed the claude/release-signing-bundle branch from 2c4737e to 03f9480 Compare August 8, 2026 21:20
@MPV
MPV merged commit 42f3eb8 into master Aug 8, 2026
1 check passed
@MPV
MPV deleted the claude/release-signing-bundle branch August 8, 2026 21:21
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