xref: /aosp_15_r20/external/angle/infra/ANGLEWrangling.md (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# ANGLE Wrangling
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard WorkerAs an ANGLE Sheriff. Your job is to:
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Worker 1. Keep the [ANGLE Standalone][StandaloneCI] and [ANGLE/Chromium][ANGLEChromiumCI] waterfalls green.
6*8975f5c5SAndroid Build Coastguard Worker 1. Ensure developers have reliable pre-commit testing via the
7*8975f5c5SAndroid Build Coastguard Worker    [ANGLE Standalone][StandaloneTry] and [ANGLE/Chromium][ANGLEChromiumTry] try waterfalls.
8*8975f5c5SAndroid Build Coastguard Worker 1. Control and monitor the [ANGLE auto-rollers](#the-auto-rollers).
9*8975f5c5SAndroid Build Coastguard Worker 1. Act as a point of contact for the Chromium Sheriff and other teams monitoring ANGLE regressions.
10*8975f5c5SAndroid Build Coastguard Worker 1. **Note: currently not working!** Monitor and respond to ANGLE's [Perf alerts][PerfAlertGroup].
11*8975f5c5SAndroid Build Coastguard Worker
12*8975f5c5SAndroid Build Coastguard Worker[StandaloneCI]: https://ci.chromium.org/p/angle/g/ci/console
13*8975f5c5SAndroid Build Coastguard Worker[ANGLEChromiumCI]: https://ci.chromium.org/p/chromium/g/chromium.angle/console
14*8975f5c5SAndroid Build Coastguard Worker[StandaloneTry]: https://ci.chromium.org/ui/p/angle/g/try/builders
15*8975f5c5SAndroid Build Coastguard Worker[ANGLEChromiumTry]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders
16*8975f5c5SAndroid Build Coastguard Worker[PerfAlertGroup]: https://groups.google.com/u/0/a/chromium.org/g/angle-perf-alerts
17*8975f5c5SAndroid Build Coastguard Worker
18*8975f5c5SAndroid Build Coastguard WorkerIf you're not an ANGLE team member, you can contact us on the public ANGLE project
19*8975f5c5SAndroid Build Coastguard Worker[Google group](https://groups.google.com/forum/#!forum/angleproject).
20*8975f5c5SAndroid Build Coastguard Worker
21*8975f5c5SAndroid Build Coastguard Worker**Note**: Please review and if needed update the [wrangler schedule].
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Worker**Note**: If you need to suppress test failures (e.g. to keep an auto-roller unblocked), see
24*8975f5c5SAndroid Build Coastguard Worker[Handling Test Failures](../doc/TestingAndProcesses.md).
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker[wrangler schedule]: https://rotations.corp.google.com/rotation/5080504293392384
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard Worker## Task: Monitor ANGLE CI and Try Testers
29*8975f5c5SAndroid Build Coastguard Worker
30*8975f5c5SAndroid Build Coastguard WorkerYour first job is to keep the ANGLE builders green and unblocked.
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker### Post-commit CI builders
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard WorkerThere are two consoles for ANGLE continuous integration builders:
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard Worker * Standalone ANGLE: https://ci.chromium.org/p/angle/g/ci/console
37*8975f5c5SAndroid Build Coastguard Worker * Chromium + integrated ANGLE: https://ci.chromium.org/p/chromium/g/chromium.angle/console
38*8975f5c5SAndroid Build Coastguard Worker
39*8975f5c5SAndroid Build Coastguard WorkerWe recommend you track ANGLE build failures is via [Sheriff-o-matic][ANGLESoM].
40*8975f5c5SAndroid Build Coastguard WorkerBookmark the link and check it regularly during your shift. **Note**:
41*8975f5c5SAndroid Build Coastguard Workercurrently flaky failures show up as separate failure instances.
42*8975f5c5SAndroid Build Coastguard Worker
43*8975f5c5SAndroid Build Coastguard Worker[ANGLESoM]: https://sheriff-o-matic.appspot.com/angle
44*8975f5c5SAndroid Build Coastguard Worker
45*8975f5c5SAndroid Build Coastguard WorkerWe expect these waterfalls to be as "green" as possible. As a wrangler
46*8975f5c5SAndroid Build Coastguard Workerplease help clean out any failures by finding and reverting problematic CLs,
47*8975f5c5SAndroid Build Coastguard Workersuppressing flaky tests that can't be fixed, or finding other solutions. We
48*8975f5c5SAndroid Build Coastguard Workeraim to have zero failing builds, so follow the campsite rule and leave the
49*8975f5c5SAndroid Build Coastguard Workerwaterfall cleaner than when you started your shift.
50*8975f5c5SAndroid Build Coastguard Worker
51*8975f5c5SAndroid Build Coastguard WorkerWhen you encounter red builds or flakiness, [file an ANGLE bug](http://anglebug.com/new)
52*8975f5c5SAndroid Build Coastguard Workerand set the label: `Hotlist-Wrangler` ([search for existing bugs][WranglerBugs]).
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard Worker[WranglerBugs]: https://bugs.chromium.org/p/angleproject/issues/list?q=Hotlist%3DWrangler&can=2
55*8975f5c5SAndroid Build Coastguard Worker
56*8975f5c5SAndroid Build Coastguard WorkerSee more detailed instructions on ANGLE testing by following [this link](README.md).
57*8975f5c5SAndroid Build Coastguard Worker
58*8975f5c5SAndroid Build Coastguard Worker### Pre-commit try builders
59*8975f5c5SAndroid Build Coastguard Worker
60*8975f5c5SAndroid Build Coastguard WorkerIn addition to the CI builders, we have a console for try jobs on the ANGLE CV (change verifier):
61*8975f5c5SAndroid Build Coastguard Worker
62*8975f5c5SAndroid Build Coastguard Worker * Standalone ANGLE: https://ci.chromium.org/ui/p/angle/g/try/builders
63*8975f5c5SAndroid Build Coastguard Worker * Chromium + integrated ANGLE: https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders
64*8975f5c5SAndroid Build Coastguard Worker
65*8975f5c5SAndroid Build Coastguard WorkerFailures are intended on this waterfall as developers test WIP changes.
66*8975f5c5SAndroid Build Coastguard WorkerYou must act on any persistent flakiness or failure that causes developer drag
67*8975f5c5SAndroid Build Coastguard Workerby filing bugs, reverting CLs, or taking other action as with the CI waterfall.
68*8975f5c5SAndroid Build Coastguard Worker
69*8975f5c5SAndroid Build Coastguard WorkerIf you find a failure that is unrelated to ANGLE, [file a Chromium bug](http://crbug.com/new).
70*8975f5c5SAndroid Build Coastguard WorkerSet the bug label `Hotlist-PixelWrangler`. Ensure you cc the current ANGLE and Chrome GPU
71*8975f5c5SAndroid Build Coastguard Workerwranglers, which you can find by consulting
72*8975f5c5SAndroid Build Coastguard Worker[build.chromium.org](https://ci.chromium.org/p/chromium/g/main/console).
73*8975f5c5SAndroid Build Coastguard WorkerFor more information see [Filing Chromium Bug Reports](#filing-chromium-bug-reports) below.
74*8975f5c5SAndroid Build Coastguard Worker
75*8975f5c5SAndroid Build Coastguard WorkerYou can optionally follow [Chromium bugs in the `Internals>GPU>ANGLE` component][ChromiumANGLEBugs]
76*8975f5c5SAndroid Build Coastguard Workerto be alerted to reports of ANGLE-related breakage in Chrome.
77*8975f5c5SAndroid Build Coastguard Worker
78*8975f5c5SAndroid Build Coastguard Worker[ChromiumANGLEBugs]: https://bugs.chromium.org/p/chromium/issues/list?q=component%3AInternals%3EGPU%3EANGLE&can=2
79*8975f5c5SAndroid Build Coastguard Worker
80*8975f5c5SAndroid Build Coastguard Worker**NOTE: When all builds seem to be purple or otherwise broken:**
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard WorkerThis could be a major infrastructure outage. File a high-priority bug using
83*8975f5c5SAndroid Build Coastguard Worker[g.co/bugatrooper](http://g.co/bugatrooper).
84*8975f5c5SAndroid Build Coastguard Worker
85*8975f5c5SAndroid Build Coastguard Worker### Filing Chromium Bug Reports
86*8975f5c5SAndroid Build Coastguard Worker
87*8975f5c5SAndroid Build Coastguard WorkerThe GPU Pixel Wrangler is responsible for *Chromium* bugs. Please file
88*8975f5c5SAndroid Build Coastguard WorkerChromium issues with the Label `Hotlist-PixelWrangler` for bugs outside of
89*8975f5c5SAndroid Build Coastguard Workerthe ANGLE project.
90*8975f5c5SAndroid Build Coastguard Worker
91*8975f5c5SAndroid Build Coastguard Worker*IMPORTANT* info to include in Chromium bug reports:
92*8975f5c5SAndroid Build Coastguard Worker
93*8975f5c5SAndroid Build Coastguard Worker * Links to all first failing builds (e.g. first windows failure, first mac failure, etc).
94*8975f5c5SAndroid Build Coastguard Worker * Related regression ranges. See below on how to determine the ANGLE regression range.
95*8975f5c5SAndroid Build Coastguard Worker * Relevant error messages.
96*8975f5c5SAndroid Build Coastguard Worker * Set the **Components** to one or more value, such as (start typing "Internals" and you'll see choices):
97*8975f5c5SAndroid Build Coastguard Worker   * `Internals>GPU` for general GPU bugs
98*8975f5c5SAndroid Build Coastguard Worker   * `Internals>GPU>Testing` for failures that look infrastructure-related
99*8975f5c5SAndroid Build Coastguard Worker   * `Internals>GPU>ANGLE` for ANGLE-related Chromium bugs
100*8975f5c5SAndroid Build Coastguard Worker   * `Internals>Skia` for Skia-specific bugs
101*8975f5c5SAndroid Build Coastguard Worker * Cc relevant sheriffs or blame suspects, as well as yourself or the current ANGLE Wrangler.
102*8975f5c5SAndroid Build Coastguard Worker * Set the `Hotlist-PixelWrangler` Label.
103*8975f5c5SAndroid Build Coastguard Worker
104*8975f5c5SAndroid Build Coastguard Worker### How to determine the ANGLE regression range on Chromium bots:
105*8975f5c5SAndroid Build Coastguard Worker
106*8975f5c5SAndroid Build Coastguard Worker 1. Open the first failing and last passing builds.
107*8975f5c5SAndroid Build Coastguard Worker 1. For test failures: record `parent_got_angle_revision` in both builds.
108*8975f5c5SAndroid Build Coastguard Worker 1. For compile failures record `got_angle_revision`.
109*8975f5c5SAndroid Build Coastguard Worker 1. Create a regression link with this URL template:
110*8975f5c5SAndroid Build Coastguard Worker    `https://chromium.googlesource.com/angle/angle.git/+log/<last passing revision>..<first failing revision>`
111*8975f5c5SAndroid Build Coastguard Worker
112*8975f5c5SAndroid Build Coastguard Worker## <a name="the-auto-rollers"></a>Task: The Auto-Rollers
113*8975f5c5SAndroid Build Coastguard Worker
114*8975f5c5SAndroid Build Coastguard WorkerThe [ANGLE into Chrome auto-roller](https://autoroll.skia.org/r/angle-chromium-autoroll) automatically updates
115*8975f5c5SAndroid Build Coastguard WorkerChrome with the latest ANGLE changes.
116*8975f5c5SAndroid Build Coastguard Worker
117*8975f5c5SAndroid Build Coastguard WorkerThe [ANGLE into Android auto-roller](https://autoroll.skia.org/r/angle-android-autoroll) updates Android with
118*8975f5c5SAndroid Build Coastguard Workerthe latest ANGLE changes. You must manually approve and land these rolls.  The
119*8975f5c5SAndroid Build Coastguard Workerrecommendation is to pre-approve the roll and set "**Autosubmit**".
120*8975f5c5SAndroid Build Coastguard Worker * The auto-roller abandons a presubmit-passed roll whenever a new ANGLE change
121*8975f5c5SAndroid Build Coastguard Worker   comes.  During work hours, it's hard for Wrangler to approve and land in
122*8975f5c5SAndroid Build Coastguard Worker   time.
123*8975f5c5SAndroid Build Coastguard Worker
124*8975f5c5SAndroid Build Coastguard WorkerWe also use additional auto-rollers to roll third party libraries into ANGLE and Chromium:
125*8975f5c5SAndroid Build Coastguard Worker
126*8975f5c5SAndroid Build Coastguard Worker * [SwiftShader into ANGLE](https://autoroll.skia.org/r/swiftshader-angle-autoroll)
127*8975f5c5SAndroid Build Coastguard Worker * [vulkan-deps into ANGLE](https://autoroll.skia.org/r/vulkan-deps-angle-autoroll)
128*8975f5c5SAndroid Build Coastguard Worker * [VK-GL-CTS into ANGLE](https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll)
129*8975f5c5SAndroid Build Coastguard Worker * [Chromium into ANGLE](https://autoroll.skia.org/r/chromium-angle-autoroll)
130*8975f5c5SAndroid Build Coastguard Worker * [SwiftShader into Chromium](https://autoroll.skia.org/r/swiftshader-chromium-autoroll)
131*8975f5c5SAndroid Build Coastguard Worker
132*8975f5c5SAndroid Build Coastguard Worker**Roller health**: You will be cc'ed on all rolls. Please check failed rolls
133*8975f5c5SAndroid Build Coastguard Worker  to verify there is no blocking breakage.
134*8975f5c5SAndroid Build Coastguard Worker
135*8975f5c5SAndroid Build Coastguard WorkerFor all rollers, you can trigger manual rolls using the dashboards to land
136*8975f5c5SAndroid Build Coastguard Workerhigh-priority changes. For example: Chromium-side test expectation updates or
137*8975f5c5SAndroid Build Coastguard Workersuppressions. When a roll fails, stop the roller, determine if the root cause
138*8975f5c5SAndroid Build Coastguard Workeris a problem with ANGLE or with the upstream repo, and file an issue with an
139*8975f5c5SAndroid Build Coastguard Workerappropriate next step.
140*8975f5c5SAndroid Build Coastguard Worker
141*8975f5c5SAndroid Build Coastguard WorkerTo monitor the rollers during your shift, you can:
142*8975f5c5SAndroid Build Coastguard Worker  1. Open the [autoroll dashboard](https://autoroll.skia.org/) and put "angle" in `Filter`.  The dashboard provides the status of ANGLE related rollers.  Monitor their modes and numbers.
143*8975f5c5SAndroid Build Coastguard Worker  1. Filter out the non-critical emails by a filter: “`from:(*-autoroll (Gerrit))`”.  This improves the signal to noise ratio of your inbox, so the important emails, ex) "`The roll is failing consistently. Time to investigate.`", can stand out.
144*8975f5c5SAndroid Build Coastguard Worker
145*8975f5c5SAndroid Build Coastguard WorkerThe autoroller configurations live in the
146*8975f5c5SAndroid Build Coastguard Worker[skia-autoroll-internal-config repository](https://skia.googlesource.com/skia-autoroll-internal-config.git/+/main/skia-public).
147*8975f5c5SAndroid Build Coastguard WorkerFeel free to maintain these configs yourself, or file a Skia [autoroll bug][SkiaAutorollBug]
148*8975f5c5SAndroid Build Coastguard Workerfor help as needed.
149*8975f5c5SAndroid Build Coastguard Worker
150*8975f5c5SAndroid Build Coastguard Worker[SkiaAutorollBug]: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
151*8975f5c5SAndroid Build Coastguard Worker
152*8975f5c5SAndroid Build Coastguard Worker### Vulkan Dependencies auto-roller: Handling failures
153*8975f5c5SAndroid Build Coastguard Worker
154*8975f5c5SAndroid Build Coastguard Worker**Vulkan-deps consists of several related Vulkan dependencies**: Vulkan-Tools,
155*8975f5c5SAndroid Build Coastguard WorkerVulkan-Loader, Vulkan-ValidationLayers, Vulkan-Headers and other related
156*8975f5c5SAndroid Build Coastguard Workerrepos. One common source of breaks is a Vulkan Headers update, which can take
157*8975f5c5SAndroid Build Coastguard Workera while to be integrated into other repos like the Vulkan Validation Layers.
158*8975f5c5SAndroid Build Coastguard WorkerNo action on your part is needed for header updates.
159*8975f5c5SAndroid Build Coastguard Worker
160*8975f5c5SAndroid Build Coastguard WorkerIf a vulkan-deps AutoRoll CL triggers an failure in the `presubmit` bot, in
161*8975f5c5SAndroid Build Coastguard Workerthe "export targets" step, you can:
162*8975f5c5SAndroid Build Coastguard Worker
163*8975f5c5SAndroid Build Coastguard Worker 1. Add missing headers to the upstream `BUILD.gn` if possible. See this [example CL][GNHeaderExample].
164*8975f5c5SAndroid Build Coastguard Worker 1. Otherwise, add headers to `IGNORED_INCLUDES` in [`export_targets.py`][ExportTargetsPy]. See this
165*8975f5c5SAndroid Build Coastguard Worker[example CL][ExportHeaderExample].
166*8975f5c5SAndroid Build Coastguard Worker
167*8975f5c5SAndroid Build Coastguard Worker[GNHeaderExample]: https://github.com/KhronosGroup/Vulkan-Loader/pull/968
168*8975f5c5SAndroid Build Coastguard Worker[ExportTargetsPy]: ../scripts/export_targets.py
169*8975f5c5SAndroid Build Coastguard Worker[ExportHeaderExample]: https://chromium-review.googlesource.com/c/angle/angle/+/3399044
170*8975f5c5SAndroid Build Coastguard Worker
171*8975f5c5SAndroid Build Coastguard WorkerIf the roll fails for a reason other than a header update or presubmit,
172*8975f5c5SAndroid Build Coastguard Workerdetermine the correct upstream repo and file an issue upstream. For simple
173*8975f5c5SAndroid Build Coastguard Workercompilation failures, we usually submit fixes ourselves. For more info on
174*8975f5c5SAndroid Build Coastguard Workervulkan-deps see the [README][VulkanDepsREADME].
175*8975f5c5SAndroid Build Coastguard Worker
176*8975f5c5SAndroid Build Coastguard Worker[VulkanDepsREADME]: https://chromium.googlesource.com/vulkan-deps/+/refs/heads/main/README.md
177*8975f5c5SAndroid Build Coastguard Worker
178*8975f5c5SAndroid Build Coastguard Worker### ANGLE into Chrome auto-roller: SwANGLE builders
179*8975f5c5SAndroid Build Coastguard Worker
180*8975f5c5SAndroid Build Coastguard WorkerThe ANGLE into Chromium roller has two SwiftShader + ANGLE (SwANGLE) builders:
181*8975f5c5SAndroid Build Coastguard Worker[linux-swangle-try-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-x64)
182*8975f5c5SAndroid Build Coastguard Workerand
183*8975f5c5SAndroid Build Coastguard Worker[win-swangle-try-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-x86).
184*8975f5c5SAndroid Build Coastguard WorkerHowever, failures on these bots may be due to SwiftShader changes.
185*8975f5c5SAndroid Build Coastguard Worker
186*8975f5c5SAndroid Build Coastguard WorkerTo handle failures on these bots:
187*8975f5c5SAndroid Build Coastguard Worker1. If possible, suppress the failing tests in ANGLE, opening a bug to investigate later.
188*8975f5c5SAndroid Build Coastguard Worker1. If you supsect an ANGLE CL caused a regression,
189*8975f5c5SAndroid Build Coastguard Worker   consider whether reverting it or suppressing the failures is a better course of action.
190*8975f5c5SAndroid Build Coastguard Worker1. If you suspect a SwiftShader CL, and the breakage is too severe to suppress,
191*8975f5c5SAndroid Build Coastguard Worker   (a lot of tests fail in multiple suites),
192*8975f5c5SAndroid Build Coastguard Worker   consider reverting the responsible SwiftShader roll into Chromium
193*8975f5c5SAndroid Build Coastguard Worker   and open a SwiftShader [bug](http://go/swiftshaderbugs). SwiftShader rolls into Chromium
194*8975f5c5SAndroid Build Coastguard Worker   should fail afterwards, but if the bad roll manages to reland,
195*8975f5c5SAndroid Build Coastguard Worker   stop the [autoroller](https://autoroll.skia.org/r/swiftshader-chromium-autoroll) as well.
196*8975f5c5SAndroid Build Coastguard Worker
197*8975f5c5SAndroid Build Coastguard Worker## Task: Monitor and respond to ANGLE's perf alerts
198*8975f5c5SAndroid Build Coastguard Worker
199*8975f5c5SAndroid Build Coastguard WorkerAny large regressions should be triaged with a new ANGLE bug linked to any suspected CLs that may
200*8975f5c5SAndroid Build Coastguard Workerhave caused performance to regress. If it's a known/expected regression, the bug can be closed as
201*8975f5c5SAndroid Build Coastguard Workersuch. The tests are very flaky right now, so a WontFix resolution is often appropriate.
202