@@ -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`.
105102If multiple commits need to be applied, repeat the ` git cherry-pick ` step for
106103each.
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