-
Notifications
You must be signed in to change notification settings - Fork 21
Release process
Hannes Vogt edited this page Aug 16, 2023
·
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.
- Test the test.pypi.org release which was created in the previous step with GT4Py or other useful test cases. If ok, to deploy to release pypi, go to Actions and run the Python Package Tests and Deploy workflow, targeting the release tag.
- Branch from the current master and push a branch
release_vX.Y
from which patch versions can be released. - 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
release_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 release branch branch.
- Release the python package on PyPI. 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):
pip install build, twine python -m build twine upload --repository testpypi dist/*
- Check that the release works as desired.
- release on PyPI (use gridtools creds for pypi.org):
twine upload dist/*