This document describes how the Chromium Commit Queue (CQ) is structured and managed. This is specific for the Chromium CQ. Questions about other CQs should be directed to firstname.lastname@example.org.
The Chromium CQ exists to test developer changes before they land into chromium/src. It runs all the test suites which a given CL affects, and ensures that they all pass.
You can mark a CL with this if you are working on experimental code and do not want to risk accidentally submitting it via the CQ. The CQ will immediately stop processing the change if it contains this option.
This flag allows you to specify some additional bots to run for this CL, in addition to the default bots. The format for the list of trybots is “bucket:trybot1,trybot2;bucket2:trybot3”.
If you want to skip the presubmit check, you can add this line, and the commit queue won‘t run the presubmit for your change. This should only be used when there’s a bug in the PRESUBMIT scripts. Please check that there‘s a bug filed against the bad script, and if there isn’t, file one.
Add this line if you want to skip the tree status checks. This means the CQ will commit a CL even if the tree is closed. Obviously this is strongly discouraged, since the tree is usually closed for a reason. However, in rare cases this is acceptable, primarily to fix build breakages (i.e., your CL will help in reopening the tree).
This should only be used for reverts to green the tree, since it skips try bots and might therefore break the tree. You shouldn't use this otherwise.
See policy of when it's acceptable to use TBR (“To be reviewed”). If a change has a TBR line with a valid reviewer, the CQ will skip checks for LGTMs.
Some of these jobs are experimental. This means they are executed on a percentage of CQ builds, and the outcome of the build doesn't affect if the CL can land or not. See the schema linked at the top of the file for more information on what the fields in the config do.
The CQ has the following structure:
Please follow these general guidelines:
bot_update) are failing, or you have reason to believe the CQ itself is broken, or you can‘t really tell what’s wrong, please file a trooper bug.
In both cases, when filing bugs, please include links to the build and/or CL (including relevant patchset information) in question.
There are several requirements for a builder to be added to the Commit Queue.
Please email email@example.com, who will approve new build configurations.
The CQ can sometimes be flaky. Flakiness is when a test on the CQ fails, but should have passed (commonly known as a false negative). There are a few common causes of flaky tests on the CQ:
The CQ mitigates flakiness by retrying failed tests. The core tradeoff in retry policy is that adding retries increases the probability that a flaky test will land on tip of tree sublinearly, but mitigates the impact of the flaky test on unrelated CLs exponentially.
For example, imagine a CL that adds a test that fails with 50% probability. Even with no retries, the test will land with 50% probability. Subsequently, 50% of all unrelated CQ attempts would flakily fail. This effect is cumulative across different flaky tests. Since the CQ has roughly ~20,000 unique flaky tests, without retries, pretty much no CL would ever pass the CQ.