This process only supports a single release branch (master). It'll need to be expanded over time.
-
Make sure you're on
master. -
Check tests are all passing.
-
Decide on your version number. We use Semantic Versioning with PEP-440 version numbering:
- Version numbers are eg:
1.2.3or1.2.3b3or1.2.3rc1 - The Git tag version format is
v{Ver}, eg:v1.2.3orv1.2.3b3orv1.2.3rc1
- Version numbers are eg:
-
Update
kart/VERSIONto the new version number. -
Update the
project()statement inCMakeLists.txtto the new version number (<major>.<minor>.<patch>only). If it's an alpha/beta/rc release, then it should be set to the release version. -
Update the
releaseindocs/conf.pyto the new version. -
Update any version numbers in
README.mdto point to the new version. -
Update
CHANGELOG.mdto refer to the new version (ie, make sure it doesn't say "UNRELEASED" next to all the latest changes.) -
Commit with a message like "Release v1.2.3", and push the commit.
$ git commit -m "Release v1.2.3" $ git push
-
Tag the release with the Git tag version format and push the tag.
$ git tag v1.2.3 $ git push origin v1.2.3
-
CI will build and sign the installers and packages, and create a new draft release in github. Check CI passes and the RPM/DEB/MSI/PKG archives are all attached.
-
Write the release notes. Use
CHANGELOG.mdas a starting point. Topic/section suggestions:- Overview
- New features
- Compatibility / Upgrading
- Bugs fixed
- External Contributors
-
Release the new release by clicking "Publish release".
-
If it's not an alpha/beta/candidate release, update the Homebrew Tap:
- Get the SHA256 hash of the macOS PKG installer:
sha256 Kart-1.2.3.pkg - Pull homebrew-kart
- Edit both
Casks/kart.rbandCasks/sno.rb, updating theversionandsha256fields - Commit with a message like "Update to release v1.2.3"
- Push
- Get the SHA256 hash of the macOS PKG installer:
-
Update
kart/VERSIONto the next development Python version eg:1.2.4.dev0. If it's an alpha/beta/rc release, then it should be set to the next release version with.dev0appended. -
Update the
project()statement inCMakeLists.txtto the next patch release eg:1.2.4 -
Commit with a message like "Set development version as v1.2.4.dev0" and push