:::{admonition} This page is intended for maintainers of the project only :class: seealso
You need to have push-access to the project's repository to make releases. Therefore, the following release steps are intended to be used as a reference for maintainers or collaborators with push-access to the repository. :::
- Review the
## Unreleased changessection at the top of the {repo-file}docs/reference/changelog.mdfile and, if necessary, group and/or split entries into relevant subsections (e.g., Features, Docs, Bugfixes, Security, etc.). Take a look at previous release notes for guidance and try to keep the format consistent. You can also use the./cicd_utils/find-unmentioned-prs.shhelper script to find merged PRs that were not mentioned in the changelog yet. - Review new usages of
.. versionadded::,.. versionchanged::, and.. deprecated::directives that were added to the documentation since the last release. If necessary, update the version numbers in these directives to reflect the new release version.- You can determine the latest release version by running
git describe --tags --abbrev=0on themainbranch. Based on this, you can determine the next release version by incrementing the relevant MAJOR, MINOR, or PATCH numbers.
- You can determine the latest release version by running
- IMPORTANT: Remember to switch to the
mainbranch and pull the latest changes before proceeding.git switch main git pull
- Use the bumpversion utility to automatically bump the current version, apply a relevant changes to the repository, and create a new commit and git tag. E.g.,
You can always perform a dry-run to see what will happen under the hood.
# MAJOR release (e.g., 0.4.2 -> 1.0.0) SKIP='no-commit-to-branch' bumpversion major # MINOR release (e.g., 0.4.2 -> 0.5.0) SKIP='no-commit-to-branch' bumpversion minor # PATCH release (e.g., 0.4.2 -> 0.4.3) SKIP='no-commit-to-branch' bumpversion patch
bumpversion --dry-run --verbose [--allow-dirty] [major,minor,patch]
- DANGER: Push your changes along with the new git tag to the remote repository.
git push --follow-tags
- At this point, a couple of GitHub Actions workflows will be triggered:
- {repo-file}
.github/workflows/ci.yml: Runs all integration approval checks. - {repo-file}
.github/workflows/release.yml: Builds and publishes the new packaged Python distributions to PyPi (and TestPyPi) and publishes a new GitHub Release with relevant release notes and Sigstore-certified built distributions.
- {repo-file}
- Trust but verify!
⚠️ - Verify that all workflows run successfully;
- Verify that the new git tag is present in the remote repository;
- Verify that the new release is present in the remote repository;
- and that the release notes were correctly parsed
- and that the relevant assets were correctly uploaded
- Verify that the new package is available in PyPI;
- Verify that the docs were updated and published to ReadTheDocs.