ci: restructure release pipeline into a single atomic release commit #95
Reference in New Issue
Block a user
Delete Branch "ci/restructure-release-pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Every merge to master previously produced three separate commits (bump
version -> update changelog, tagged here -> update README badges), so
the published tag never carried the current release's own README
badges, and the badge commit leaked into the next release's changelog
since no cliff.toml parser skipped it.
.gitea/scripts/release-commit.sh, used by both the merge-to-master
path and the hand-pushed-tag sync path, so every tag now points at
one complete "chore: release vX.Y.Z" commit. Push the commit and its
tag atomically.
reachable from master (rather than silently rewriting an unreviewed
tree), and builds a proper release commit via the same script when
it does need to correct a hand-pushed tag's version.
can only pass that guard if its commit is already on master, and
master is always fully checked, re-running the lint/type/test matrix
on tag pushes was redundant.
composite action (.gitea/actions/setup), fix
test'sneedstoinclude ruff-format, and bump actions/upload-artifact to v4.
Verified by dry-running release-commit.sh against a scratch worktree
for all three code paths (patch bump, --no-bump, explicit VERSION
sync), confirming idempotency and that the resulting commit carries
pyproject.toml, .bumpversion.toml, uv.lock, CHANGELOG.md and README.md
together.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01NnotyatakKNS4NLjDbfYw1