|
| 1 | +# Version Release |
| 2 | + |
| 3 | +*Planet maintainers only* |
| 4 | + |
| 5 | +Releasing consists of publishing new packages to PyPi and ReadTheDocs, and |
| 6 | +is automated using Github Workflows and Actions. Once initiated, the |
| 7 | +release pipeline will automatically take care of building, testing, tagging, |
| 8 | +and publishing the release. |
| 9 | + |
| 10 | +## Versions and Stability |
| 11 | + |
| 12 | +This library follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html), |
| 13 | +and therefore only major releases should break compatibility. Minor versions |
| 14 | +may include new functionality, and patch versions address bugs or trivial |
| 15 | +changes (like documentation). |
| 16 | + |
| 17 | +## Release Workflow |
| 18 | + |
| 19 | +Releases should generally be published from the main branch, which should be |
| 20 | +kept stable. |
| 21 | + |
| 22 | +1. Create a release branch off of `main` that bumps the version number in |
| 23 | + [version.txt](./version.txt), and updates the |
| 24 | + [changelog.md](./docs/changelog.md). |
| 25 | +2. Collect all features targeted for the intended release in the branch, and |
| 26 | + create a PR to merge the release branch into `main`. |
| 27 | +3. Ensure that all tests are passing on `main` branch after all merges. |
| 28 | +4. Determine the type of release that should be performed. This will be passed |
| 29 | + to the release workflow as the `build-variant` argument: |
| 30 | + * `release` - The final build for a new release version. |
| 31 | + * `rc` - A candidate for the final release. |
| 32 | + * `beta` - A beta release. |
| 33 | + * `alpha` - An alpha release |
| 34 | + * `dev` - A development release. This is the default. |
| 35 | +5. Initiate a release by activating the [Release Orchestration Workflow](./.github/workflows/release-orchestrate.yml) pipeline: |
| 36 | + * The release pipeline may be initiated in the GUI. |
| 37 | + * The release pipeline may be initiated by the `gh` CLI as follows: |
| 38 | + ```bash |
| 39 | + gh workflow run .github/workflows/release-orchestrate.yml -f build-variant=_selected_release_variation_ |
| 40 | + * ``` |
| 41 | +
|
| 42 | +## Local Publishing |
| 43 | +
|
| 44 | +Most actions taken by the release pipeline are coded into the [noxfile.py](./noxfile.py), |
| 45 | +and so available for local execution. However, under normal circumstances |
| 46 | +releases should be driven by the CI/CD release pipeline and not performed |
| 47 | +locally. Local publishing skips the mechanism used to generate unique build |
| 48 | +numbers (which is not in the `noxfile.py`), and circumvents audit and review |
| 49 | +processes implemented by the CI/CD system and repository configuration. |
0 commit comments