Skip to content

chore: reset release-please and fix publish pipeline gaps - #20

Merged
jmgilman merged 1 commit into
masterfrom
session-007/reset-v1.0.0-v2
Apr 23, 2026
Merged

jmgilman merged 1 commit into
masterfrom
session-007/reset-v1.0.0-v2

Conversation

@jmgilman

Copy link
Copy Markdown
Contributor

Why

The first v1.0.0 release attempt (via PR #17's reset + PR #18 merge) shipped a draft release but never pushed the underlying git tag. `release.yml` triggers on tag push, so the whole pipeline deadlocked.

Two root causes:

  1. release-please-config.json missing `force-tag-creation`. With `draft: true`, release-please creates a draft GitHub Release that references a tag name but does NOT push the tag ref — GitHub only mints the tag when the release is un-drafted. That bootstrap deadlock breaks our tag-triggered pipeline. ghd-test's working config sets this flag.
  2. release.yml `verify-draft-release` job uses `contents: read`. The Releases API returns 404 for draft releases when the caller has only `contents: read`. Our wait-for-draft-release.sh silently saw a 404 and timed out. Bumping to `contents: write` (to match the other jobs) fixes it.

Also resets state that PR #18's merge re-bumped:

  • `.release-please-manifest.json`: back to 0.0.0.
  • `CHANGELOG.md`: deleted.

Out-of-band cleanup already completed:

Test plan

  • `actionlint .github/workflows/*.yml` passes.
  • On merge, release-please opens a fresh `chore(master): release 1.0.0` PR.
  • On merging that PR, release-please actually pushes the `v1.0.0` tag ref.
  • The tag push fires `release.yml`, all three jobs complete (verify-draft → build+attest via reusable → un-draft).
  • `gh attestation verify` against the published zip succeeds.

🤖 Generated with Claude Code

Two concrete pipeline fixes on top of the manifest/CHANGELOG reset:

1. release-please-config.json: add "force-tag-creation": true.
   Without this, release-please creates the GitHub release as draft
   (because draft: true) but does NOT push the underlying git tag
   ref — GitHub only creates the tag when the release is un-drafted.
   That deadlocks release.yml, which triggers on tag push. Matches
   the working ghd-test config.

2. release.yml verify-draft-release: bump contents: read to write.
   The Releases API returns 404 for draft releases when queried with
   contents: read. Our wait-for-draft-release.sh needs write-level
   access to view the draft. Other jobs already had contents: write.

Also resets the stuck state from the previous attempt:

- .release-please-manifest.json: back to 0.0.0.
- CHANGELOG.md: delete; release-please will regenerate it.

Out-of-band cleanup done before this PR: draft v1.0.0 release
deleted, v1.0.0 tag (manually created and useless without the fixes)
deleted, PR #19 closed, autorelease:tagged stripped from merged
PR #18.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jmgilman
jmgilman merged commit d03ae7e into master Apr 23, 2026
4 checks passed
@jmgilman
jmgilman deleted the session-007/reset-v1.0.0-v2 branch April 23, 2026 03:54
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