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