blob: 441411c12756a6feeb59cb645ba0ec6911bea479 [file] [log] [blame] [view]
# Life of a Chrome commit on Chrome OS
*** note
**Warning: This document is old & has moved. Please update any links:**<br>
https://chromium.googlesource.com/chromiumos/docs/+/HEAD/chrome_commit_pipeline.md
***
This document provides a brief overview of how Chrome changes get committed
and tested on Chrome OS.
For details on non-Chrome **Chrome OS** changes, see
[Life of a Chrome OS commit](cros_commit_pipeline.md).
## Create a Chrome change
### Make and upload changes
See the section on [contributing code] at [chromium.org]
for how to create a branch and make changes.
Once a change is completed and tested locally, upload it to [codereview]:
```git cl upload```
### Have your change reviewed
Before submitting the code, use [Gerrit] to have it reviewed like any standard
Chrome OS CL. See [contributing code] for details.
## The Chrome commit pipeline
### The Commit Queue and Tryservers
The Chrome [commit queue] has a very large pool of builders that will apply
individual changes to the master, build them, and test them.
#### Before the patch is approved
A developer can click on 'Choose trybots' to select specific builders to run
(there are a lot of them).
Alternately they can click 'CQ dry run' to run all of the builders that the
CQ will run in advance, without scheduling a commit.
#### The commit queue
Once a change has been reviewed and approved, the developer can apply the CQ+2
label, which marks the change ready for the CQ.
Depending on what was changed, the CQ selects a suite of trybots for
[android], [cros], [linux/fuchsia], [mac/ios], and [win].
The [cros] trybots include:
- [linux-chromeos-rel]: a linux builder with `target_os = "chromeos"` that runs
`browser_tests` and `unit_tests` for Chrome on Chrome OS.
- [chromeos-amd64-generic-rel]: a Simple Chrome builder that runs telemetry and
dep:Chrome Tast tests in amd64-generic VMs.
If the CQ builders succeed then the change will be committed to the master.
Otherwise the 'CQ+2' label will need to be reapplied once the failure is fixed
or determined to be unrelated to the change.
### The chromium waterfall
Once a change is committed on the master, it is picked up by the
[chromium waterfall]. This includes a very large number of builders that will
thoroughly test the commit, including a number of [public Chrome OS builders]
and a few [private builders]. Their tests can run on linux-chromeos, Chrome OS
VMs, and Chrome OS DUTs (Device Under Test).
*Note: Due to lab limitations not every builder in the waterfall is included
in the Commit Queue. For Chrome OS there are a few Debug and device testers that
only exist on the waterfall. Failures there are infrequent but possible, so keep
an eye out!*
## The Chrome OS commit pipeline for Chrome changes
Once a Chrome change lands in the master, it needs to be landed via [PUpr]
uprev before it will be picked up by Chrome OS. PUpr watches chrome tags
as they are created each day and cuts a CL to the current gardener to land.
Changes are included in ChromeOS builds once the uprev CL makes it through
the ChromeOS CQ. There is a [PUpr Dashboard] that shows the current status
of the uprev CLs as well as the age of the current chrome version on ChromeOS.
[contributing code]: contributing.md
[commit queue]: https://chromium.googlesource.com/chromium/src/+/HEAD/infra/config/generated/cq-builders.md
[chromium.org]: https://www.chromium.org
[Gerrit]: https://chromium-review.googlesource.com/
[android]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.android
[cros]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.chromiumos
[mac/ios]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.mac
[linux/fuchsia]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.linux
[win]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.win
[linux-chromeos-rel]: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-rel
[chromeos-amd64-generic-rel]: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromeos-amd64-generic-rel
[chromium waterfall]: https://ci.chromium.org/p/chromium/g/main/console
[public Chrome OS builders]: https://ci.chromium.org/p/chromium/g/chromium.chromiumos/builders
[private builders]: https://ci.chromium.org/p/chrome/g/chrome/builders
[PUpr]: https://g3doc.corp.google.com/company/teams/chrome/ops/chromeos/continuous_integration/pupr.md?cl=head
[PUpr Dashboard]: http://go/chromeos-dash-pupr-chrome