Skip to content

Commit 7fb99b5

Browse files
committed
docs: update RELEASING.md for new semi-automated release process
Updates the release documentation to reflect the new process using the Release Tracking Issue, comments (/prepare, /create-rc, /process-backports), and automated workflows.
1 parent f3fa8da commit 7fb99b5

1 file changed

Lines changed: 44 additions & 47 deletions

File tree

RELEASING.md

Lines changed: 44 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,54 +8,51 @@ existing Bazel workspace to sanity check functionality.
88

99
## Releasing from HEAD
1010

11-
These are the steps for a regularly scheduled release from HEAD.
11+
Releases are managed using a semi-automated process centered around a GitHub
12+
Release Tracking Issue and automated workflows triggered by comments or issue edits.
1213

1314
### Steps
1415

15-
1. Update the changelog and replace the version placeholders by running the
16-
release tool. The next version number will be automatically determined
17-
based on the presence of `VERSION_NEXT_*` placeholders and git tags. The
18-
tool will read all news entry files in the `news/` directory, assemble
19-
them into the changelog, and delete the processed news files.
20-
21-
```shell
22-
bazel run //tools/private/release
23-
```
24-
25-
If you want to append news entries to an already existing release section in
26-
the changelog (for example, to update a drafted release or a release
27-
branch), you can specify the version explicitly:
28-
29-
```shell
30-
bazel run //tools/private/release -- X.Y.Z
31-
```
32-
33-
1. Send these changes for review and get them merged.
34-
1. Create a branch for the new release, named `release/X.Y`
35-
```
36-
git branch --no-track release/X.Y upstream/main && git push upstream release/X.Y
37-
```
38-
39-
The next step is to create tags to trigger release workflow, **however**
40-
we start by using release candidate tags (`X.Y.Z-rcN`) before tagging the
41-
final release (`X.Y.Z`).
42-
43-
1. Create release candidate tag and push. The first RC uses `N=0`. Increment
44-
`N` for each RC.
45-
```
46-
git tag X.Y.0-rcN upstream/release/X.Y && git push upstream tag X.Y.0-rcN
47-
```
48-
2. Announce the RC release: see [Announcing Releases]
49-
3. Wait a week for feedback.
50-
* Follow [Patch release with cherry picks] to pull bug fixes into the
51-
release branch.
52-
* Repeat the RC tagging step, incrementing `N`.
53-
4. Finally, tag the final release tag:
54-
```shell
55-
git tag X.Y.0 upstream/release/X.Y && git push upstream tag X.Y.0
56-
```
57-
58-
Release automation will create a GitHub release and BCR pull request.
16+
1. **Create a Release Tracking Issue**: Go to the GitHub Issues page and create
17+
a new issue using the **Release Tracking Issue** template. This issue serves
18+
as the central hub and checklist for the release.
19+
20+
2. **Prepare the Release**: Comment `/prepare` on the tracking issue. This
21+
triggers the **Release: Prepare** workflow which:
22+
* Automatically determines the next version based on news entries.
23+
* Creates a `prepare-X.Y.Z` branch.
24+
* Updates `CHANGELOG.md` and version placeholders.
25+
* Creates a Pull Request with these changes.
26+
27+
3. **Review and Merge**: Review, approve, and merge the generated Pull Request.
28+
Once merged, the **Release: Complete Prepare** workflow will automatically
29+
mark the "Prepare Release" task as complete on the tracking issue checklist.
30+
31+
4. **Create Release Branch**: Manually check the **Create Release branch** box
32+
on the tracking issue checklist. This triggers the **Release: Create Release
33+
Branch** workflow, which cuts the `release/X.Y` branch.
34+
35+
5. **Tag Release Candidate (RC)**: Comment `/create-rc` on the tracking issue.
36+
This triggers the **Release: Create RC** workflow, which:
37+
* Tags the release branch with `X.Y.Z-rcN`.
38+
* Triggers the **Release: Publish** workflow to publish the release.
39+
40+
6. **Announce and Wait**: Announce the RC release (see [Announcing
41+
releases](#announcing-releases)) and wait for feedback.
42+
43+
7. **Handle Backports (if needed)**: If bugs need to be fixed in the release:
44+
* Cherry-pick the fixes into the release branch (see [Patch release with
45+
cherry picks]).
46+
* Add the backported PRs to the `## Backports` section of the tracking
47+
issue.
48+
* Comment `/process-backports` on the tracking issue to update the checklist.
49+
* Comment `/create-rc` again to tag a new RC (e.g. `rc1`).
50+
51+
8. **Final Release**: Once the RC is stable, promote it to final release by
52+
manually triggering the **Release: Promote RC** workflow from the GitHub
53+
Actions UI (or using `gh workflow run`), specifying the final version
54+
(e.g., `0.38.0`).
55+
5956

6057
### Manually triggering the release workflow
6158

@@ -105,8 +102,8 @@ The fix being included is commit `deadbeef`.
105102
If multiple commits need to be applied, repeat the `git cherry-pick` step for
106103
each.
107104

108-
Once the release branch is in the desired state, use `git tag` to tag it, as
109-
done with a release from head. Release automation will do the rest.
105+
Once the release branch is in the desired state, comment `/create-rc` on the
106+
tracking issue to tag it, as done with a release from head.
110107

111108
### Announcing releases
112109

0 commit comments

Comments
 (0)