Skip to content

Commit d87cf1a

Browse files
Add instructions in the release process for additional sanity checks reg backporting (#13180)
1 parent f791c4b commit d87cf1a

1 file changed

Lines changed: 37 additions & 25 deletions

File tree

‎RELEASING.md‎

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ would be used to create all `v1.7` tags (e.g. `v1.7.0`, `v1.7.1`).
4646
for issues that won't make the cut. Check if any of them can be
4747
closed. Be aware of the issues with the [TODO:release blocker][] label.
4848
Consider reaching out to the assignee for the status update.
49-
2. For `master`, change root build files to the next minor snapshot (e.g.
49+
1. For `master`, change root build files to the next minor snapshot (e.g.
5050
``1.8.0-SNAPSHOT``).
5151

5252
```bash
@@ -59,22 +59,22 @@ would be used to create all `v1.7` tags (e.g. `v1.7.0`, `v1.7.1`).
5959
./gradlew build
6060
git commit -a -m "Start $MAJOR.$((MINOR+1)).0 development cycle"
6161
```
62-
3. Go through PR review and submit.
63-
4. Create the release branch starting just before your commit and push it to GitHub:
62+
1. Go through PR review and submit.
63+
1. Create the release branch starting just before your commit and push it to GitHub:
6464

6565
```bash
6666
git fetch upstream
6767
git checkout -b v$MAJOR.$MINOR.x \
6868
$(git log --pretty=format:%H --grep "^Start $MAJOR.$((MINOR+1)).0 development cycle" upstream/master)^
6969
git push upstream v$MAJOR.$MINOR.x
7070
```
71-
5. Continue with Google-internal steps at go/grpc-java/releasing, but stop
71+
1. Continue with Google-internal steps at go/grpc-java/releasing, but stop
7272
before `Auto releasing using kokoro`.
73-
6. Create a milestone for the next release.
74-
7. Move items out of the release milestone that didn't make the cut. Issues that
73+
1. Create a milestone for the next release.
74+
1. Move items out of the release milestone that didn't make the cut. Issues that
7575
may be backported should stay in the release milestone. Treat issues with the
7676
'release blocker' label with special care.
77-
8. Begin compiling release notes. This produces a starting point:
77+
1. Begin compiling release notes. This produces a starting point:
7878

7979
```bash
8080
echo "## gRPC Java $MAJOR.$MINOR.0 Release Notes" && echo && \
@@ -90,12 +90,23 @@ Tagging the Release
9090
-------------------
9191

9292
1. Verify there are no open issues in the release milestone. Open issues should
93-
either be deferred or resolved and the fix backported. Verify there are no
94-
[TODO:release blocker][] nor [TODO:backport][] issues (open or closed), or
95-
that they are tracking an issue for a different branch.
96-
2. Ensure that the Google-internal steps
93+
either be deferred or resolved and the fix backported, to atleast 2 most recent
94+
branches as a rule of thumb. Verify there are no [TODO:release blocker][] nor
95+
[TODO:backport][] issues (open or closed), or that they are tracking an issue for
96+
a different branch. Before removing the `TODO:backport` label double-check to make
97+
sure that there has been no missed backport of the issue in the latest branch cut
98+
either due to
99+
1. Mistyping the latest minor version branch to backport it to OR
100+
1. Concurrent branching activities: There's a time window there where you can lose a
101+
backport where the branch didn't exist. One engineer might be making a branch cut and
102+
concurrently another engineer might be making a fix to the master branch and backporting
103+
it to only the most recent minor version branch before the branch cut currently being made.
104+
1. Keep a tab over the commits made on master since the branch cut, to check if any commits
105+
standout or look suspicious that it should be backported, and check with the PR author if
106+
necessary.
107+
1. Ensure that the Google-internal steps
97108
at go/grpc-java/releasing#before-tagging-a-release are completed.
98-
3. For vMajor.Minor.x branch, change `README.md` to refer to the next release
109+
1. For vMajor.Minor.x branch, change `README.md` to refer to the next release
99110
version. _Also_ update the version numbers for protoc if the protobuf library
100111
version was updated since the last release.
101112

@@ -110,7 +121,7 @@ Tagging the Release
110121

111122
git commit -a -m "Update README etc to reference $MAJOR.$MINOR.$PATCH"
112123
```
113-
4. Change root build files to remove "-SNAPSHOT" for the next release version
124+
1. Change root build files to remove "-SNAPSHOT" for the next release version
114125
(e.g. `0.7.0`). Commit the result and make a tag:
115126

116127
```bash
@@ -121,7 +132,7 @@ Tagging the Release
121132
git commit -a -m "Bump version to $MAJOR.$MINOR.$PATCH"
122133
git tag -a v$MAJOR.$MINOR.$PATCH -m "Version $MAJOR.$MINOR.$PATCH"
123134
```
124-
5. Change root build files to the next snapshot version (e.g. `0.7.1-SNAPSHOT`).
135+
1. Change root build files to the next snapshot version (e.g. `0.7.1-SNAPSHOT`).
125136
Commit the result:
126137

127138
```bash
@@ -135,7 +146,7 @@ Tagging the Release
135146
git push -u origin release-v$MAJOR.$MINOR.$PATCH
136147
```
137148
Raise a PR and set the base branch of the PR to v$MAJOR.$MINOR.x of the upstream grpc-java repo.
138-
6. Go through PR review and push the release tag and updated release branch to
149+
1. Go through PR review and push the release tag and updated release branch to
139150
GitHub (DO NOT click the merge button on the GitHub page):
140151

141152
```bash
@@ -144,25 +155,25 @@ Tagging the Release
144155
git push upstream v$MAJOR.$MINOR.x
145156
git push upstream v$MAJOR.$MINOR.$PATCH
146157
```
147-
7. Close the release milestone.
158+
1. Close the release milestone.
148159

149-
8. Trigger build as described in "Auto releasing using kokoro" at
160+
1. Trigger build as described in "Auto releasing using kokoro" at
150161
go/grpc-java/releasing.
151162

152163
It runs three jobs on Kokoro, one on each platform. See their scripts:
153164
`linux_artifacts.sh`, `windows.bat`, and `macos.sh`. The mvn-artifacts/
154165
outputs of each script is combined into a single folder and then processed
155166
by `upload_artifacts.sh`, which signs the files and uploads to Sonatype.
156167

157-
9. Once all of the artifacts have been pushed to the staging repository, the
168+
1. Once all of the artifacts have been pushed to the staging repository, the
158169
repository should have been closed by `upload_artifacts.sh`. Closing triggers
159170
several sanity checks on the repository. If this completes successfully, the
160171
repository can then be `released`, which will begin the process of pushing
161172
the new artifacts to Maven Central (the staging repository will be destroyed
162173
in the process). You can see the complete process for releasing to Maven
163174
Central on the [OSSRH site](https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#deploying).
164175

165-
10. We have containers for each release to detect compatibility regressions with
176+
1. We have containers for each release to detect compatibility regressions with
166177
old releases. Generate one for the new release by following the [GCR image
167178
generation instructions][gcr-image]. Summary:
168179
```bash
@@ -182,9 +193,9 @@ Tagging the Release
182193

183194
# Create a PR with the `release notes: no` label and run ad-hoc test against your PR
184195
```
185-
[gcr-image]: https://github.com/grpc/grpc/blob/master/tools/interop_matrix/README.md#step-by-step-instructions-for-adding-a-gcr-image-for-a-new-release-for-compatibility-test
196+
[gcr-image]: https://github.com/grpc/grpc/blob/master/tools/interop_matrix/README.md#step-by-step-instructions-for-adding-a-gcr-image-for-a-new-release-for-compatibility-test
186197

187-
11. Update gh-pages with the new Javadoc. Generally the file is on repo1
198+
1. Update gh-pages with the new Javadoc. Generally the file is on repo1
188199
15 minutes after publishing:
189200

190201
```bash
@@ -203,16 +214,16 @@ Tagging the Release
203214

204215
Verify the current version is [live on grpc.io](https://grpc.io/grpc-java/javadoc/).
205216

206-
12. Add [Release Notes](https://github.com/grpc/grpc-java/releases) for the new tag.
217+
1. Add [Release Notes](https://github.com/grpc/grpc-java/releases) for the new tag.
207218
*Make sure that any backports are reflected in the release notes.*
208219

209-
13. Notify the Community. Post a release announcement to
220+
1. Notify the Community. Post a release announcement to
210221
[grpc-io](https://groups.google.com/forum/#!forum/grpc-io)
211222
(`grpc-io@googlegroups.com`) with the title `gRPC-Java v$MAJOR.$MINOR.$PATCH
212223
Released`. The email content should link to the GitHub release notes and
213224
include a copy of them.
214225

215-
14. Update README.md. Cherry-pick the commit that updated the README.md into the
226+
1. Update README.md. Cherry-pick the commit that updated the README.md into the
216227
master branch.
217228

218229
```bash
@@ -223,7 +234,7 @@ Tagging the Release
223234

224235
Create a PR and go through the review process
225236

226-
15. Update version referenced by tutorials. Update `params.grpc_vers.java` in
237+
1. Update version referenced by tutorials. Update `params.grpc_vers.java` in
227238
[config.yaml](https://github.com/grpc/grpc.io/blob/master/config.yaml) of
228239
the grpc.io repository. Create a PR and go through the review process.
229240

@@ -254,3 +265,4 @@ When happy with the dependency upgrades, update the versions in `MODULE.bazel`,
254265
Upgrade the `uses:` for actions in `.github/workflows` to newer versions. Make
255266
sure to see what changed in each new major version, but it is most often just
256267
requiring a newer Node.js version.
268+

0 commit comments

Comments
 (0)