Planet maintainers only
Releasing consists of publishing new packages to PyPi and ReadTheDocs, and is automated using Github workflows, actions, and webhooks. Once initiated, the release orchestration pipeline will automatically take care of building, testing, tagging, and publishing the release.
This library follows Semantic Versioning, and therefore only major releases should break compatibility. Minor versions may include new functionality, and patch versions address bugs or trivial changes (like documentation).
The main
branch is intended to be kept stable with the most up-to-date
feature set, and should normally be the branch used for new feature releases.
Patch branches may be necessary when the need to fix older versions arises.
To release a new version, complete the following steps:
- Create a release branch off of
main
that bumps the version number in version.txt, and updates the changelog.md. - Collect all features targeted for the intended release in the branch, and
create a PR to merge the release branch into
main
. - Ensure that all tests are passing on
main
branch after all merges. - Determine the type of release that should be performed. This will be passed
to the release workflow pipeline as the
build-variant
argument:release
- The final build for a new release version.rc
- A candidate for the final release.beta
- A beta release.alpha
- An alpha releasedev
- A development release. This is the default.
- Initiate a release by activating the Release Orchestration Workflow pipeline:
- The release pipeline may be initiated in the GUI.
- The release pipeline may be initiated by the
gh
CLI as follows:gh workflow run .github/workflows/release-orchestrate.yml -f build-variant=_selected_release_variation_
Most actions taken by the release pipeline are coded into the noxfile.py,
and so available for local execution. However, under normal circumstances
releases should be driven by the CI/CD release pipeline and not performed
locally. Local publishing skips the mechanism used to generate unique build
numbers (which is not in the noxfile.py
), and circumvents audit and review
processes implemented by the CI/CD system and repository configuration.