1# ANGLE Wrangling 2 3As an ANGLE Sheriff. Your job is to: 4 5 1. Keep the [ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders) in good 6 working order. 7 1. Monitor the 8 [Chromium GPU FYI Waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console) 9 and respond to ANGLE bugs. 10 1. Control and monitor the [ANGLE auto-rollers](#task-3_the-auto_rollers). 11 1. Keep the [ANGLE Standalone Testers](README.md) in good working order. 12 1. Keep the [SwANGLE Try Waterfall](https://luci-milo.appspot.com/p/chromium/g/tryserver.chromium.swangle/builders) in good 13 working order. 14 15If you're not an ANGLE team member, you can contact us on the public ANGLE project 16[Google group](https://groups.google.com/forum/#!forum/angleproject). 17 18**Note**: It's highly recommend that all wranglers install the [Chromium Flake Linker][Flaker] 19extension for inspecting bot builds. It'll save you a lot of time. 20 21[Flaker]: https://chrome.google.com/webstore/detail/flake-linker/boamnmbgmfnobomddmenbaicodgglkhc 22 23## Task 1: Monitor ANGLE CI and Try Testers 24 25Your first job is to keep the 26[ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders) healthy. Some 27failures are expected on this waterfall. Developers might be testing expectedly buggy code. But 28persistent flakiness and failures should be reported and reverted. 29 30When encoutering an unexpected failure in your CLs please 31[file an ANGLE bug](http://anglebug.com/new) and cc the current ANGLE wrangler. If the failure is 32unrelated to ANGLE [file a Chromium bug](http://crbug.com/new) and mark the bug as 33`Hotlist-PixelWrangler`. Refer to 34[build.chromium.org](https://ci.chromium.org/p/chromium/g/main/console) to find the current ANGLE 35wrangler and GPU Pixel Wrangler. 36 37**NOTE: When all builds seem to be purple or otherwise broken:** 38 39This could be a major infrastructure outage. File a high-priority bug using 40[g.co/bugatrooper](http://g.co/bugatrooper). 41 42## Task 2: Respond to Bugs 43 44ANGLE bugs sometimes make it past the commit queue testing and into the master branch. This can be 45because of flaky tests or because the failures are specific to system configurations for which we 46lack full pre-commit testing support. 47 48The [Chromium GPU FYI Waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console) 49waterfall includes a number of these one-off specialized configurations. Monitor this console for 50persistent breakage that could be related to ANGLE. Also follow the `Internals>GPU>ANGLE` component 51on the Chromium issue tracker to be alerted to reports of breakage on the GPU.FYI waterfall. 52Googlers can use [sheriff-o-matic](https://sheriff-o-matic.appspot.com/chromium.gpu.fyi) to monitor 53the health of the GPU.FYI waterfall. 54 55Note that the GPU Pixel Wrangler is responsible for the *Chromium* bugs. Please file issues with 56the tag `Hotlist-PixelWrangler` for bugs that aren't caused by ANGLE regressions. 57 58*IMPORTANT*: Info to include in bug reports: 59 60 * Links to all first failing builds (eg first windows failure, first mac failure, etc). 61 * Related regression ranges. See below on how to determine the ANGLE regression range. 62 * Relevant error messages. 63 * Set components: `Internals>GPU` and/or `Internals>GPU>ANGLE`. 64 * cc relevant sheriffs or blame suspects. 65 * Set the `Hotlist-PixelWrangler` label. 66 67### How to determine the ANGLE regression range on the GPU.FYI bots: 68 69 1. Open the first failing and last passing builds. 70 1. For test failures: record `parent_got_angle_revision` in both builds. 71 1. For compile failures record `got_angle_revision`. 72 1. Use this URL: 73 `https://chromium.googlesource.com/angle/angle.git/+log/<last passing revision>..<first failing revision>` 74 75## Task 3: The Auto-Rollers 76 77The [ANGLE auto-roller](https://autoroll.skia.org/r/angle-chromium-autoroll) automatically updates 78Chrome with the latest ANGLE changes. 79 80 1. **Roller health**: You will be cc'ed on all rolls. Please check failed rolls to verify there is no blocking 81 breakage. 82 1. **Chrome Branching**: You are responsible for pausing the roller 24h before branch days, and resuming afterwards. 83 See the [Chrome Release Schedule](https://chromiumdash.appspot.com/schedule). 84 85We also use additional auto-rollers to roll third party libraries into ANGLE once per day: 86 87 * [SPIRV-Tools into ANGLE](https://autoroll.skia.org/r/spirv-tools-angle-autoroll) 88 * [glslang into ANGLE](https://autoroll.skia.org/r/glslang-angle-autoroll) 89 * [SwiftShader into ANGLE](https://autoroll.skia.org/r/swiftshader-angle-autoroll) 90 * [Vulkan-Tools into ANGLE](https://autoroll.skia.org/r/vulkan-tools-angle-autoroll) 91 * [Vulkan-Loader into ANGLE](https://autoroll.skia.org/r/vulkan-loader-angle-autoroll) 92 * [Vulkan-Headers into ANGLE](https://autoroll.skia.org/r/vulkan-headers-angle-autoroll) 93 * [Vulkan-ValidationLayers into ANGLE](https://autoroll.skia.org/r/vulkan-validation-layers-angle-autoroll) 94 95Please ensure these rollers are also healthy and unblocked. You can trigger manual rolls using the 96dashboards to land high-priority changes. 97 98**NOTE: When Vulkan-Headers roll is broken:** 99 100The Vulkan-Tools, Vulkan-Loader, and Vulkan-ValidationLayers repos all depend on the Vulkan-Headers 101repo. When Vulkan-Headers updates, all of those repos have a roll process managed by LunarG to 102update them for the new Vulkan-Headers. This usually takes 2-3 business days after the 103Vulkan-Headers update. If Vulkan-Headers roll fails, pause the roller with a note that it should be 104re-enabled when the dependent repos have been updated for the latest Vulkan-Headers changes. This 105will require a manual roll if the two repos have to be rolled in unison. To perform a manual roll, 106create a CL that updates the DEPS file with the new SHA1 value from the desired checkout of each 107dependent repo. Once the manual roll lands, re-enable the auto-rollers for the relevant repos. 108 109The autoroller configurations live in the [skia/buildbot repository](https://skia.googlesource.com/buildbot/) 110in the [autoroll/config](https://skia.googlesource.com/buildbot/+/master/autoroll/config) folder. 111 112## Task 4: ANGLE Standalone Testing 113 114See more detailed instructions on by following [this link](README.md). 115 116## Task 5: Monitor SwANGLE CI and Try Testers 117 118Most important task here is to keep healthy the 2 SwANGLE bots on ANGLE CQ, 119[linux-swangle-try-tot-angle-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-tot-angle-x64) 120and 121[win-swangle-try-tot-angle-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-tot-angle-x86). 122As well as the 2 SwANGLE bots used for ANGLE rolls on Chromium CQ, 123[linux-swangle-try-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-x64) 124and 125[win-swangle-try-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-x86). 126 127Same instructions as for [Task 1](#task-1_monitor-angle-ci-and-try-testers) apply here. 128Some failures on these bots may be due to SwiftShader changes, however. 129The possible ways to handle these failures are: 1301. If possible, suppress the failing tests in ANGLE, opening a bug to investigate these later. 1311. If it is clear that an ANGLE CL caused a regression, 132 consider whether reverting it or suppressing the failures is a better course of action. 1331. If a SwiftShader CL is suspected, and the breakage is too severe to be suppressed, 134 (a lot of tests fail in multiple suites), 135 it is possible to revert the responsible SwiftShader roll into Chromium 136 and open a SwiftShader [bug](http://go/swiftshaderbugs). SwiftShader rolls into Chromium 137 should fail afterwards, but if the bad roll manages to reland, 138 the [autoroller](https://autoroll.skia.org/r/swiftshader-chromium-autoroll) needs to be stopped. 139 140A lower priority task here is to keep healthy all the SwANGLE 141[CI](https://luci-milo.appspot.com/p/chromium/g/chromium.swangle/builders) and 142[Try](https://luci-milo.appspot.com/p/chromium/g/tryserver.chromium.swangle/builders) bots. 143