This document describes how releases are managed for dns-benchmark-tool.
-
Create a release branch
- From
main, create a branch namedrelease/x.y.z. - Example:
release/0.2.1.
- From
-
Make changes
- Update
pyproject.tomlandsrc/dns_benchmark/__init__.pywith the new version. - Update changelog or documentation as needed.
- Commit changes with signed commits.
- Update
-
Push the branch
git push origin release/x.y.z
-
Open a Pull Request
- Target branch:
main. - CI must pass before merge.
- Branch protection rules apply (signed commits, tests, etc.).
- Target branch:
-
Merge the PR
- Once stable, merge
release/x.y.zintomain. - At this point,
mainreflects the new version.
- Once stable, merge
-
Tag the release
-
After merging, create and push a tag on
main:git checkout main git pull origin main git tag vX.Y.Z git push origin vX.Y.Z
-
Example:
v0.2.1.
-
-
Publish
- GitHub Actions sees the tag and publishes the package to PyPI.
- Verify the new version is available on PyPI.
- Do not push tags from release branches. Tags should only be created on
mainafter the PR is merged. - One tag per version. PyPI does not allow re‑uploads of the same version.
- Iterate freely on the release branch until you are satisfied, then merge and tag.
- Only the maintainer (with write access) should create and push release tags.
For urgent bug fixes:
- Create a new branch from
mainnamedrelease/x.y.z(next patch version). - Apply the fix, commit, and push.
- Open a PR into
main, merge once CI passes. - Tag the merge commit (
vX.Y.Z) to publish the hotfix.