Skip to content

Commit d84933e

Browse files
RELEASE.md file
1 parent 6944d9c commit d84933e

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

RELEASE.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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

Comments
 (0)