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