DLA-Future follows Semantic Versioning.
-
Update the following files via a PR to the
master
branch:-
Write release notes in
CHANGELOG.md
. Check for issues and pull requests for the release on the DLA-F Planning board. Make sure to include changes that may affect users, such as API changes, bugfixes, performance improvements, dependency updates. Changes that do not directly affect users may be left out, such as CI changes, miscellaneous Spack package updates, documentation updates, or utility script updates. All list entries and paragraphs must be on a single line for correct formatting on GitHub. -
Update the version in
CMakeLists.txt
. -
Update the versions and date in
CITATION.cff
. -
When making a post-1.0.0 major release, remove deprecated functionality if appropriate.
-
Update the minimum required versions if necessary.
-
Add a link to the documentation for the release in
DOCUMENTATION.md
and update the link inREADME.md
. The documentation will be generated automatically after thevX.Y.Z
tag has been created and pushed.
-
-
Merge all the changes for the release to the
master
branch (also for patch releases), including the above changes to version, documentation, etc. -
Ensure you have
gh
(GitHub CLI) installed. Rungh auth login
to authenticate with your GitHub account, or setGITHUB_TOKEN
to a token withpublic_repo
access. -
Ensure you are working from the
eth-cscs/DLA-Future
and not your own fork for following steps. -
For minor and major releases: check out the
master
branch. For patch releases: check out the correspondingversion_major.minor
branch. If it doesn't exist yet, create it from thevX.Y.0
tag. -
For patch releases: cherry pick the commits for the patch from
master
to theversion_X.Y
branch. Make sure the cherry-picked commits are listed in theCHANGELOG.md
, and make sure you cherry-picked the PR(s) updating all the above (version, documentation, etc.). -
Check the release branch to make sure the content matches the release notes.
-
Wait for CI tests to pass before making a release. CI is automatically triggered for
master
andversion_*
branches. -
Create a release on GitHub using the script
scripts/roll_release.sh
. This script automatically tags the release with the corresponding release number. -
Update Spack recipe in
spack/packages/dla-future/package.py
adding the new release. -
Synchronize upstream spack package with local repository. Exclude blocks delimited by
###
comments. These are only intended for the internal Spack package. -
Delete your
GITHUB_TOKEN
if created only for the release. -
Create a new milestone named
vX.Y.Z
for the next major or minor release. -
Modify the release procedure if necessary.