feat: GitHub workflow–based release strategy (PAPI-4873)#551
feat: GitHub workflow–based release strategy (PAPI-4873)#551olivermeyer wants to merge 1 commit intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Introduces a GitHub Actions–driven, multi-step release process to decouple version bumping from tagging/publishing, enabling Ketryx approvals to be collected before the publish-triggering tag is created.
Changes:
- Split release automation into three manual (
workflow_dispatch) workflows: prepare release branch, publish/tag release, and merge release back tomain. - Removed local “bump + tag + push” automation (Makefile + nox) and updated bump-my-version config to stop tagging during bumps.
- Updated CI triggers to run on
release/v*branches and refreshed contributor/docs guidance for the new release flow.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Disables bump-my-version tagging and removes changelog hooks from the bump step. |
noxfile.py |
Removes the bump nox session that previously pushed tags. |
Makefile |
Adds prepare-release, publish-release, merge-release targets that trigger GH workflows via gh. |
CONTRIBUTING.md |
Documents the new phased release workflow and updated commands. |
CLAUDE.md |
Updates release/version bump documentation to the workflow-based approach. |
.github/workflows/prepare-release.yml |
New workflow to create release/vX.Y.Z and bump versions without tagging. |
.github/workflows/publish-release.yml |
New workflow to generate changelog, create annotated tag, and push (triggering publish pipeline). |
.github/workflows/merge-release.yml |
New workflow to merge release branch into main and delete it. |
.github/workflows/ci-cd.yml |
Extends CI to run on release/v* branch pushes and adjusts skip logic. |
.github/CLAUDE.md |
Updates CI/CD documentation to include the new release workflows and branch triggers. |
c24134a to
cf41d3f
Compare
cf41d3f to
9ec1af6
Compare
9ec1af6 to
6cb5908
Compare
|
Codecov Report✅ All modified and coverable lines are covered by tests. |
arne-aignx
left a comment
There was a problem hiding this comment.
LGTM. As a start.
I checked the workflow on a high-level. The steps will act as expected.
Looking forward to verification for the next release.
An auditor would also look for an automated check as mentioned in the workflow. This should be the next step.



Why?
The previous release process used
make bumpto bump the version, create a git tag, and push all in one local step. This made it impossible to collect Ketryx compliance approvals before publishing, because the tag that triggers the CI/CD publish pipeline was created simultaneously with the version bump.How?
Splits the release into three server-side GitHub Actions workflows triggered via
gh workflow run:prepare-release.ymlcreates arelease/vX.Y.Zbranch and bumps version files (no tag yet)publish-release.ymlgeneratesCHANGELOG.md, commits it, creates the annotated tag, and pushesmerge-release.ymlmerges the release branch back intomainand deletes it