tree: b5908c25036f56cb1101208daabe43a2285c0b27 [path history] [tgz]
  1. bin/
  2. config/
  3. go/
  4. images/
  5. modules/
  6. pages/
  7. .eslintrc.js
  8. BUILD.bazel
  9. Makefile
  10. PROD.md
  11. README.md
autoroll/README.md

AutoRoll

AutoRoll is a program which creates and manages DEPS rolls of a child project, eg. Skia, into a parent project, eg. Chrome.

Requests and Bug Reports

To request a new roller, visit https://issues.skia.org/issues/new?component=1389291&template=1850622. For all other autoroll-related bugs and requests, please use https://issues.skia.org/issues/new?component=1389291&template=1850466.

For Gardeners of Parent Projects

If a roll has caused a breakage, feel free to revert first and ask questions later. Generally you should stop the roller first, otherwise rolls will continue to land and compound the problem. The controls for the roller should be linked in the roll commit message. It is polite and good practice to directly contact someone on that team which owns the roller and work with them as needed to get the rolls going again.

If a roller has gone rogue somehow, eg. uploading too many rolls, chewing up bot capacity, etc, please stop the roller and file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 If you need immediate attention, contact skiabot@google.com. Note that we do not use pagers, and our gardener is generally only active during working hours.

For Child Project Roller Owners

In the case of any problems or unexpected behavior, please stop the roller and file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 If you need immediate attention, contact skiabot@google.com. Note that we do not use pagers, and our gardener is generally only active during working hours.

If rolls are failing due to a breakage in the parent repo, you generally do not need to stop the roller unless you are concerned about saving commit queue capacity. If rolls are failing due to a broken commit in the child repo, use your judgment as to whether to stop the roller; it isn't strictly required, since the roller will continue to retry as new commits land, but it does save commit queue capacity if you know that the rolls are doomed to fail until a fix or revert lands.

Stopping a roller causes any active roll to be abandoned. You can take advantage of this behavior if you know that the current roll is doomed to fail and the next will contain a fix: rather than waiting for the commit queue to fail, stop the roller, wait for the current roll to be abandoned, and resume the roller.

Configuration

Configuration files for each of the autorollers may be found here (Googlers only). Feel free to make a CL to modify a roller config, or file a bug to request a change.

The text proto which governs configuration can be read here.

AutoRoll Modes

There are three modes in which the roller may run:

Running

This is the “normal” mode. The roller will upload DEPS roll CLs, close those which fail, and upload new CLs until the child repo is up-to-date in the parent repo's DEPS.

Stopped

The roller will not upload any CLs. Any in-progress roll CL will be closed when the roller is stopped.

Dry Run

The roller will upload CLs and run the commit queue dry run. If the dry run succeeds, the CL is left open until either the roller is set back to “running” mode, in which case the CL re-enters the commit queue, or until one or more commits lands in the child repo, in which case the roller closes the CL and uploads a new one.

AutoRoll Strategies

There are three strategies which the roller may use to choose the next revision to roll:

Batch

Using this strategy, the roller always chooses the most recent revision to roll, potentially resulting in large batches of commits in each roll.

N-Batch

Similar to the “batch” strategy, the roller will upload rolls containing multiple commits, but only up to a maximum of N commits, where N is hard-coded to 20 as of May 2 2022.

Single

The roller will only roll a single commit at a time. This can be useful for keeping blamelists clear, but it has some drawbacks. If the commit queue is not fast enough to keep up with the commit rate of the child project, the roller will lag behind. If a particular commit breaks the commit queue, the roller may get stuck, since it won't automatically include the fix or revert in the rolls. Therefore, this strategy may require occasional manual intervention.

For Skia Infra Team Members

See PROD.md for information about handling alerts.