release: automate GitHub release creation after publish - #146
Merged
Conversation
v2.2.0's GitHub release had to be created by hand after the fact, because release.yml only ran CI and uv publish — the same gap existed for every prior tag. Add a github-release job that runs after publish succeeds, extracts the tag's own section from CHANGELOG.md, and calls gh release create with it, so a tag push produces the PyPI upload and the GitHub release together. Co-Authored-By: Claude Sonnet 5 <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
github-releasejob torelease.yml, gated onneeds: publish, so a tag push now produces the PyPI upload and the GitHub release in one automated pipeline.## [X.Y.Z]section fromCHANGELOG.mdviaawkand passes it straight togh release create --notes-file, so release notes have one source of truth instead of being retyped by hand.netprotocols X.Y.Z. Marked--latest, consistent with how v1.0.0 through v2.2.0 were released manually.Why
Every GitHub release through v2.2.0 (including the one just published) had to be created by hand after the tag/CI/publish pipeline finished —
release.ymlnever had a step for it. This closes that gap.Test plan
uv run pytest tests/test_workflows.py— all 4 wiring assertions pass (publish still gated onci, no reference wiring broken)awkextraction in the new step produces output byte-identical to the CHANGELOG section manually used for the actual v2.2.0 releasepython3 -c "import yaml; yaml.safe_load(...)"confirms the edited YAML parses🤖 Generated with Claude Code