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.3
or1.2.3b3
or1.2.3rc1
- The Git tag version format is
v{Ver}
, eg:v1.2.3
orv1.2.3b3
orv1.2.3rc1
- Version numbers are eg:
-
Update
kart/VERSION
to the new version number. -
Update the
project()
statement inCMakeLists.txt
to 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
release
indocs/conf.py
to the new version. -
Update any version numbers in
README.md
to point to the new version. -
Update
CHANGELOG.md
to 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.md
as 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.rb
andCasks/sno.rb
, updating theversion
andsha256
fields - Commit with a message like "Update to release v1.2.3"
- Push
- Get the SHA256 hash of the macOS PKG installer:
-
Update
kart/VERSION
to 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.dev0
appended. -
Update the
project()
statement inCMakeLists.txt
to the next patch release eg:1.2.4
. If it's an alpha/beta/rc release, then it should be set to the next release version. -
Commit with a message like "Set development version as v1.2.4.dev0" and push