This is the guide to conducting a Bazel release. This is especially relevant for
release managers, but will be of interest to anyone who is curious about the
release process.
Preface
For future reference and release managers - the release manager playbook should
be treated like an IKEA manual. That means: Do not try to be smart, optimize /
skip / reorder steps, otherwise chaos will ensue. Just follow it and the end
result will be.. well, a usable piece of furniture, or a Bazel release
(depending on the manual).
Like aviation and workplace safety regulations, the playbook is written in the
tears and blood of broken Bazelisks, pipelines, releases and Git branches.
Assume that every step is exactly there for a reason, even if it might not be
obvious. If you follow them to the letter, they are not error prone. Errors
have only happened in the past, when a release manager thought it's ok to
follow them by spirit instead. ;)
Make sure you are a member of the Bazel Release Managers team on GitHub.
Make sure you are a member of the Bazel release-managers
group on BuildKite. If that link does not work for you, ask one of the Buildkite org admins to add you to
the group.
Log in to the Gerrit UI to create an account: https://bazel-review.git.corp.google.com/ (without this step, you will see errors such as error_type: PERMISSION_DENIED_BY_GERRIT_ACL and "\'git push\' requires a Gerrit user account." when running the release script.
Preparing a new release
Create a release blockers milestone named "X.Y.Z release blockers" (case-sensitive), where we keep track of issues that must be resolved before the release goes out.
Set the (tentative) release date.
Add this description: Issues that need to be resolved before the X.Y.Z release..
Create the branch for the release. The branch should always be named release-X.Y.Z (the .Z part is important). Cherry-pick PRs will be sent against this branch.
The actual creation of the branch can be done via the GitHub UI or via the command line. For minor and patch releases, create the branch from the previous release tag, if possible. How we choose the base commit of the branch depends on the type of the release:
For patch releases (X.Y.Z where Z>0), the base commit should simply be X.Y.(Z-1).
For minor releases (X.Y.0 where Y>0), the base commit should typically be X.(Y-1).<current max Z>.
For major releases (X.0.0), the base commit is some "healthy" commit on the main branch.
This means that there's an extra step involved in preparing the release -- "cutting" the release branch, so to speak. For this, check the Bazel@HEAD+Downstream pipeline. The branch cut should happen on a green commit there; if the pipeline is persistently red, work with the Green Team to resolve it first and delay the branch cut as needed.
A first release candidate should immediately be created after the release branch is created. See create a release candidate below.
... (truncated)
Commits
68dea4f Install a previous version of MSVC build tools (#1968)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps bazelbuild/continuous-integration from 9fddc08b79867b8eea406c2d75898d4e98b20388 to 68dea4fe63a2ad44caaa8f3c44df19094b3dd395.
Changelog
Sourced from bazelbuild/continuous-integration's changelog.
... (truncated)
Commits
68dea4f
Install a previous version of MSVC build tools (#1968)9d79fb4
Add fedora40 platform (#1966)e102c9f
Use grpc protocol for remote cache on Mac (#1964)d3fbef2
Install Android NDK r25b on Windows VM (#1965)fcd3cdd
Gerrit build: Bump Fedora version to 40 (#1959)195ca8d
Bump requests from 2.31.0 to 2.32.2 in /actions/update-lockfile (#1958)968f5d3
Update lockfiles when PR is merged to a release branch (#1950)ada8084
Shard summary: Show root cause of build failures (#1953)9fe262a
Test shard summary: Include FAILED_TO_BULD targets (#1952)061ce4e
Add docker image for fedora 40 linux distribution (#1947)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show