0

doc: initial version of branch sheriff doc.

Bug: 1034648
Change-Id: I622b68ad3d410b2eb4e528ef705acdc7b5b1d8fc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2090730
Reviewed-by: Eric Foo <efoo@chromium.org>
Commit-Queue: John Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748869}
This commit is contained in:
John Budorick
2020-03-10 20:44:18 +00:00
committed by Commit Bot
parent 5f8de7cc70
commit db5451c3bc

103
docs/branch_sheriff.md Normal file

@ -0,0 +1,103 @@
# Chromium Branch Sheriffing
This document describes how to be a Chromium *branch* sheriff and how sheriffing
on a branch differs from sheriffing on trunk. For trunk sheriffing guidance, see
[//docs/sheriff.md][sheriff-md].
[TOC]
## Philosophy
The goals of a branch sheriff are quite similar to those of a trunk sheriff.
Branch sheriffs need to ensure that:
1. **Compile failures get fixed**, because compile failures on branches block
all tests (both automated and manual) and consequently reduce our confidence
in the quality of what we're shipping, possibly to the point of blocking
releases.
2. **Consistent test failures get repaired**, because they similarly reduce
our confidence in the quality of our code.
**Communication** is important for sheriffs in general, but it's particularly
important for branch sheriffs. Over the course of your shift, you may need to
coordinate with trunk sheriffs, troopers, release TPMs, and others -- don't
hesitate to do so, particularly if you have questions.
## Processes
In general, you'll want to follow the same processes outlined in
[//docs/sheriff.md][sheriff-md]. There are some differences, though.
### Checkout
You'll need to ensure that your checkout is configured to check out the branch
heads. You can do so by running
```
src $ gclient sync --with_branch_heads
```
> This only needs to be done once, though running it more than once won't hurt.
Once you've done that, you'll be able to check out branches:
```
src $ git checkout branch-heads/$BRANCH_NUMBER # e.g. branch-heads/4044 for M81
src $ gclient sync
```
To determine the appropriate branch number, you can either use
[chromiumdash][#chromiumdash] or check [milestone.json][milestone-json] directly.
### Flaky tests
You should largely ignore flaky tests for the time being unless you have
specific reason to believe that a flake was introduced by a cherry-pick to the
branch in question. If a test is flaky on both trunk *and* a release branch,
the trunk sheriffs should investigate it.
### Landing changes
When you need to land a change to a branch, you'll need to go through the same
merge approval process as other cherry-picks. You should feel free to ping the
relevant release TPM as listed on [chromiumdash][chromiumdash-schedule].
## Tools
### Sheriff-o-Matic
Use the [branch SoM console][sheriff-o-matic] rather than the main chromium console.
### Consoles
Use the [beta][main-beta] and [stable][main-stable] branch consoles rather than the main console.
### Chromiumdash
[chromiumdash][chromiumdash] can help you determine the branch number for a
particular milestone or channel, along with a host of other useful information:
* [Branches][chromiumdash-branches] lists the branches for each milestone.
* [Releases][chromiumdash-releases] lists the builds currently shipping to
each channel, which can help map from channel to milestone or to branch.
* [Schedule][chromiumdash-schedule] lists the relevant dates for each
milestone and includes the release TPMs responsible for each milestone by
platform.
### Rotation
The current branch sheriff is listed [here][rotation-home]. The configuration
and source of truth for the schedule lives [here][rotation-config]. To swap,
simply send a CL changing schedule at the bottom of the file.
[chromiumdash]: https://chromiumdash.appspot.com
[chromiumdash-branches]: https://chromiumdash.appspot.com/branches
[chromiumdash-releases]: https://chromiumdash.appspot.com/releases
[chromiumdash-schedule]: https://chromiumdash.appspot.com/schedule
[main-beta]: https://ci.chromium.org/p/chromium/g/main-beta/console
[main-stable]: https://ci.chromium.org/p/chromium/g/main-stable/console
[milestone-json]: https://goto.google.com/chrome-milestone-json
[rotation-home]: https://goto.google.com/chrome-branch-sheriff-amer-west
[rotation-config]: https://goto.google.com/chrome-branch-sheriff-amer-west-config
[sheriff-md]: /docs/sheriff.md
[sheriff-o-matic]: https://sheriff-o-matic.appspot.com/chrome_browser_release