xref: /aosp_15_r20/external/angle/infra/config/main.star (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker#!/usr/bin/env lucicfg
2*8975f5c5SAndroid Build Coastguard Worker#
3*8975f5c5SAndroid Build Coastguard Worker# Copyright 2021 The Chromium Authors. All rights reserved.
4*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
6*8975f5c5SAndroid Build Coastguard Worker#
7*8975f5c5SAndroid Build Coastguard Worker# main.star: lucicfg configuration for ANGLE's standalone builders.
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Workerlucicfg.check_version(min = "1.31.3", message = "Update depot_tools")
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
12*8975f5c5SAndroid Build Coastguard Workerlucicfg.enable_experiment("crbug.com/1182002")
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard Worker# Fail build when merge script fails.
15*8975f5c5SAndroid Build Coastguard Workerbuild_experiments = {"chromium_swarming.expose_merge_script_failures": 100}
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard Workerlucicfg.config(
18*8975f5c5SAndroid Build Coastguard Worker    fail_on_warnings = True,
19*8975f5c5SAndroid Build Coastguard Worker    lint_checks = [
20*8975f5c5SAndroid Build Coastguard Worker        "default",
21*8975f5c5SAndroid Build Coastguard Worker        "-module-docstring",
22*8975f5c5SAndroid Build Coastguard Worker        "-function-docstring",
23*8975f5c5SAndroid Build Coastguard Worker    ],
24*8975f5c5SAndroid Build Coastguard Worker)
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Workerluci.project(
27*8975f5c5SAndroid Build Coastguard Worker    name = "angle",
28*8975f5c5SAndroid Build Coastguard Worker    buildbucket = "cr-buildbucket.appspot.com",
29*8975f5c5SAndroid Build Coastguard Worker    logdog = "luci-logdog.appspot.com",
30*8975f5c5SAndroid Build Coastguard Worker    milo = "luci-milo.appspot.com",
31*8975f5c5SAndroid Build Coastguard Worker    notify = "luci-notify.appspot.com",
32*8975f5c5SAndroid Build Coastguard Worker    scheduler = "luci-scheduler.appspot.com",
33*8975f5c5SAndroid Build Coastguard Worker    swarming = "chromium-swarm.appspot.com",
34*8975f5c5SAndroid Build Coastguard Worker    acls = [
35*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
36*8975f5c5SAndroid Build Coastguard Worker            roles = [
37*8975f5c5SAndroid Build Coastguard Worker                acl.PROJECT_CONFIGS_READER,
38*8975f5c5SAndroid Build Coastguard Worker                acl.LOGDOG_READER,
39*8975f5c5SAndroid Build Coastguard Worker                acl.BUILDBUCKET_READER,
40*8975f5c5SAndroid Build Coastguard Worker                acl.SCHEDULER_READER,
41*8975f5c5SAndroid Build Coastguard Worker            ],
42*8975f5c5SAndroid Build Coastguard Worker            groups = "all",
43*8975f5c5SAndroid Build Coastguard Worker        ),
44*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
45*8975f5c5SAndroid Build Coastguard Worker            roles = [
46*8975f5c5SAndroid Build Coastguard Worker                acl.SCHEDULER_OWNER,
47*8975f5c5SAndroid Build Coastguard Worker            ],
48*8975f5c5SAndroid Build Coastguard Worker            groups = "project-angle-admins",
49*8975f5c5SAndroid Build Coastguard Worker        ),
50*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
51*8975f5c5SAndroid Build Coastguard Worker            roles = [
52*8975f5c5SAndroid Build Coastguard Worker                acl.LOGDOG_WRITER,
53*8975f5c5SAndroid Build Coastguard Worker            ],
54*8975f5c5SAndroid Build Coastguard Worker            groups = "luci-logdog-angle-writers",
55*8975f5c5SAndroid Build Coastguard Worker        ),
56*8975f5c5SAndroid Build Coastguard Worker    ],
57*8975f5c5SAndroid Build Coastguard Worker    bindings = [
58*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
59*8975f5c5SAndroid Build Coastguard Worker            roles = "role/configs.validator",
60*8975f5c5SAndroid Build Coastguard Worker            users = "[email protected]",
61*8975f5c5SAndroid Build Coastguard Worker        ),
62*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
63*8975f5c5SAndroid Build Coastguard Worker            roles = "role/swarming.poolOwner",
64*8975f5c5SAndroid Build Coastguard Worker            groups = ["project-angle-owners", "mdb/chrome-troopers"],
65*8975f5c5SAndroid Build Coastguard Worker        ),
66*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
67*8975f5c5SAndroid Build Coastguard Worker            roles = "role/swarming.poolViewer",
68*8975f5c5SAndroid Build Coastguard Worker            groups = "all",
69*8975f5c5SAndroid Build Coastguard Worker        ),
70*8975f5c5SAndroid Build Coastguard Worker        # Allow any Angle build to trigger a test ran under testing accounts
71*8975f5c5SAndroid Build Coastguard Worker        # used on shared chromium tester pools.
72*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
73*8975f5c5SAndroid Build Coastguard Worker            roles = "role/swarming.taskServiceAccount",
74*8975f5c5SAndroid Build Coastguard Worker            users = [
75*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
76*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
77*8975f5c5SAndroid Build Coastguard Worker            ],
78*8975f5c5SAndroid Build Coastguard Worker        ),
79*8975f5c5SAndroid Build Coastguard Worker    ],
80*8975f5c5SAndroid Build Coastguard Worker)
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard Worker# Swarming permissions
83*8975f5c5SAndroid Build Coastguard Workerluci.realm(name = "pools/ci")
84*8975f5c5SAndroid Build Coastguard Workerluci.realm(name = "pools/try")
85*8975f5c5SAndroid Build Coastguard Worker
86*8975f5c5SAndroid Build Coastguard Worker# Allow Angle owners and Chrome troopers to run tasks directly for testing and
87*8975f5c5SAndroid Build Coastguard Worker# development on all Angle bots. E.g. via `led` tool or "Debug" button in Swarming Web UI.
88*8975f5c5SAndroid Build Coastguard Workerluci.binding(
89*8975f5c5SAndroid Build Coastguard Worker    realm = "@root",
90*8975f5c5SAndroid Build Coastguard Worker    roles = "role/swarming.poolUser",
91*8975f5c5SAndroid Build Coastguard Worker    groups = ["project-angle-owners", "mdb/chrome-troopers"],
92*8975f5c5SAndroid Build Coastguard Worker)
93*8975f5c5SAndroid Build Coastguard Workerluci.binding(
94*8975f5c5SAndroid Build Coastguard Worker    realm = "@root",
95*8975f5c5SAndroid Build Coastguard Worker    roles = "role/swarming.taskTriggerer",
96*8975f5c5SAndroid Build Coastguard Worker    groups = ["project-angle-owners", "mdb/chrome-troopers"],
97*8975f5c5SAndroid Build Coastguard Worker)
98*8975f5c5SAndroid Build Coastguard Worker
99*8975f5c5SAndroid Build Coastguard Workerdef _generate_project_pyl(ctx):
100*8975f5c5SAndroid Build Coastguard Worker    ctx.output["project.pyl"] = "\n".join([
101*8975f5c5SAndroid Build Coastguard Worker        "# This is a non-LUCI generated file",
102*8975f5c5SAndroid Build Coastguard Worker        "# This is consumed by presubmit checks that need to validate the config",
103*8975f5c5SAndroid Build Coastguard Worker        repr(dict(
104*8975f5c5SAndroid Build Coastguard Worker            # We don't validate matching source-side configs for simplicity.
105*8975f5c5SAndroid Build Coastguard Worker            validate_source_side_specs_have_builder = False,
106*8975f5c5SAndroid Build Coastguard Worker        )),
107*8975f5c5SAndroid Build Coastguard Worker        "",
108*8975f5c5SAndroid Build Coastguard Worker    ])
109*8975f5c5SAndroid Build Coastguard Worker
110*8975f5c5SAndroid Build Coastguard Workerlucicfg.generator(_generate_project_pyl)
111*8975f5c5SAndroid Build Coastguard Worker
112*8975f5c5SAndroid Build Coastguard Workerluci.milo(
113*8975f5c5SAndroid Build Coastguard Worker    logo = "https://storage.googleapis.com/chrome-infra/OpenGL%20ES_RGB_June16.svg",
114*8975f5c5SAndroid Build Coastguard Worker    bug_url_template = "https://bugs.chromium.org/p/angleproject/issues/entry?components=Infra",
115*8975f5c5SAndroid Build Coastguard Worker)
116*8975f5c5SAndroid Build Coastguard Worker
117*8975f5c5SAndroid Build Coastguard Workerluci.logdog(gs_bucket = "chromium-luci-logdog")
118*8975f5c5SAndroid Build Coastguard Worker
119*8975f5c5SAndroid Build Coastguard Worker# The category for an os: a more generic grouping than specific OS versions that
120*8975f5c5SAndroid Build Coastguard Worker# can be used for computing defaults
121*8975f5c5SAndroid Build Coastguard Workeros_category = struct(
122*8975f5c5SAndroid Build Coastguard Worker    ANDROID = "Android",
123*8975f5c5SAndroid Build Coastguard Worker    LINUX = "Linux",
124*8975f5c5SAndroid Build Coastguard Worker    MAC = "Mac",
125*8975f5c5SAndroid Build Coastguard Worker    WINDOWS = "Windows",
126*8975f5c5SAndroid Build Coastguard Worker)
127*8975f5c5SAndroid Build Coastguard Worker
128*8975f5c5SAndroid Build Coastguard Workerdef os_enum(dimension, category, console_name):
129*8975f5c5SAndroid Build Coastguard Worker    return struct(dimension = dimension, category = category, console_name = console_name)
130*8975f5c5SAndroid Build Coastguard Worker
131*8975f5c5SAndroid Build Coastguard Workeros = struct(
132*8975f5c5SAndroid Build Coastguard Worker    ANDROID = os_enum("Ubuntu", os_category.ANDROID, "android"),
133*8975f5c5SAndroid Build Coastguard Worker    LINUX = os_enum("Ubuntu", os_category.LINUX, "linux"),
134*8975f5c5SAndroid Build Coastguard Worker    MAC = os_enum("Mac", os_category.MAC, "mac"),
135*8975f5c5SAndroid Build Coastguard Worker    WINDOWS = os_enum("Windows", os_category.WINDOWS, "win"),
136*8975f5c5SAndroid Build Coastguard Worker)
137*8975f5c5SAndroid Build Coastguard Worker
138*8975f5c5SAndroid Build Coastguard Worker# Recipes
139*8975f5c5SAndroid Build Coastguard Worker
140*8975f5c5SAndroid Build Coastguard Worker_RECIPE_NAME_PREFIX = "recipe:"
141*8975f5c5SAndroid Build Coastguard Worker_DEFAULT_BUILDERLESS_OS_CATEGORIES = [os_category.LINUX, os_category.WINDOWS]
142*8975f5c5SAndroid Build Coastguard Worker
143*8975f5c5SAndroid Build Coastguard Workerdef _recipe_for_package(cipd_package):
144*8975f5c5SAndroid Build Coastguard Worker    def recipe(*, name, cipd_version = None, recipe = None, use_python3 = False):
145*8975f5c5SAndroid Build Coastguard Worker        # Force the caller to put the recipe prefix rather than adding it
146*8975f5c5SAndroid Build Coastguard Worker        # programatically to make the string greppable
147*8975f5c5SAndroid Build Coastguard Worker        if not name.startswith(_RECIPE_NAME_PREFIX):
148*8975f5c5SAndroid Build Coastguard Worker            fail("Recipe name {!r} does not start with {!r}"
149*8975f5c5SAndroid Build Coastguard Worker                .format(name, _RECIPE_NAME_PREFIX))
150*8975f5c5SAndroid Build Coastguard Worker        if recipe == None:
151*8975f5c5SAndroid Build Coastguard Worker            recipe = name[len(_RECIPE_NAME_PREFIX):]
152*8975f5c5SAndroid Build Coastguard Worker        return luci.recipe(
153*8975f5c5SAndroid Build Coastguard Worker            name = name,
154*8975f5c5SAndroid Build Coastguard Worker            cipd_package = cipd_package,
155*8975f5c5SAndroid Build Coastguard Worker            cipd_version = cipd_version,
156*8975f5c5SAndroid Build Coastguard Worker            recipe = recipe,
157*8975f5c5SAndroid Build Coastguard Worker            use_bbagent = True,
158*8975f5c5SAndroid Build Coastguard Worker            use_python3 = use_python3,
159*8975f5c5SAndroid Build Coastguard Worker        )
160*8975f5c5SAndroid Build Coastguard Worker
161*8975f5c5SAndroid Build Coastguard Worker    return recipe
162*8975f5c5SAndroid Build Coastguard Worker
163*8975f5c5SAndroid Build Coastguard Workerbuild_recipe = _recipe_for_package(
164*8975f5c5SAndroid Build Coastguard Worker    "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",
165*8975f5c5SAndroid Build Coastguard Worker)
166*8975f5c5SAndroid Build Coastguard Worker
167*8975f5c5SAndroid Build Coastguard Workerbuild_recipe(
168*8975f5c5SAndroid Build Coastguard Worker    name = "recipe:angle",
169*8975f5c5SAndroid Build Coastguard Worker    use_python3 = True,
170*8975f5c5SAndroid Build Coastguard Worker)
171*8975f5c5SAndroid Build Coastguard Worker
172*8975f5c5SAndroid Build Coastguard Workerbuild_recipe(
173*8975f5c5SAndroid Build Coastguard Worker    name = "recipe:run_presubmit",
174*8975f5c5SAndroid Build Coastguard Worker    use_python3 = True,
175*8975f5c5SAndroid Build Coastguard Worker)
176*8975f5c5SAndroid Build Coastguard Worker
177*8975f5c5SAndroid Build Coastguard Workerdef get_os_from_name(name):
178*8975f5c5SAndroid Build Coastguard Worker    if name.startswith("android"):
179*8975f5c5SAndroid Build Coastguard Worker        return os.ANDROID
180*8975f5c5SAndroid Build Coastguard Worker    if name.startswith("linux"):
181*8975f5c5SAndroid Build Coastguard Worker        return os.LINUX
182*8975f5c5SAndroid Build Coastguard Worker    if name.startswith("win"):
183*8975f5c5SAndroid Build Coastguard Worker        return os.WINDOWS
184*8975f5c5SAndroid Build Coastguard Worker    if name.startswith("mac"):
185*8975f5c5SAndroid Build Coastguard Worker        return os.MAC
186*8975f5c5SAndroid Build Coastguard Worker    return os.MAC
187*8975f5c5SAndroid Build Coastguard Worker
188*8975f5c5SAndroid Build Coastguard Workerdef get_gpu_type_from_builder_name(name):
189*8975f5c5SAndroid Build Coastguard Worker    return name.split("-")[1]
190*8975f5c5SAndroid Build Coastguard Worker
191*8975f5c5SAndroid Build Coastguard Worker# Adds both the CI and Try standalone builders.
192*8975f5c5SAndroid Build Coastguard Workerdef angle_builder(name, cpu):
193*8975f5c5SAndroid Build Coastguard Worker    config_os = get_os_from_name(name)
194*8975f5c5SAndroid Build Coastguard Worker    dimensions = {}
195*8975f5c5SAndroid Build Coastguard Worker    dimensions["os"] = config_os.dimension
196*8975f5c5SAndroid Build Coastguard Worker
197*8975f5c5SAndroid Build Coastguard Worker    if config_os.category in _DEFAULT_BUILDERLESS_OS_CATEGORIES:
198*8975f5c5SAndroid Build Coastguard Worker        dimensions["builderless"] = "1"
199*8975f5c5SAndroid Build Coastguard Worker
200*8975f5c5SAndroid Build Coastguard Worker    is_asan = "-asan" in name
201*8975f5c5SAndroid Build Coastguard Worker    is_tsan = "-tsan" in name
202*8975f5c5SAndroid Build Coastguard Worker    is_debug = "-dbg" in name
203*8975f5c5SAndroid Build Coastguard Worker    is_exp = "-exp" in name
204*8975f5c5SAndroid Build Coastguard Worker    is_perf = name.endswith("-perf")
205*8975f5c5SAndroid Build Coastguard Worker    is_s22 = "s22" in name
206*8975f5c5SAndroid Build Coastguard Worker    is_trace = name.endswith("-trace")
207*8975f5c5SAndroid Build Coastguard Worker    is_uwp = "winuwp" in name
208*8975f5c5SAndroid Build Coastguard Worker    is_msvc = is_uwp or "-msvc" in name
209*8975f5c5SAndroid Build Coastguard Worker
210*8975f5c5SAndroid Build Coastguard Worker    location_filters = None
211*8975f5c5SAndroid Build Coastguard Worker
212*8975f5c5SAndroid Build Coastguard Worker    if name.endswith("-compile"):
213*8975f5c5SAndroid Build Coastguard Worker        test_mode = "compile_only"
214*8975f5c5SAndroid Build Coastguard Worker        category = "compile"
215*8975f5c5SAndroid Build Coastguard Worker    elif name.endswith("-test"):
216*8975f5c5SAndroid Build Coastguard Worker        test_mode = "compile_and_test"
217*8975f5c5SAndroid Build Coastguard Worker        category = "test"
218*8975f5c5SAndroid Build Coastguard Worker    elif is_trace:
219*8975f5c5SAndroid Build Coastguard Worker        test_mode = "trace_tests"
220*8975f5c5SAndroid Build Coastguard Worker        category = "trace"
221*8975f5c5SAndroid Build Coastguard Worker
222*8975f5c5SAndroid Build Coastguard Worker        # Trace tests are only run on CQ if files in the capture folders change.
223*8975f5c5SAndroid Build Coastguard Worker        location_filters = [
224*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "DEPS"),
225*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "src/libANGLE/capture/.+"),
226*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "src/tests/angle_end2end_tests_expectations.txt"),
227*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "src/tests/capture.+"),
228*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "src/tests/egl_tests/.+"),
229*8975f5c5SAndroid Build Coastguard Worker            cq.location_filter(path_regexp = "src/tests/gl_tests/.+"),
230*8975f5c5SAndroid Build Coastguard Worker        ]
231*8975f5c5SAndroid Build Coastguard Worker    elif is_perf:
232*8975f5c5SAndroid Build Coastguard Worker        test_mode = "compile_and_test"
233*8975f5c5SAndroid Build Coastguard Worker        category = "perf"
234*8975f5c5SAndroid Build Coastguard Worker    else:
235*8975f5c5SAndroid Build Coastguard Worker        print("Test mode unknown for %s" % name)
236*8975f5c5SAndroid Build Coastguard Worker
237*8975f5c5SAndroid Build Coastguard Worker    if is_msvc:
238*8975f5c5SAndroid Build Coastguard Worker        toolchain = "msvc"
239*8975f5c5SAndroid Build Coastguard Worker    else:
240*8975f5c5SAndroid Build Coastguard Worker        toolchain = "clang"
241*8975f5c5SAndroid Build Coastguard Worker
242*8975f5c5SAndroid Build Coastguard Worker    if is_uwp:
243*8975f5c5SAndroid Build Coastguard Worker        os_toolchain_name = "win-uwp"
244*8975f5c5SAndroid Build Coastguard Worker    elif is_msvc:
245*8975f5c5SAndroid Build Coastguard Worker        os_toolchain_name = "win-msvc"
246*8975f5c5SAndroid Build Coastguard Worker    else:
247*8975f5c5SAndroid Build Coastguard Worker        os_toolchain_name = config_os.console_name
248*8975f5c5SAndroid Build Coastguard Worker
249*8975f5c5SAndroid Build Coastguard Worker    if is_perf:
250*8975f5c5SAndroid Build Coastguard Worker        short_name = get_gpu_type_from_builder_name(name)
251*8975f5c5SAndroid Build Coastguard Worker    elif is_asan:
252*8975f5c5SAndroid Build Coastguard Worker        short_name = "asan"
253*8975f5c5SAndroid Build Coastguard Worker        if is_exp:
254*8975f5c5SAndroid Build Coastguard Worker            short_name = "asan-exp"
255*8975f5c5SAndroid Build Coastguard Worker    elif is_tsan:
256*8975f5c5SAndroid Build Coastguard Worker        short_name = "tsan"
257*8975f5c5SAndroid Build Coastguard Worker        if is_exp:
258*8975f5c5SAndroid Build Coastguard Worker            short_name = "tsan-exp"
259*8975f5c5SAndroid Build Coastguard Worker    elif is_debug:
260*8975f5c5SAndroid Build Coastguard Worker        short_name = "dbg"
261*8975f5c5SAndroid Build Coastguard Worker    elif is_exp:
262*8975f5c5SAndroid Build Coastguard Worker        short_name = "exp"
263*8975f5c5SAndroid Build Coastguard Worker        if is_s22:
264*8975f5c5SAndroid Build Coastguard Worker            # This is a little clunky, but we'd like this to be cleanly "s22" rather than "s22-exp"
265*8975f5c5SAndroid Build Coastguard Worker            short_name = "s22"
266*8975f5c5SAndroid Build Coastguard Worker    else:
267*8975f5c5SAndroid Build Coastguard Worker        short_name = "rel"
268*8975f5c5SAndroid Build Coastguard Worker
269*8975f5c5SAndroid Build Coastguard Worker    properties = {
270*8975f5c5SAndroid Build Coastguard Worker        "builder_group": "angle",
271*8975f5c5SAndroid Build Coastguard Worker        "$build/reclient": {
272*8975f5c5SAndroid Build Coastguard Worker            "instance": "rbe-chromium-untrusted",
273*8975f5c5SAndroid Build Coastguard Worker            "metrics_project": "chromium-reclient-metrics",
274*8975f5c5SAndroid Build Coastguard Worker            "scandeps_server": True,
275*8975f5c5SAndroid Build Coastguard Worker        },
276*8975f5c5SAndroid Build Coastguard Worker        "platform": config_os.console_name,
277*8975f5c5SAndroid Build Coastguard Worker        "toolchain": toolchain,
278*8975f5c5SAndroid Build Coastguard Worker        "test_mode": test_mode,
279*8975f5c5SAndroid Build Coastguard Worker    }
280*8975f5c5SAndroid Build Coastguard Worker
281*8975f5c5SAndroid Build Coastguard Worker    ci_properties = {
282*8975f5c5SAndroid Build Coastguard Worker        "builder_group": "angle",
283*8975f5c5SAndroid Build Coastguard Worker        "$build/reclient": {
284*8975f5c5SAndroid Build Coastguard Worker            "instance": "rbe-chromium-trusted",
285*8975f5c5SAndroid Build Coastguard Worker            "metrics_project": "chromium-reclient-metrics",
286*8975f5c5SAndroid Build Coastguard Worker            "scandeps_server": True,
287*8975f5c5SAndroid Build Coastguard Worker        },
288*8975f5c5SAndroid Build Coastguard Worker        "platform": config_os.console_name,
289*8975f5c5SAndroid Build Coastguard Worker        "toolchain": toolchain,
290*8975f5c5SAndroid Build Coastguard Worker        "test_mode": test_mode,
291*8975f5c5SAndroid Build Coastguard Worker    }
292*8975f5c5SAndroid Build Coastguard Worker
293*8975f5c5SAndroid Build Coastguard Worker    # TODO(343503161): Remove sheriff_rotations after SoM is updated.
294*8975f5c5SAndroid Build Coastguard Worker    ci_properties["gardener_rotations"] = ["angle"]
295*8975f5c5SAndroid Build Coastguard Worker    ci_properties["sheriff_rotations"] = ["angle"]
296*8975f5c5SAndroid Build Coastguard Worker
297*8975f5c5SAndroid Build Coastguard Worker    if is_perf:
298*8975f5c5SAndroid Build Coastguard Worker        timeout_hours = 5
299*8975f5c5SAndroid Build Coastguard Worker    else:
300*8975f5c5SAndroid Build Coastguard Worker        timeout_hours = 3
301*8975f5c5SAndroid Build Coastguard Worker
302*8975f5c5SAndroid Build Coastguard Worker    luci.builder(
303*8975f5c5SAndroid Build Coastguard Worker        name = name,
304*8975f5c5SAndroid Build Coastguard Worker        bucket = "ci",
305*8975f5c5SAndroid Build Coastguard Worker        triggered_by = ["main-poller"],
306*8975f5c5SAndroid Build Coastguard Worker        executable = "recipe:angle",
307*8975f5c5SAndroid Build Coastguard Worker        experiments = build_experiments,
308*8975f5c5SAndroid Build Coastguard Worker        service_account = "[email protected]",
309*8975f5c5SAndroid Build Coastguard Worker        shadow_service_account = "[email protected]",
310*8975f5c5SAndroid Build Coastguard Worker        properties = ci_properties,
311*8975f5c5SAndroid Build Coastguard Worker        dimensions = dimensions,
312*8975f5c5SAndroid Build Coastguard Worker        build_numbers = True,
313*8975f5c5SAndroid Build Coastguard Worker        resultdb_settings = resultdb.settings(enable = True),
314*8975f5c5SAndroid Build Coastguard Worker        test_presentation = resultdb.test_presentation(
315*8975f5c5SAndroid Build Coastguard Worker            column_keys = ["v.gpu"],
316*8975f5c5SAndroid Build Coastguard Worker            grouping_keys = ["status", "v.test_suite"],
317*8975f5c5SAndroid Build Coastguard Worker        ),
318*8975f5c5SAndroid Build Coastguard Worker        triggering_policy = scheduler.policy(
319*8975f5c5SAndroid Build Coastguard Worker            kind = scheduler.LOGARITHMIC_BATCHING_KIND,
320*8975f5c5SAndroid Build Coastguard Worker            log_base = 2,
321*8975f5c5SAndroid Build Coastguard Worker        ),
322*8975f5c5SAndroid Build Coastguard Worker        execution_timeout = timeout_hours * time.hour,
323*8975f5c5SAndroid Build Coastguard Worker    )
324*8975f5c5SAndroid Build Coastguard Worker
325*8975f5c5SAndroid Build Coastguard Worker    active_experimental_builders = [
326*8975f5c5SAndroid Build Coastguard Worker        "android-arm64-exp-test",
327*8975f5c5SAndroid Build Coastguard Worker        "android-arm64-exp-s22-test",
328*8975f5c5SAndroid Build Coastguard Worker        "linux-exp-test",
329*8975f5c5SAndroid Build Coastguard Worker        "mac-exp-test",
330*8975f5c5SAndroid Build Coastguard Worker        "win-exp-test",
331*8975f5c5SAndroid Build Coastguard Worker    ]
332*8975f5c5SAndroid Build Coastguard Worker
333*8975f5c5SAndroid Build Coastguard Worker    if (not is_exp) or (name in active_experimental_builders):
334*8975f5c5SAndroid Build Coastguard Worker        luci.console_view_entry(
335*8975f5c5SAndroid Build Coastguard Worker            console_view = "ci",
336*8975f5c5SAndroid Build Coastguard Worker            builder = "ci/" + name,
337*8975f5c5SAndroid Build Coastguard Worker            category = category + "|" + os_toolchain_name + "|" + cpu,
338*8975f5c5SAndroid Build Coastguard Worker            short_name = short_name,
339*8975f5c5SAndroid Build Coastguard Worker        )
340*8975f5c5SAndroid Build Coastguard Worker    else:
341*8975f5c5SAndroid Build Coastguard Worker        luci.list_view_entry(
342*8975f5c5SAndroid Build Coastguard Worker            list_view = "exp",
343*8975f5c5SAndroid Build Coastguard Worker            builder = "ci/" + name,
344*8975f5c5SAndroid Build Coastguard Worker        )
345*8975f5c5SAndroid Build Coastguard Worker
346*8975f5c5SAndroid Build Coastguard Worker    # Do not include perf tests in "try".
347*8975f5c5SAndroid Build Coastguard Worker    if not is_perf:
348*8975f5c5SAndroid Build Coastguard Worker        luci.list_view_entry(
349*8975f5c5SAndroid Build Coastguard Worker            list_view = "try",
350*8975f5c5SAndroid Build Coastguard Worker            builder = "try/" + name,
351*8975f5c5SAndroid Build Coastguard Worker        )
352*8975f5c5SAndroid Build Coastguard Worker
353*8975f5c5SAndroid Build Coastguard Worker        luci.builder(
354*8975f5c5SAndroid Build Coastguard Worker            name = name,
355*8975f5c5SAndroid Build Coastguard Worker            bucket = "try",
356*8975f5c5SAndroid Build Coastguard Worker            executable = "recipe:angle",
357*8975f5c5SAndroid Build Coastguard Worker            experiments = build_experiments,
358*8975f5c5SAndroid Build Coastguard Worker            service_account = "[email protected]",
359*8975f5c5SAndroid Build Coastguard Worker            properties = properties,
360*8975f5c5SAndroid Build Coastguard Worker            dimensions = dimensions,
361*8975f5c5SAndroid Build Coastguard Worker            build_numbers = True,
362*8975f5c5SAndroid Build Coastguard Worker            resultdb_settings = resultdb.settings(enable = True),
363*8975f5c5SAndroid Build Coastguard Worker            test_presentation = resultdb.test_presentation(
364*8975f5c5SAndroid Build Coastguard Worker                column_keys = ["v.gpu"],
365*8975f5c5SAndroid Build Coastguard Worker                grouping_keys = ["status", "v.test_suite"],
366*8975f5c5SAndroid Build Coastguard Worker            ),
367*8975f5c5SAndroid Build Coastguard Worker        )
368*8975f5c5SAndroid Build Coastguard Worker
369*8975f5c5SAndroid Build Coastguard Worker        # Don't add experimental bots to CQ.
370*8975f5c5SAndroid Build Coastguard Worker        if not is_exp:
371*8975f5c5SAndroid Build Coastguard Worker            luci.cq_tryjob_verifier(
372*8975f5c5SAndroid Build Coastguard Worker                cq_group = "main",
373*8975f5c5SAndroid Build Coastguard Worker                builder = "angle:try/" + name,
374*8975f5c5SAndroid Build Coastguard Worker                location_filters = location_filters,
375*8975f5c5SAndroid Build Coastguard Worker            )
376*8975f5c5SAndroid Build Coastguard Worker
377*8975f5c5SAndroid Build Coastguard Workerluci.bucket(
378*8975f5c5SAndroid Build Coastguard Worker    name = "ci",
379*8975f5c5SAndroid Build Coastguard Worker    acls = [
380*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
381*8975f5c5SAndroid Build Coastguard Worker            acl.BUILDBUCKET_TRIGGERER,
382*8975f5c5SAndroid Build Coastguard Worker            users = [
383*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
384*8975f5c5SAndroid Build Coastguard Worker            ],
385*8975f5c5SAndroid Build Coastguard Worker        ),
386*8975f5c5SAndroid Build Coastguard Worker    ],
387*8975f5c5SAndroid Build Coastguard Worker)
388*8975f5c5SAndroid Build Coastguard Worker
389*8975f5c5SAndroid Build Coastguard Workerluci.bucket(
390*8975f5c5SAndroid Build Coastguard Worker    name = "try",
391*8975f5c5SAndroid Build Coastguard Worker    acls = [
392*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
393*8975f5c5SAndroid Build Coastguard Worker            acl.BUILDBUCKET_TRIGGERER,
394*8975f5c5SAndroid Build Coastguard Worker            groups = [
395*8975f5c5SAndroid Build Coastguard Worker                "project-angle-tryjob-access",
396*8975f5c5SAndroid Build Coastguard Worker                "service-account-cq",
397*8975f5c5SAndroid Build Coastguard Worker            ],
398*8975f5c5SAndroid Build Coastguard Worker        ),
399*8975f5c5SAndroid Build Coastguard Worker    ],
400*8975f5c5SAndroid Build Coastguard Worker)
401*8975f5c5SAndroid Build Coastguard Worker
402*8975f5c5SAndroid Build Coastguard Worker# Shadow buckets for LED jobs.
403*8975f5c5SAndroid Build Coastguard Workerluci.bucket(
404*8975f5c5SAndroid Build Coastguard Worker    name = "ci.shadow",
405*8975f5c5SAndroid Build Coastguard Worker    shadows = "ci",
406*8975f5c5SAndroid Build Coastguard Worker    constraints = luci.bucket_constraints(
407*8975f5c5SAndroid Build Coastguard Worker        pools = ["luci.angle.ci"],
408*8975f5c5SAndroid Build Coastguard Worker    ),
409*8975f5c5SAndroid Build Coastguard Worker    bindings = [
410*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
411*8975f5c5SAndroid Build Coastguard Worker            roles = "role/buildbucket.creator",
412*8975f5c5SAndroid Build Coastguard Worker            groups = [
413*8975f5c5SAndroid Build Coastguard Worker                "mdb/chrome-build-access-sphinx",
414*8975f5c5SAndroid Build Coastguard Worker                "mdb/chrome-troopers",
415*8975f5c5SAndroid Build Coastguard Worker                "chromium-led-users",
416*8975f5c5SAndroid Build Coastguard Worker            ],
417*8975f5c5SAndroid Build Coastguard Worker            users = [
418*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
419*8975f5c5SAndroid Build Coastguard Worker            ],
420*8975f5c5SAndroid Build Coastguard Worker        ),
421*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
422*8975f5c5SAndroid Build Coastguard Worker            roles = "role/buildbucket.triggerer",
423*8975f5c5SAndroid Build Coastguard Worker            users = [
424*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
425*8975f5c5SAndroid Build Coastguard Worker            ],
426*8975f5c5SAndroid Build Coastguard Worker        ),
427*8975f5c5SAndroid Build Coastguard Worker        # Allow ci builders to create invocations in their own builds.
428*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
429*8975f5c5SAndroid Build Coastguard Worker            roles = "role/resultdb.invocationCreator",
430*8975f5c5SAndroid Build Coastguard Worker            users = [
431*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
432*8975f5c5SAndroid Build Coastguard Worker            ],
433*8975f5c5SAndroid Build Coastguard Worker        ),
434*8975f5c5SAndroid Build Coastguard Worker    ],
435*8975f5c5SAndroid Build Coastguard Worker    dynamic = True,
436*8975f5c5SAndroid Build Coastguard Worker)
437*8975f5c5SAndroid Build Coastguard Worker
438*8975f5c5SAndroid Build Coastguard Workerluci.bucket(
439*8975f5c5SAndroid Build Coastguard Worker    name = "try.shadow",
440*8975f5c5SAndroid Build Coastguard Worker    shadows = "try",
441*8975f5c5SAndroid Build Coastguard Worker    constraints = luci.bucket_constraints(
442*8975f5c5SAndroid Build Coastguard Worker        pools = ["luci.angle.try"],
443*8975f5c5SAndroid Build Coastguard Worker        service_accounts = [
444*8975f5c5SAndroid Build Coastguard Worker            "[email protected]",
445*8975f5c5SAndroid Build Coastguard Worker        ],
446*8975f5c5SAndroid Build Coastguard Worker    ),
447*8975f5c5SAndroid Build Coastguard Worker    bindings = [
448*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
449*8975f5c5SAndroid Build Coastguard Worker            roles = "role/buildbucket.creator",
450*8975f5c5SAndroid Build Coastguard Worker            groups = [
451*8975f5c5SAndroid Build Coastguard Worker                "mdb/chrome-build-access-sphinx",
452*8975f5c5SAndroid Build Coastguard Worker                "mdb/chrome-troopers",
453*8975f5c5SAndroid Build Coastguard Worker                "chromium-led-users",
454*8975f5c5SAndroid Build Coastguard Worker            ],
455*8975f5c5SAndroid Build Coastguard Worker            users = [
456*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
457*8975f5c5SAndroid Build Coastguard Worker            ],
458*8975f5c5SAndroid Build Coastguard Worker        ),
459*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
460*8975f5c5SAndroid Build Coastguard Worker            roles = "role/buildbucket.triggerer",
461*8975f5c5SAndroid Build Coastguard Worker            users = [
462*8975f5c5SAndroid Build Coastguard Worker                "[email protected]",
463*8975f5c5SAndroid Build Coastguard Worker            ],
464*8975f5c5SAndroid Build Coastguard Worker        ),
465*8975f5c5SAndroid Build Coastguard Worker        # Allow try builders to create invocations in their own builds.
466*8975f5c5SAndroid Build Coastguard Worker        luci.binding(
467*8975f5c5SAndroid Build Coastguard Worker            roles = "role/resultdb.invocationCreator",
468*8975f5c5SAndroid Build Coastguard Worker            groups = [
469*8975f5c5SAndroid Build Coastguard Worker                "project-angle-try-task-accounts",
470*8975f5c5SAndroid Build Coastguard Worker                "project-angle-tryjob-access",
471*8975f5c5SAndroid Build Coastguard Worker            ],
472*8975f5c5SAndroid Build Coastguard Worker        ),
473*8975f5c5SAndroid Build Coastguard Worker    ],
474*8975f5c5SAndroid Build Coastguard Worker    dynamic = True,
475*8975f5c5SAndroid Build Coastguard Worker)
476*8975f5c5SAndroid Build Coastguard Worker
477*8975f5c5SAndroid Build Coastguard Workerluci.builder(
478*8975f5c5SAndroid Build Coastguard Worker    name = "presubmit",
479*8975f5c5SAndroid Build Coastguard Worker    bucket = "try",
480*8975f5c5SAndroid Build Coastguard Worker    executable = "recipe:run_presubmit",
481*8975f5c5SAndroid Build Coastguard Worker    experiments = build_experiments,
482*8975f5c5SAndroid Build Coastguard Worker    service_account = "[email protected]",
483*8975f5c5SAndroid Build Coastguard Worker    build_numbers = True,
484*8975f5c5SAndroid Build Coastguard Worker    dimensions = {
485*8975f5c5SAndroid Build Coastguard Worker        "os": os.LINUX.dimension,
486*8975f5c5SAndroid Build Coastguard Worker    },
487*8975f5c5SAndroid Build Coastguard Worker    properties = {
488*8975f5c5SAndroid Build Coastguard Worker        "repo_name": "angle",
489*8975f5c5SAndroid Build Coastguard Worker        "runhooks": True,
490*8975f5c5SAndroid Build Coastguard Worker    },
491*8975f5c5SAndroid Build Coastguard Worker    resultdb_settings = resultdb.settings(enable = True),
492*8975f5c5SAndroid Build Coastguard Worker    test_presentation = resultdb.test_presentation(
493*8975f5c5SAndroid Build Coastguard Worker        column_keys = ["v.gpu"],
494*8975f5c5SAndroid Build Coastguard Worker        grouping_keys = ["status", "v.test_suite"],
495*8975f5c5SAndroid Build Coastguard Worker    ),
496*8975f5c5SAndroid Build Coastguard Worker)
497*8975f5c5SAndroid Build Coastguard Worker
498*8975f5c5SAndroid Build Coastguard Workerluci.gitiles_poller(
499*8975f5c5SAndroid Build Coastguard Worker    name = "main-poller",
500*8975f5c5SAndroid Build Coastguard Worker    bucket = "ci",
501*8975f5c5SAndroid Build Coastguard Worker    repo = "https://chromium.googlesource.com/angle/angle",
502*8975f5c5SAndroid Build Coastguard Worker    refs = [
503*8975f5c5SAndroid Build Coastguard Worker        "refs/heads/main",
504*8975f5c5SAndroid Build Coastguard Worker    ],
505*8975f5c5SAndroid Build Coastguard Worker    schedule = "with 10s interval",
506*8975f5c5SAndroid Build Coastguard Worker)
507*8975f5c5SAndroid Build Coastguard Worker
508*8975f5c5SAndroid Build Coastguard Worker# name, clang, debug, cpu, uwp, trace_tests
509*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm-compile", cpu = "arm")
510*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm-dbg-compile", cpu = "arm")
511*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm64-dbg-compile", cpu = "arm64")
512*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm64-exp-s22-test", cpu = "arm64")
513*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm64-exp-test", cpu = "arm64")
514*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-arm64-test", cpu = "arm64")
515*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-asan-test", cpu = "x64")
516*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-exp-asan-test", cpu = "x64")
517*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-exp-test", cpu = "x64")
518*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-exp-tsan-test", cpu = "x64")
519*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-tsan-test", cpu = "x64")
520*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-dbg-compile", cpu = "x64")
521*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-test", cpu = "x64")
522*8975f5c5SAndroid Build Coastguard Workerangle_builder("mac-dbg-compile", cpu = "x64")
523*8975f5c5SAndroid Build Coastguard Workerangle_builder("mac-exp-test", cpu = "x64")
524*8975f5c5SAndroid Build Coastguard Workerangle_builder("mac-test", cpu = "x64")
525*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-asan-test", cpu = "x64")
526*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-dbg-compile", cpu = "x64")
527*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-exp-test", cpu = "x64")
528*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-msvc-compile", cpu = "x64")
529*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-msvc-dbg-compile", cpu = "x64")
530*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-msvc-x86-compile", cpu = "x86")
531*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-msvc-x86-dbg-compile", cpu = "x86")
532*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-test", cpu = "x64")
533*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-x86-dbg-compile", cpu = "x86")
534*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-x86-test", cpu = "x86")
535*8975f5c5SAndroid Build Coastguard Workerangle_builder("winuwp-compile", cpu = "x64")
536*8975f5c5SAndroid Build Coastguard Workerangle_builder("winuwp-dbg-compile", cpu = "x64")
537*8975f5c5SAndroid Build Coastguard Worker
538*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-trace", cpu = "x64")
539*8975f5c5SAndroid Build Coastguard Workerangle_builder("win-trace", cpu = "x64")
540*8975f5c5SAndroid Build Coastguard Worker
541*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-pixel4-perf", cpu = "arm64")
542*8975f5c5SAndroid Build Coastguard Workerangle_builder("android-pixel6-perf", cpu = "arm64")
543*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-intel-uhd630-perf", cpu = "x64")
544*8975f5c5SAndroid Build Coastguard Workerangle_builder("linux-nvidia-gtx1660-perf", cpu = "x64")
545*8975f5c5SAndroid Build Coastguard Workerangle_builder("win10-intel-uhd630-perf", cpu = "x64")
546*8975f5c5SAndroid Build Coastguard Workerangle_builder("win10-nvidia-gtx1660-perf", cpu = "x64")
547*8975f5c5SAndroid Build Coastguard Worker
548*8975f5c5SAndroid Build Coastguard Worker# Views
549*8975f5c5SAndroid Build Coastguard Worker
550*8975f5c5SAndroid Build Coastguard Workerluci.console_view(
551*8975f5c5SAndroid Build Coastguard Worker    name = "ci",
552*8975f5c5SAndroid Build Coastguard Worker    title = "ANGLE CI Builders",
553*8975f5c5SAndroid Build Coastguard Worker    repo = "https://chromium.googlesource.com/angle/angle",
554*8975f5c5SAndroid Build Coastguard Worker)
555*8975f5c5SAndroid Build Coastguard Worker
556*8975f5c5SAndroid Build Coastguard Workerluci.list_view(
557*8975f5c5SAndroid Build Coastguard Worker    name = "exp",
558*8975f5c5SAndroid Build Coastguard Worker    title = "ANGLE Experimental CI Builders",
559*8975f5c5SAndroid Build Coastguard Worker)
560*8975f5c5SAndroid Build Coastguard Worker
561*8975f5c5SAndroid Build Coastguard Workerluci.list_view(
562*8975f5c5SAndroid Build Coastguard Worker    name = "try",
563*8975f5c5SAndroid Build Coastguard Worker    title = "ANGLE Try Builders",
564*8975f5c5SAndroid Build Coastguard Worker)
565*8975f5c5SAndroid Build Coastguard Worker
566*8975f5c5SAndroid Build Coastguard Workerluci.list_view_entry(
567*8975f5c5SAndroid Build Coastguard Worker    list_view = "try",
568*8975f5c5SAndroid Build Coastguard Worker    builder = "try/presubmit",
569*8975f5c5SAndroid Build Coastguard Worker)
570*8975f5c5SAndroid Build Coastguard Worker
571*8975f5c5SAndroid Build Coastguard Worker# CQ
572*8975f5c5SAndroid Build Coastguard Worker
573*8975f5c5SAndroid Build Coastguard Workerluci.cq(
574*8975f5c5SAndroid Build Coastguard Worker    status_host = "chromium-cq-status.appspot.com",
575*8975f5c5SAndroid Build Coastguard Worker    submit_max_burst = 4,
576*8975f5c5SAndroid Build Coastguard Worker    submit_burst_delay = 480 * time.second,
577*8975f5c5SAndroid Build Coastguard Worker)
578*8975f5c5SAndroid Build Coastguard Worker
579*8975f5c5SAndroid Build Coastguard Workerluci.cq_group(
580*8975f5c5SAndroid Build Coastguard Worker    name = "main",
581*8975f5c5SAndroid Build Coastguard Worker    watch = cq.refset(
582*8975f5c5SAndroid Build Coastguard Worker        "https://chromium.googlesource.com/angle/angle",
583*8975f5c5SAndroid Build Coastguard Worker        refs = [r"refs/heads/main"],
584*8975f5c5SAndroid Build Coastguard Worker    ),
585*8975f5c5SAndroid Build Coastguard Worker    acls = [
586*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
587*8975f5c5SAndroid Build Coastguard Worker            acl.CQ_COMMITTER,
588*8975f5c5SAndroid Build Coastguard Worker            groups = "project-angle-committers",
589*8975f5c5SAndroid Build Coastguard Worker        ),
590*8975f5c5SAndroid Build Coastguard Worker        acl.entry(
591*8975f5c5SAndroid Build Coastguard Worker            acl.CQ_DRY_RUNNER,
592*8975f5c5SAndroid Build Coastguard Worker            groups = "project-angle-tryjob-access",
593*8975f5c5SAndroid Build Coastguard Worker        ),
594*8975f5c5SAndroid Build Coastguard Worker    ],
595*8975f5c5SAndroid Build Coastguard Worker    verifiers = [
596*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
597*8975f5c5SAndroid Build Coastguard Worker            builder = "angle:try/presubmit",
598*8975f5c5SAndroid Build Coastguard Worker            disable_reuse = True,
599*8975f5c5SAndroid Build Coastguard Worker        ),
600*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
601*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/android-angle-chromium-try",
602*8975f5c5SAndroid Build Coastguard Worker        ),
603*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
604*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/fuchsia-angle-try",
605*8975f5c5SAndroid Build Coastguard Worker        ),
606*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
607*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/linux-angle-chromium-try",
608*8975f5c5SAndroid Build Coastguard Worker        ),
609*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
610*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/mac-angle-chromium-try",
611*8975f5c5SAndroid Build Coastguard Worker        ),
612*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
613*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/win-angle-chromium-x64-try",
614*8975f5c5SAndroid Build Coastguard Worker        ),
615*8975f5c5SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
616*8975f5c5SAndroid Build Coastguard Worker            builder = "chromium:try/win-angle-chromium-x86-try",
617*8975f5c5SAndroid Build Coastguard Worker        ),
618*8975f5c5SAndroid Build Coastguard Worker    ],
619*8975f5c5SAndroid Build Coastguard Worker)
620