1*61c4878aSAndroid Build Coastguard Worker.. _docs-rollers: 2*61c4878aSAndroid Build Coastguard Worker 3*61c4878aSAndroid Build Coastguard Worker======= 4*61c4878aSAndroid Build Coastguard WorkerRollers 5*61c4878aSAndroid Build Coastguard Worker======= 6*61c4878aSAndroid Build Coastguard Worker 7*61c4878aSAndroid Build Coastguard Worker----------------- 8*61c4878aSAndroid Build Coastguard WorkerWhat is a roller? 9*61c4878aSAndroid Build Coastguard Worker----------------- 10*61c4878aSAndroid Build Coastguard WorkerA roller is an infra job that updates the revision of a pinned project (or 11*61c4878aSAndroid Build Coastguard Workerversion of a pinned CIPD package) in a repository with submodules or an 12*61c4878aSAndroid Build Coastguard WorkerAndroid Repo Tool manifest. The Pigweed Infra team generally maintains the 13*61c4878aSAndroid Build Coastguard Workerlogic and configuration of rollers, while various project and/or package 14*61c4878aSAndroid Build Coastguard Workerowners across are responsible for keeping them green. 15*61c4878aSAndroid Build Coastguard Worker 16*61c4878aSAndroid Build Coastguard Worker----------- 17*61c4878aSAndroid Build Coastguard WorkerOur rollers 18*61c4878aSAndroid Build Coastguard Worker----------- 19*61c4878aSAndroid Build Coastguard WorkerRollers from Pigweed into downstream projects can be seen on the 20*61c4878aSAndroid Build Coastguard Worker`Pigweed Console <https://ci.chromium.org/p/pigweed/g/pigweed.pigweed/console>`_. 21*61c4878aSAndroid Build Coastguard WorkerMany more rollers are visible when logged in using an @google.com account than 22*61c4878aSAndroid Build Coastguard Workerwhen not. 23*61c4878aSAndroid Build Coastguard Worker 24*61c4878aSAndroid Build Coastguard WorkerRollers specific to individual downstream projects can be found by browsing 25*61c4878aSAndroid Build Coastguard Workerthe :ref:`builder visualization <docs-builder-viz>` and looking under the 26*61c4878aSAndroid Build Coastguard Worker"roll" columns. 27*61c4878aSAndroid Build Coastguard Worker 28*61c4878aSAndroid Build Coastguard Worker-------------------- 29*61c4878aSAndroid Build Coastguard WorkerHow do rollers work? 30*61c4878aSAndroid Build Coastguard Worker-------------------- 31*61c4878aSAndroid Build Coastguard WorkerProject rollers will poll Gitiles periodically (often every three hours, but 32*61c4878aSAndroid Build Coastguard Workerthis is configurable) for new commits to watched 33*61c4878aSAndroid Build Coastguard Workerrepositories. Package rollers will poll CIPD at their configured frequencies 34*61c4878aSAndroid Build Coastguard Workerfor new packages which match their watched refs (e.g. 'latest'). 35*61c4878aSAndroid Build Coastguard Worker 36*61c4878aSAndroid Build Coastguard WorkerWhen a new change is detected, luci-scheduler emits a 'trigger' for the 37*61c4878aSAndroid Build Coastguard Workerroller. The 'trigger' does not necessarily invoke the roller immediately as 38*61c4878aSAndroid Build Coastguard Workerluci-scheduler is configured to only allow a single job of each roller to be 39*61c4878aSAndroid Build Coastguard Workerrunning at once. It will batch triggers until there is no job running, then 40*61c4878aSAndroid Build Coastguard Workercreate a roller job with the properties of the latest trigger in the batch. 41*61c4878aSAndroid Build Coastguard Worker 42*61c4878aSAndroid Build Coastguard WorkerOnce the roller job begins, it creates a change which updates the relevant 43*61c4878aSAndroid Build Coastguard Workerproject or package pin(s) and attempts to submit the change via CQ. If the CQ 44*61c4878aSAndroid Build Coastguard Workerrun fails, then the roller will abandon that change. If the CQ run succeeds, the 45*61c4878aSAndroid Build Coastguard Workerchange is submitted and the roller succeeds. 46*61c4878aSAndroid Build Coastguard Worker 47*61c4878aSAndroid Build Coastguard WorkerOn most hosts, rollers vote on the ``Bot-Commit`` label which bypasses the 48*61c4878aSAndroid Build Coastguard Worker``Code-Review`` requirement. On other hosts, rollers vote on ``Code-Review``, 49*61c4878aSAndroid Build Coastguard Workeror Gerrit is configured to not enforce the ``Code-Review`` requirement for 50*61c4878aSAndroid Build Coastguard Workerchanges uploaded by the roller. 51*61c4878aSAndroid Build Coastguard Worker 52*61c4878aSAndroid Build Coastguard WorkerIn the event of a CQ failure, if the roller attempts to re-roll the exact same 53*61c4878aSAndroid Build Coastguard Workerrevision or package(s), it will re-use the existing change and only re-run the 54*61c4878aSAndroid Build Coastguard Workerfailing portions of CQ. 55*61c4878aSAndroid Build Coastguard Worker 56*61c4878aSAndroid Build Coastguard Worker------------------------------- 57*61c4878aSAndroid Build Coastguard WorkerHow do I fix a roller breakage? 58*61c4878aSAndroid Build Coastguard Worker------------------------------- 59*61c4878aSAndroid Build Coastguard WorkerMost rollers will fix themselves. Failing rollers are periodically rerun by 60*61c4878aSAndroid Build Coastguard Workerthe 61*61c4878aSAndroid Build Coastguard Worker`"rerunner" builders <https://ci.chromium.org/ui/p/pigweed/g/rerunner/builders>`_, 62*61c4878aSAndroid Build Coastguard Workerso any flaky tests or temporary failures should resolve themselves. 63*61c4878aSAndroid Build Coastguard Worker 64*61c4878aSAndroid Build Coastguard WorkerHowever, if you are a Googler on a team using Pigweed's infrastructure, you 65*61c4878aSAndroid Build Coastguard Workershould be able to manually trigger a roller by finding it in the Builder Viz 66*61c4878aSAndroid Build Coastguard Workerand clicking the "scheduler" link. (You may need to log in to 67*61c4878aSAndroid Build Coastguard Workerluci-scheduler.) This is batched with all other 'triggers' as to not disrupt 68*61c4878aSAndroid Build Coastguard Workerthe normal roller flow, but will allow you to restart the roll process. 69*61c4878aSAndroid Build Coastguard Worker 70*61c4878aSAndroid Build Coastguard Worker----------------------------------------------- 71*61c4878aSAndroid Build Coastguard WorkerHow do I disable a roller? Create a new roller? 72*61c4878aSAndroid Build Coastguard Worker----------------------------------------------- 73*61c4878aSAndroid Build Coastguard Worker*(Googlers only)* See `go/pw-config-tasks <http://go/pw-config-tasks>`_. But most 74*61c4878aSAndroid Build Coastguard Workerof the time the appropriate action is to file a bug at 75*61c4878aSAndroid Build Coastguard Worker`go/pw-infra-bug <http://go/pw-infra-bug>`_. 76