Skip to content

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.

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. Branch from the current master and push a branch release_vX.Y from which patch versions can be released.
  7. (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
  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 branch_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 current branch.
  5. (until implemented in CI) Release the python package on PyPI from the release branch. 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):
    nox -s build
    pip install twine
    twine upload --repository-url=test.pypi.org/simple dist/*
  4. Check that the release works as desired.
  5. release on PyPI (use gridtools creds for pypi.org):
    twine upload dist/*
Clone this wiki locally