This guide is for maintainers. Contributors do not need to follow these steps.
This document describes the release process for AutoTLS. It's intended for maintainers only.
mainis always stable and production-ready.- New work comes in via feature/fix branches and PRs.
- Releases are staged on dedicated release branches
(
release/x.y.z). - Contributors do not tag or version-bump --- maintainers handle releases.
We use Semantic Versioning:
- MAJOR → incompatible API/behavior changes
- MINOR → new features, backwards-compatible
- PATCH → bug fixes or internal improvements
-
Collect PRs into the current release branch:
- Retarget PRs to
release/x.y.z(Open the PR, Edit, and select the desired release branch from the base branch drop-down menu. Confirm the change by clicking "Change base.")
- Retarget PRs to
-
Stabilize the release branch:
- Only accept fixes and docs updates.
- Confirm automated tests pass.
- Update docs/CHANGELOG.
-
Bump version in
pyproject.toml:git add pyproject.toml git commit -m "Release: vX.Y.Z" git push origin release/x.y.z -
Merge back and tag:
git checkout main git pull origin main git merge --no-ff release/x.y.z git push origin main git tag vX.Y.Z git push origin vX.Y.Z
Merge policy:
- Feature PRs into a release branch should be Squash merged (to keep history tidy).
- Release branch PRs back into
mainmust be merged using a Merge commit (no-ff).
Do not squash the release branch → main PR, otherwise future release PRs will look like they reintroduce old changes.
-
Create a GitHub Release for the tag:
- Go to Releases → Draft a new release, select tag vx.y.z.
- Click Auto-generate release notes (edit if needed).
- Publish.
-
Create a new release branch from
main:git checkout main git pull origin main git checkout -b release/x.y.z+1 git push -u origin release/x.y.z+1
-
Delete the old release branch:
git branch -d release/x.y.z git push origin --delete release/x.y.z
-
Open the next milestone (e.g.,
vx.y.z+1).- Assign PRs/issues to this milestone so it’s clear what’s targeted for the upcoming release.
-
Keep a draft changelog or GitHub Release notes for upcoming changes.