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