The current target is to produce a new (minor) release once a month.
pika follows Semantic Versioning.
- For minor and major releases: create and check out a new branch at an
appropriate point on
main
with the namerelease-major.minor.X
.major
andminor
should be the major and minor versions of the release. For patch releases: check out the correspondingrelease-major.minor.X
branch. - Write release notes in
CHANGELOG.md
. - Make sure
PIKA_VERSION_MAJOR/MINOR/PATCH
inCMakeLists.txt
contain the correct values. Change them if needed. - When making a post-1.0.0 major release, remove deprecated functionality if appropriate.
- Update the minimum required versions if necessary.
- Repeat the following steps until satisfied with the release.
- Change
PIKA_VERSION_TAG
inCMakeLists.txt
to-rcN
, whereN
is the current iteration of this step. Start with-rc1
. - Create a pre-release on GitHub using the script
tools/roll_release.sh
. This script automatically tags with the corresponding release number. - Add patches as needed to the release candidate until the next release candidate, or the final release.
- Change
- Change
PIKA_VERSION_TAG
inCMakeLists.txt
to an empty string. - Add the release date to the caption of the current
CHANGELOG.md
section and change the value ofPIKA_VERSION_DATE
inCMakeLists.txt
. - Create a release on GitHub using the script
tools/roll_release.sh
. This script automatically tags the release with the corresponding release number. - Merge release branch into
main
. - Modify the release procedure if necessary.
- Change
PIKA_VERSION_TAG
inCMakeLists.txt
back to-trunk
. - Update spack (
https://github.com/spack/spack
).