diff --git a/infra/ANGLEWrangling.md b/infra/ANGLEWrangling.md new file mode 100644 index 0000000000000..3897cafd312d3 --- /dev/null +++ b/infra/ANGLEWrangling.md @@ -0,0 +1,73 @@ +# ANGLE Wrangling + +As an ANGLE Sheriff. Your job is to: + + 1. Keep the [ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/angle.try/builders) in good working order. + 1. Monitor the [Chromium GPU FYI Waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console) and respond to ANGLE bugs. + 1. Control and monitor the [ANGLE auto-roller](https://autoroll.skia.org/r/angle-chromium-autoroll). + 1. Keep the [ANGLE Standalone Testers](README.md) in good working order. + +If you're not an ANGLE team member, you can contact us on the public ANGLE project [Google group](https://groups.google.com/forum/#!forum/angleproject). + +## Task 1: The Try Waterfall + +Your first job is to keep the +[ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/angle.try/builders) healthy. +Some failures are expected on this waterfall. Developers might be testing +expectedly buggy code. But persistent flakiness and failures should be +reported and reverted. + +When encoutering an unexpected failure in your CLs please +[file an ANGLE bug](http://anglebug.com/new) and cc the current ANGLE wrangler. If the +failure is unrelated to ANGLE [file a Chromium bug](http://crbug.com/new) and +mark the bug as `Hotlist-PixelWrangler`. Refer to +[build.chromium.org](https://ci.chromium.org/p/chromium/g/main/console) to +find the current ANGLE wrangler and GPU Pixel Wrangler. + +**NOTE: When all builds seem to be purple or otherwise broken:** + +This could be a major infrastructure outage. File a high-priority bug using [g.co/bugatrooper](http://g.co/bugatrooper). + +## Task 2: Respond to Bugs + +ANGLE bugs sometimes make it past the commit queue testing and into the master +branch. This can be because of flaky tests or because the failures are +specific to system configurations for which we lack full pre-commit testing +support. + +The [Chromium GPU FYI Waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console) +waterfall includes a number of these one-off specialized configurations. +Monitor this console for persistent breakage that could be related to ANGLE. +Also follow the `Internals>GPU>ANGLE` component on the Chromium issue tracker +to be alerted to reports of breakage on the GPU.FYI waterfall. Googlers can use [sheriff-o-matic](https://sheriff-o-matic.appspot.com/chromium.gpu.fyi) to monitor the health of the GPU.FYI waterfall. + +Note that the GPU Pixel Wrangler is responsible for the *Chromium* bugs. +Please file issues with the tag `Hotlist-PixelWrangler` for bugs that aren't +caused by ANGLE regressions. + +*IMPORTANT*: Info to include in bug reports: + + * Links to all first failing builds (eg first windows failure, first mac failure, etc). + * Related regression ranges. See below on how to determine the ANGLE regression range. + * Relevant error messages. + * Set components: `Internals>GPU` and/or `Internals>GPU>ANGLE`. + * cc relevant sheriffs or blame suspects. + * Set the `Hotlist-PixelWrangler` label. + +### How to determine the ANGLE regression range on the GPU.FYI bots: + + 1. Open the first failing and last passing builds. + 1. For test failures: record `parent_got_angle_revision` in both builds. + 1. For compile failures record `got_angle_revision`. + 1. Use this URL: https://chromium.googlesource.com/angle/angle.git/+log/.. + +## Task 3: The Auto-Roller + +The [ANGLE auto-roller](https://autoroll.skia.org/r/angle-chromium-autoroll) automatically updates Chrome with the latest ANGLE changes. + + 1. You will be cc'ed on ANGLE rolls. Please check failed rolls to verify there is no blocking breakage. + 1. You are also responsible for pausing the roller 24h before branch days, and resuming afterwards. See the [Chrome Release Schedule](https://chromiumdash.appspot.com/schedule). + +## Task 4: ANGLE Standalone Testing + +See more detailed instructions on by following [this link](README.md). diff --git a/infra/README.md b/infra/README.md new file mode 100644 index 0000000000000..45f562ee77dc0 --- /dev/null +++ b/infra/README.md @@ -0,0 +1,56 @@ +# ANGLE Standalone Testing Infrastructure + +In addition to the ANGLE try bots using Chrome, and the GPU.FYI bots, ANGLE +has standalone testing on the Chrome infrastructure. Currently these tests are +compile-only. This page is for maintaining the configurations that don't use +Chromium. Also see the main instructions for [ANGLE Wrangling](ANGLEWrangling.md). + +It's the ANGLE team's responsibility for maintaining this testing +infrastructure. The bot configurations live in four different repos and six +branches. + +## Info Consoles + +Continuous builders for every ANGLE revision are found on the CI console: + +[https://ci.chromium.org/p/angle/g/ci/console](https://ci.chromium.org/p/angle/g/ci/console) + +Try jobs from pre-commit builds are found on the builders console: + +[https://ci.chromium.org/p/angle/g/try/builders](https://ci.chromium.org/p/angle/g/try/builders) + +## How to add a new build configuration + + 1. [`bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure`](http://bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure): + + * Request new slaves by filing an infra issue. + + 1. [`chromium.googlesource.com/chromium/tools/build`](https://chromium.googlesource.com/chromium/tools/build): + + * Update **`scripts/slave/recipes/angle.py`** with new the config. + * The recipe code requires 100% code coverage through mock bots, so add mock bot config to GenTests. + * Maybe run `./scripts/slave/recipes.py test train` to update checked-in golden files. This might no longer be necessary. + + 1. [`chrome-internal.googlesource.com/infradata/config`](http://chrome-internal.googlesource.com/infradata/config): + + * Update **`configs/chromium-swarm/bots.cfg`** to map from the slaves requested in step 1 to the builder configured in step 2. + + 1. [`chromium.googlesource.com/angle/angle`](http://chromium.googlesource.com/angle/angle): + + * Update **`infra/config/global/cr-buildbucket.cfg`** to add the new builder (to ci and try), and set the new config option. + * Update **`infra/config/global/luci-milo.cfg`** to make the builders show up on the ci and try waterfalls. + * Update **`infra/config/global/luci-scheduler.cfg`** to make the builders trigger on new commits or try jobs respectively. + * Update **`infra/config/cq.cfg`** to add the builder to the default CQ jobs (if desired). + +## Other Configuration + +There are other places where configuration for ANGLE infra lives. These are files that we shouldn't need to modify very often: + + 1. [`chrome-internal.googlesource.com/infradata/config`](http://chrome-internal.googlesource.com/infradata/config): + + * **`configs/luci-token-server/service_accounts.cfg`** (service account names) + * **`configs/chromium-swarm/pools.cfg`** (swarming pools) + + 1. [`chromium.googlesource.com/chromium/tools/depot_tools`](http://chromium.googlesource.com/chromium/tools/depot_tools): + + * **`recipes/recipe_modules/gclient/config.py`** (gclient config)