Skip to content

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.

Release

The following describes the steps for making a GridTools major or minor release, patch releases are described afterwards.

  1. Ensure that documentation is up-to-date and fix if needed.
  2. Write release notes (if the gate-keeper did a good job, they items can be taken from the commit messages).
  3. Check if the CMake version number matches the planned release version and update if necessary.
  4. Compile the documentation and update the github-pages with the new documentation.
  5. Create the release on Github targeting the current master.
  6. 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.
  7. Branch from the current master and push a branch release_vX.Y from which patch versions can be released.
  8. Update the CMake version number in the master branch to the next minor release.

Patch release

The following describes the steps for making a patch release.

  1. Cherry-pick a bugfix to the branch release_vX.Y from which a patch release should be made.
  2. Update CMake version number in the branch.
  3. Write short release notes.
  4. Create the release on Github targeting the release branch branch.
  5. Release the python package on PyPI. Same steps as above.

Pre-release (Python package only)

It's possible to pre-release a current development version on PyPI (for example to test with downstream projects).

  1. generate the missing files:
    cd .python_package
    pip install nox
    nox -s clean prepare
  2. change the version = x.y.z line in setup.cfg to version = 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.
  3. 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/*
  4. Check that the release works as desired.
  5. release on PyPI (use gridtools creds for pypi.org):
    twine upload dist/*