Skip to content

fix(release): annotate the vX.Y.Z tag so tagging survives tag.gpgsign - #16

Merged
opariffazman merged 1 commit into
mainfrom
fix/release-tag-gpgsign
Jun 29, 2026
Merged

opariffazman merged 1 commit into
mainfrom
fix/release-tag-gpgsign

Conversation

@opariffazman

Copy link
Copy Markdown
Contributor

Summary

release.sh cut the version tag with git tag "v$ver" (lightweight, no message); under tag.gpgsign/tag.forceSignAnnotated git forces a signed+annotated tag and aborts non-interactively with fatal: no tag message?, leaving the chore(release) commit on main with no matching tag. Passing -m makes the tag annotated (auto-signs when configured) so the commit and tag are always produced together.

Component(s)

release tooling (scripts/release.sh)

Type

  • Fixed — bug fix (PATCH)

Changes

  • scripts/release.sh: git tag "v$ver" → git tag -m "Release v$ver" "v$ver", with a comment explaining the tag.gpgsign requirement; message mirrors the existing v0.5.0 tag
  • CHANGELOG.md: [Unreleased] → ### Fixed entry

Validation

  • terraform fmt / validate / tflint pass on the changed components (the gate) — N/A, no Terraform changed; pre-commit hooks pass on the changed files
  • CHANGELOG.md [Unreleased] updated
  • Component README / root README updated if inputs or outputs changed — N/A

Reproduction / fix evidence

Before (sandbox, tag.gpgsign=true, non-interactive):

[main f9fcf2c] chore(release): v0.5.0
fatal: no tag message?      # exit 128 — commit made, tag never created

After — patched release.sh 0.2.0 end-to-end in a sandbox with tag.gpgsign=true: exits 0, creates the chore(release): v0.2.0 commit and an annotated v0.2.0 tag (Release v0.2.0) pointing at that same commit. The pre-push guard (check-release-tag.sh) inspects tag refs only, so it is unaffected by lightweight→annotated.

Closes #15

🤖 Generated with Claude Code

`git tag "v$ver"` requested a lightweight tag. With `tag.gpgsign` (or
`tag.forceSignAnnotated`) set, git instead makes a signed+annotated tag and
demands a message; a non-interactive run gets an empty editor result and aborts
with `fatal: no tag message?` (exit 128). The `chore(release)` commit was already
made by then, leaving a release commit on main with no matching tag.

Pass `-m "Release v$ver"` so the tag is annotated (auto-signs when configured)
and the commit + tag are always created together — matching the undo hint, which
assumes both exist. Message mirrors the existing v0.5.0 tag.

Closes #15

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@opariffazman
opariffazman requested a review from Lexxick as a code owner June 29, 2026 22:57
@github-actions

Copy link
Copy Markdown

📝 Changelog preview (draft)

Generated from Conventional Commits. Curate into CHANGELOG.md → ## [Unreleased] — trim noise, keep consumer-facing changes.

[Unreleased]

Fixed

  • release: Annotate the vX.Y.Z tag so tagging survives tag.gpgsign

@opariffazman opariffazman self-assigned this Jun 29, 2026
@opariffazman
opariffazman merged commit 0957ea3 into main Jun 29, 2026
9 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.

[bug] release: scripts/release.sh fails to tag when tag.gpgsign=true (no -m)

1 participant