ci: tag and release main from Conventional Commits - #17
Merged
Merged
Conversation
Chains off the same CI-on-main signal CD already uses. A feat: commit since the last tag earns a minor release, fix: a patch, and a declared breaking change always wins with a major release; a range with only docs/ci/build/test/chore commits is left unreleased so Dependabot bumps and doc tweaks don't spam the release list. Tags and GitHub Releases are created by the workflow only, never by hand. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5 tasks
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
Releaseworkflow that closes that gap.CDalready uses (workflow_runonCIcompleting successfully for a push tomain).feat:-> minor,fix:-> patch, a declared breaking change (type!:or aBREAKING CHANGEfooter) -> major. A range with onlydocs:/ci:/build:/test:/chore:commits (most Dependabot bumps, doc tweaks) is deliberately left unreleased.mainasvMAJOR.MINOR.PATCHand publishes a GitHub Release with--generate-notes. Tags/releases are created only by this workflow, never by hand, and never off a branch other thanmain.Verified the version-arithmetic and Conventional-Commit classification against this repo's actual history locally (a fresh run with no prior tag correctly computes
v0.1.0from the 15feat:commits merged so far; a simulatedv0.1.0..HEADrange over PR #16 alone correctly computes a minor bump).Test plan
ruff format --check .ruff check .mypypytest tests/unit tests/integration(same pre-existing local-only Windows temp-dir permission errors as before, unrelated to this change; all green on Linux CI)release.ymland dry-ran its bump logic against real git history