fix(release): draft→publish pipeline to fix immutable release asset upload#223
Merged
Conversation
…pload (#222) release-plz.toml: add git_release_draft = true to telepath-wire so GitHub Releases are created as drafts. Fixes the structural incompatibility with immutable releases where `gh release upload` after publish returned HTTP 422. release-binaries.yml: convert from `release: published` trigger to `workflow_call` + `workflow_dispatch` with optional `tag` input. New `publish` job calls `gh release edit --draft=false` after all four builds succeed, publishing the draft with assets already attached. release-plz.yml: add `tag` output to `release-plz-release` (extracted from release-plz JSON output) and new `release-binaries` job that calls `release-binaries.yml` via workflow_call immediately after release-plz creates the draft. CHANGELOG.md: fix broken headers (## [x]([`x`](url)) → ## [x](url)), reconstruct v0.2.1 and v0.2.2 entries from correct git log ranges, fix v0.2.0 "5 platforms" → "4 platforms". AGENTS.md, docs/releasing.md: document draft→publish flow and recovery. Closes #222 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the release flow so release-plz creates draft GitHub Releases, the binary workflow attaches assets before publication, and the release is then published to avoid immutable-release upload failures.
Changes:
- Configures
release-plzto create draft releases and updates changelog header generation. - Converts binary release publishing to a reusable/manual workflow with a final publish job.
- Updates release docs, AGENTS guidance, and reconstructed changelog entries.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
release-plz.toml |
Enables draft releases and updates changelog template formatting. |
.github/workflows/release-binaries.yml |
Builds/uploads release binaries through workflow_call/manual dispatch and publishes after uploads. |
.github/workflows/release-plz.yml |
Extracts the release tag and invokes the binary release workflow after release-plz. |
CHANGELOG.md |
Fixes malformed release headers and adjusts recent release notes. |
AGENTS.md |
Documents the new draft-to-publish release flow and workflow triggers. |
docs/releasing.md |
Adds operational guidance for draft publishing, retries, and backfills. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
9 tasks
…existing entries Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
release-binaries.ymluploaded assets viagh release uploadafter publication. With immutable releases enabled, this always fails with HTTP 422.git_release_draft = true);release-binaries.ymlattaches 4 prebuilt binaries to the draft, then publishes it viagh release edit --draft=false. Immutable lock applies only after all assets are attached.## [x]([x](url))headers), CHANGELOG.md v0.2.1/v0.2.2 content reconstructed from correct git log ranges, v0.2.0 "5 platforms" → "4 platforms", AGENTS.md and docs/releasing.md updated.Changes
release-plz.tomlgit_release_draft = truetotelepath-wire; fix changelog header template.github/workflows/release-binaries.ymlworkflow_call+workflow_dispatch(tag); removerelease: published; addpublishjob.github/workflows/release-plz.ymltagoutput torelease-plz-release; addrelease-binariesjob viaworkflow_callCHANGELOG.mdAGENTS.mddocs/releasing.mdTest plan
cargo test --workspace)cargo clippy --workspace -- -D warningscleancargo fmt --all -- --checkcleangh release view vX.Y.Z --json assetsshows 4 assets and--json isImmutableshowstruegh workflow run release-binaries.yml --ref main(no tag) → 4 artifacts as workflow artifacts, no release touchedPost-merge backfill (tracked in #222)
gh workflow run release-binaries.yml -f tag=v0.1.0+ fix release notesCloses #222
🤖 Generated with Claude Code