-
Notifications
You must be signed in to change notification settings - Fork 22
Release process
Rico Haeuselmann edited this page Dec 1, 2022
·
8 revisions
GridTools doesn't have a fixed release cycle, but will release important patches and new features as they become available. GridTools uses semantic versioning. All functionality which is described in the documentation can be considered public API. The gridtools/common folder is not API.
The following describes the steps for making a GridTools major or minor release, patch releases are described afterwards.
- Ensure that documentation is up-to-date and fix if needed.
- Write release notes (if the gate-keeper did a good job, they items can be taken from the commit messages).
- Check if the CMake version number matches the planned release version and update if necessary.
- Compile the documentation and update the github-pages with the new documentation.
- Create the release on Github targeting the current master.
- Branch from the current master and push a branch
release_vX.Y
from which patch versions can be released. - (until implemented in CI) Release the python package on PyPI from the release branch.
cd .python_package pip install nox twine nox -s clean build twine upload dist/* # use the gridtools user credentials for PyPI
- Update the CMake version number in the
master
branch to the next minor release.
The following describes the steps for making a patch release.
- Cherry-pick a bugfix to the branch
branch_vX.Y
from which a patch release should be made. - Update CMake version number in the branch.
- Write short release notes.
- Create the release on Github targeting the current branch.
- (until implemented in CI) Release the python package on PyPI from the release branch. Same steps as above.
It's possible to pre-release a current development version on PyPI (for example to test with downstream projects).
- generate the missing files:
cd .python_package pip install nox nox -s clean prepare
- change the
version = x.y.z
line insetup.cfg
toversion = X.Y.Za1
, where X.Y.Z is the version you want to pre-release and the number after "a" is one higher than the last pre-release for that version. - build and release on test-pypi (use gridtools creds for test.pypi.org):
nox -s build pip install twine twine upload --repository-url=test.pypi.org/simple dist/*
- Check that the release works as desired.
- release on PyPI (use gridtools creds for pypi.org):
twine upload dist/*