Release Checklist¶
This document is intended for app maintainers and outlines the steps to perform when releasing a new version of the app.
Important
Before starting, make sure your local develop, main, and (if applicable) the current LTM branch are all up to date with upstream!
All Releases from develop¶
Verify CI Build Status¶
Ensure that continuous integration testing on the develop branch is completing successfully.
Bump the Version¶
Update the package version using poetry version if necessary (poetry docs). This command shows the current version of the project or bumps the version of the project and writes the new version back to pyproject.toml if a valid bump rule is provided.
The new version must be a valid semver string or a valid bump rule: patch, minor, major, prepatch, preminor, premajor, prerelease. Always try to use a bump rule when you can.
Display the current version with no arguments:
Update the Changelog¶
Note
- This project uses
towncrierto track human readable changes, so all merged PRs will have one or more entries in the release notes. - You will need to have the project's poetry environment built at this stage, as the towncrier command runs locally only. If you don't have it, run
poetry installfirst.
First, create a release branch off of develop (git switch -c release-X.Y.Z develop) and automatically generate release notes with invoke generate-release-notes.
Stage any remaining files and check the diffs to verify all of the changes are correct (git diff --cached).
Commit git commit -m "Release vX.Y.Z" and git push the staged changes.
Submit Release Pull Request¶
Submit a pull request titled Release vX.Y.Z to merge your release branch into main. Copy the documented release notes into the pull request's body.
Important
Do not squash merge this branch into main. Make sure to select Create a merge commit when merging in GitHub.
Once CI has completed on the PR, merge it.
Create a New Release in GitHub¶
Draft a new release with the following parameters.
- Tag: Input current version (e.g.
vX.Y.Z) and selectCreate new tag: vX.Y.Z on publish - Target:
main - Title: Version and date (e.g.
vX.Y.Z - 2024-04-02)
Publish the release!