xref: /aosp_15_r20/external/pigweed/docs/infra/rollers.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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