xref: /aosp_15_r20/external/webrtc/infra/config/config.star (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker#!/usr/bin/env lucicfg
2*d9f75844SAndroid Build Coastguard Worker
3*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2019 The WebRTC project authors. All rights reserved.
4*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*d9f75844SAndroid Build Coastguard Worker# found in the LICENSE file.
6*d9f75844SAndroid Build Coastguard Worker
7*d9f75844SAndroid Build Coastguard Worker# https://chromium.googlesource.com/infra/luci/luci-go/+/main/lucicfg/doc/
8*d9f75844SAndroid Build Coastguard Worker
9*d9f75844SAndroid Build Coastguard Worker"""LUCI project configuration for WebRTC CQ and CI."""
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Workerlucicfg.check_version("1.30.9")
12*d9f75844SAndroid Build Coastguard Worker
13*d9f75844SAndroid Build Coastguard WorkerWEBRTC_GIT = "https://webrtc.googlesource.com/src"
14*d9f75844SAndroid Build Coastguard WorkerWEBRTC_GERRIT = "https://webrtc-review.googlesource.com/src"
15*d9f75844SAndroid Build Coastguard WorkerWEBRTC_TROOPER_EMAIL = "[email protected]"
16*d9f75844SAndroid Build Coastguard WorkerWEBRTC_XCODE13 = "13c100"
17*d9f75844SAndroid Build Coastguard WorkerDEFAULT_CPU = "x86-64"
18*d9f75844SAndroid Build Coastguard Worker
19*d9f75844SAndroid Build Coastguard Worker# Helpers:
20*d9f75844SAndroid Build Coastguard Worker
21*d9f75844SAndroid Build Coastguard Workerdef make_goma_properties(enable_ats = True, jobs = None):
22*d9f75844SAndroid Build Coastguard Worker    """Makes a default goma property with the specified argument.
23*d9f75844SAndroid Build Coastguard Worker
24*d9f75844SAndroid Build Coastguard Worker    Args:
25*d9f75844SAndroid Build Coastguard Worker      enable_ats: True if the ATS should be enabled.
26*d9f75844SAndroid Build Coastguard Worker      jobs: Number of jobs to be used by the builder.
27*d9f75844SAndroid Build Coastguard Worker    Returns:
28*d9f75844SAndroid Build Coastguard Worker      A dictonary with the goma properties.
29*d9f75844SAndroid Build Coastguard Worker    """
30*d9f75844SAndroid Build Coastguard Worker    goma_properties = {
31*d9f75844SAndroid Build Coastguard Worker        "server_host": "goma.chromium.org",
32*d9f75844SAndroid Build Coastguard Worker        "use_luci_auth": True,
33*d9f75844SAndroid Build Coastguard Worker    }
34*d9f75844SAndroid Build Coastguard Worker    if not enable_ats:
35*d9f75844SAndroid Build Coastguard Worker        goma_properties["enable_ats"] = enable_ats
36*d9f75844SAndroid Build Coastguard Worker    if jobs:
37*d9f75844SAndroid Build Coastguard Worker        goma_properties["jobs"] = jobs
38*d9f75844SAndroid Build Coastguard Worker    return {"$build/goma": goma_properties}
39*d9f75844SAndroid Build Coastguard Worker
40*d9f75844SAndroid Build Coastguard Workerdef make_reclient_properties(instance, jobs = None):
41*d9f75844SAndroid Build Coastguard Worker    """Makes a default reclient property with the specified argument.
42*d9f75844SAndroid Build Coastguard Worker
43*d9f75844SAndroid Build Coastguard Worker    Args:
44*d9f75844SAndroid Build Coastguard Worker      instance: RBE insatnce name.
45*d9f75844SAndroid Build Coastguard Worker      jobs: Number of jobs to be used by the builder.
46*d9f75844SAndroid Build Coastguard Worker    Returns:
47*d9f75844SAndroid Build Coastguard Worker      A dictonary with the reclient properties.
48*d9f75844SAndroid Build Coastguard Worker    """
49*d9f75844SAndroid Build Coastguard Worker    reclient_props = {
50*d9f75844SAndroid Build Coastguard Worker        "instance": instance,
51*d9f75844SAndroid Build Coastguard Worker        "metrics_project": "chromium-reclient-metrics",
52*d9f75844SAndroid Build Coastguard Worker    }
53*d9f75844SAndroid Build Coastguard Worker    if jobs:
54*d9f75844SAndroid Build Coastguard Worker        reclient_props["jobs"] = jobs
55*d9f75844SAndroid Build Coastguard Worker    return {"$build/reclient": reclient_props}
56*d9f75844SAndroid Build Coastguard Worker
57*d9f75844SAndroid Build Coastguard Worker# Add names of builders to remove from LKGR finder to this list. This is
58*d9f75844SAndroid Build Coastguard Worker# useful when a failure can be safely ignored while fixing it without
59*d9f75844SAndroid Build Coastguard Worker# blocking the LKGR finder on it.
60*d9f75844SAndroid Build Coastguard Workerskipped_lkgr_bots = [
61*d9f75844SAndroid Build Coastguard Worker    "Fuchsia Release",
62*d9f75844SAndroid Build Coastguard Worker]
63*d9f75844SAndroid Build Coastguard Worker
64*d9f75844SAndroid Build Coastguard Worker# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
65*d9f75844SAndroid Build Coastguard Workerlucicfg.enable_experiment("crbug.com/1182002")
66*d9f75844SAndroid Build Coastguard Worker
67*d9f75844SAndroid Build Coastguard Workerluci.builder.defaults.test_presentation.set(
68*d9f75844SAndroid Build Coastguard Worker    resultdb.test_presentation(grouping_keys = ["status", "v.test_suite"]),
69*d9f75844SAndroid Build Coastguard Worker)
70*d9f75844SAndroid Build Coastguard Worker
71*d9f75844SAndroid Build Coastguard Workerlucicfg.config(
72*d9f75844SAndroid Build Coastguard Worker    config_dir = ".",
73*d9f75844SAndroid Build Coastguard Worker    tracked_files = [
74*d9f75844SAndroid Build Coastguard Worker        "luci-analysis.cfg",
75*d9f75844SAndroid Build Coastguard Worker        "commit-queue.cfg",
76*d9f75844SAndroid Build Coastguard Worker        "cr-buildbucket.cfg",
77*d9f75844SAndroid Build Coastguard Worker        "luci-logdog.cfg",
78*d9f75844SAndroid Build Coastguard Worker        "luci-milo.cfg",
79*d9f75844SAndroid Build Coastguard Worker        "luci-notify.cfg",
80*d9f75844SAndroid Build Coastguard Worker        "luci-notify/**/*",
81*d9f75844SAndroid Build Coastguard Worker        "luci-scheduler.cfg",
82*d9f75844SAndroid Build Coastguard Worker        "project.cfg",
83*d9f75844SAndroid Build Coastguard Worker        "realms.cfg",
84*d9f75844SAndroid Build Coastguard Worker    ],
85*d9f75844SAndroid Build Coastguard Worker    lint_checks = ["default"],
86*d9f75844SAndroid Build Coastguard Worker)
87*d9f75844SAndroid Build Coastguard Worker
88*d9f75844SAndroid Build Coastguard Workerluci.project(
89*d9f75844SAndroid Build Coastguard Worker    name = "webrtc",
90*d9f75844SAndroid Build Coastguard Worker    buildbucket = "cr-buildbucket.appspot.com",
91*d9f75844SAndroid Build Coastguard Worker    logdog = "luci-logdog.appspot.com",
92*d9f75844SAndroid Build Coastguard Worker    milo = "luci-milo.appspot.com",
93*d9f75844SAndroid Build Coastguard Worker    notify = "luci-notify.appspot.com",
94*d9f75844SAndroid Build Coastguard Worker    scheduler = "luci-scheduler.appspot.com",
95*d9f75844SAndroid Build Coastguard Worker    swarming = "chromium-swarm.appspot.com",
96*d9f75844SAndroid Build Coastguard Worker    acls = [
97*d9f75844SAndroid Build Coastguard Worker        acl.entry(
98*d9f75844SAndroid Build Coastguard Worker            [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
99*d9f75844SAndroid Build Coastguard Worker            groups = ["all"],
100*d9f75844SAndroid Build Coastguard Worker        ),
101*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
102*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
103*d9f75844SAndroid Build Coastguard Worker    ],
104*d9f75844SAndroid Build Coastguard Worker    bindings = [
105*d9f75844SAndroid Build Coastguard Worker        luci.binding(
106*d9f75844SAndroid Build Coastguard Worker            roles = "role/configs.validator",
107*d9f75844SAndroid Build Coastguard Worker            users = [
108*d9f75844SAndroid Build Coastguard Worker                "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
109*d9f75844SAndroid Build Coastguard Worker            ],
110*d9f75844SAndroid Build Coastguard Worker        ),
111*d9f75844SAndroid Build Coastguard Worker        luci.binding(
112*d9f75844SAndroid Build Coastguard Worker            roles = "role/swarming.poolOwner",
113*d9f75844SAndroid Build Coastguard Worker            groups = "project-webrtc-admins",
114*d9f75844SAndroid Build Coastguard Worker        ),
115*d9f75844SAndroid Build Coastguard Worker        luci.binding(
116*d9f75844SAndroid Build Coastguard Worker            roles = "role/swarming.poolViewer",
117*d9f75844SAndroid Build Coastguard Worker            groups = "all",
118*d9f75844SAndroid Build Coastguard Worker        ),
119*d9f75844SAndroid Build Coastguard Worker        # Allow any WebRTC build to trigger a test ran under chromium-tester@
120*d9f75844SAndroid Build Coastguard Worker        # task service account.
121*d9f75844SAndroid Build Coastguard Worker        luci.binding(
122*d9f75844SAndroid Build Coastguard Worker            roles = "role/swarming.taskServiceAccount",
123*d9f75844SAndroid Build Coastguard Worker            users = [
124*d9f75844SAndroid Build Coastguard Worker                "[email protected]",
125*d9f75844SAndroid Build Coastguard Worker            ],
126*d9f75844SAndroid Build Coastguard Worker        ),
127*d9f75844SAndroid Build Coastguard Worker        # Roles for LUCI Analysis.
128*d9f75844SAndroid Build Coastguard Worker        luci.binding(
129*d9f75844SAndroid Build Coastguard Worker            roles = "role/analysis.reader",
130*d9f75844SAndroid Build Coastguard Worker            groups = "all",
131*d9f75844SAndroid Build Coastguard Worker        ),
132*d9f75844SAndroid Build Coastguard Worker        luci.binding(
133*d9f75844SAndroid Build Coastguard Worker            roles = "role/analysis.queryUser",
134*d9f75844SAndroid Build Coastguard Worker            groups = "authenticated-users",
135*d9f75844SAndroid Build Coastguard Worker        ),
136*d9f75844SAndroid Build Coastguard Worker        luci.binding(
137*d9f75844SAndroid Build Coastguard Worker            roles = "role/analysis.editor",
138*d9f75844SAndroid Build Coastguard Worker            groups = "googlers",
139*d9f75844SAndroid Build Coastguard Worker        ),
140*d9f75844SAndroid Build Coastguard Worker    ],
141*d9f75844SAndroid Build Coastguard Worker)
142*d9f75844SAndroid Build Coastguard Worker
143*d9f75844SAndroid Build Coastguard Workerluci.logdog(
144*d9f75844SAndroid Build Coastguard Worker    gs_bucket = "chromium-luci-logdog",
145*d9f75844SAndroid Build Coastguard Worker)
146*d9f75844SAndroid Build Coastguard Worker
147*d9f75844SAndroid Build Coastguard Workerluci.milo(
148*d9f75844SAndroid Build Coastguard Worker    logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
149*d9f75844SAndroid Build Coastguard Worker)
150*d9f75844SAndroid Build Coastguard Worker
151*d9f75844SAndroid Build Coastguard Worker# Configure Weetbix (config is copied verbatim)
152*d9f75844SAndroid Build Coastguard Worker################################################################################
153*d9f75844SAndroid Build Coastguard Worker
154*d9f75844SAndroid Build Coastguard Workerlucicfg.emit(
155*d9f75844SAndroid Build Coastguard Worker    dest = "luci-analysis.cfg",
156*d9f75844SAndroid Build Coastguard Worker    data = io.read_file("luci-analysis.cfg"),
157*d9f75844SAndroid Build Coastguard Worker)
158*d9f75844SAndroid Build Coastguard Worker
159*d9f75844SAndroid Build Coastguard Worker################################################################################
160*d9f75844SAndroid Build Coastguard Worker
161*d9f75844SAndroid Build Coastguard Workerluci.notify(tree_closing_enabled = True)
162*d9f75844SAndroid Build Coastguard Worker
163*d9f75844SAndroid Build Coastguard Workerluci.cq(
164*d9f75844SAndroid Build Coastguard Worker    status_host = "chromium-cq-status.appspot.com",
165*d9f75844SAndroid Build Coastguard Worker    submit_max_burst = 1,
166*d9f75844SAndroid Build Coastguard Worker    submit_burst_delay = 1 * time.minute,
167*d9f75844SAndroid Build Coastguard Worker)
168*d9f75844SAndroid Build Coastguard Worker
169*d9f75844SAndroid Build Coastguard Workerluci.gitiles_poller(
170*d9f75844SAndroid Build Coastguard Worker    name = "webrtc-gitiles-trigger-main",
171*d9f75844SAndroid Build Coastguard Worker    bucket = "ci",
172*d9f75844SAndroid Build Coastguard Worker    repo = WEBRTC_GIT,
173*d9f75844SAndroid Build Coastguard Worker    refs = ["refs/heads/main"],
174*d9f75844SAndroid Build Coastguard Worker)
175*d9f75844SAndroid Build Coastguard Worker
176*d9f75844SAndroid Build Coastguard Worker# Swarming permissions:
177*d9f75844SAndroid Build Coastguard Worker
178*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/cron", bindings = [
179*d9f75844SAndroid Build Coastguard Worker    # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
180*d9f75844SAndroid Build Coastguard Worker    luci.binding(
181*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
182*d9f75844SAndroid Build Coastguard Worker        projects = "libyuv",
183*d9f75844SAndroid Build Coastguard Worker    ),
184*d9f75844SAndroid Build Coastguard Worker])
185*d9f75844SAndroid Build Coastguard Worker
186*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/ci")
187*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/ci-tests", bindings = [
188*d9f75844SAndroid Build Coastguard Worker    # Allow task service accounts of .ci pool/bucket to trigger tasks here.
189*d9f75844SAndroid Build Coastguard Worker    luci.binding(
190*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
191*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-ci-task-accounts",
192*d9f75844SAndroid Build Coastguard Worker    ),
193*d9f75844SAndroid Build Coastguard Worker    # Allow tasks here to use .ci task service accounts.
194*d9f75844SAndroid Build Coastguard Worker    luci.binding(
195*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.taskServiceAccount",
196*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-ci-task-accounts",
197*d9f75844SAndroid Build Coastguard Worker    ),
198*d9f75844SAndroid Build Coastguard Worker])
199*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "ci", bindings = [
200*d9f75844SAndroid Build Coastguard Worker    # Allow CI builders to create invocations in their own builds.
201*d9f75844SAndroid Build Coastguard Worker    luci.binding(
202*d9f75844SAndroid Build Coastguard Worker        roles = "role/resultdb.invocationCreator",
203*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-ci-task-accounts",
204*d9f75844SAndroid Build Coastguard Worker    ),
205*d9f75844SAndroid Build Coastguard Worker])
206*d9f75844SAndroid Build Coastguard Worker
207*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/try", bindings = [
208*d9f75844SAndroid Build Coastguard Worker    # Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
209*d9f75844SAndroid Build Coastguard Worker    luci.binding(
210*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
211*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-led-users",
212*d9f75844SAndroid Build Coastguard Worker    ),
213*d9f75844SAndroid Build Coastguard Worker])
214*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/try-tests", bindings = [
215*d9f75844SAndroid Build Coastguard Worker    # Allow task service accounts of .try pool/bucket to trigger tasks here.
216*d9f75844SAndroid Build Coastguard Worker    luci.binding(
217*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
218*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-try-task-accounts",
219*d9f75844SAndroid Build Coastguard Worker    ),
220*d9f75844SAndroid Build Coastguard Worker    # Allow tasks here to use .try task service accounts.
221*d9f75844SAndroid Build Coastguard Worker    luci.binding(
222*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.taskServiceAccount",
223*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-try-task-accounts",
224*d9f75844SAndroid Build Coastguard Worker    ),
225*d9f75844SAndroid Build Coastguard Worker])
226*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "try", bindings = [
227*d9f75844SAndroid Build Coastguard Worker    luci.binding(
228*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.taskTriggerer",
229*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-led-users",
230*d9f75844SAndroid Build Coastguard Worker    ),
231*d9f75844SAndroid Build Coastguard Worker    # Allow try builders to create invocations in their own builds.
232*d9f75844SAndroid Build Coastguard Worker    luci.binding(
233*d9f75844SAndroid Build Coastguard Worker        roles = "role/resultdb.invocationCreator",
234*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-try-task-accounts",
235*d9f75844SAndroid Build Coastguard Worker    ),
236*d9f75844SAndroid Build Coastguard Worker])
237*d9f75844SAndroid Build Coastguard Worker
238*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "pools/perf", bindings = [
239*d9f75844SAndroid Build Coastguard Worker    # Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
240*d9f75844SAndroid Build Coastguard Worker    luci.binding(
241*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
242*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-led-users",
243*d9f75844SAndroid Build Coastguard Worker    ),
244*d9f75844SAndroid Build Coastguard Worker])
245*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "perf", bindings = [
246*d9f75844SAndroid Build Coastguard Worker    luci.binding(
247*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.taskTriggerer",
248*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-led-users",
249*d9f75844SAndroid Build Coastguard Worker    ),
250*d9f75844SAndroid Build Coastguard Worker])
251*d9f75844SAndroid Build Coastguard Worker
252*d9f75844SAndroid Build Coastguard Workerluci.realm(name = "@root", bindings = [
253*d9f75844SAndroid Build Coastguard Worker    # Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
254*d9f75844SAndroid Build Coastguard Worker    luci.binding(
255*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.poolUser",
256*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-admins",
257*d9f75844SAndroid Build Coastguard Worker    ),
258*d9f75844SAndroid Build Coastguard Worker    luci.binding(
259*d9f75844SAndroid Build Coastguard Worker        roles = "role/swarming.taskTriggerer",
260*d9f75844SAndroid Build Coastguard Worker        groups = "project-webrtc-admins",
261*d9f75844SAndroid Build Coastguard Worker    ),
262*d9f75844SAndroid Build Coastguard Worker])
263*d9f75844SAndroid Build Coastguard Worker
264*d9f75844SAndroid Build Coastguard Worker# Bucket definitions:
265*d9f75844SAndroid Build Coastguard Worker
266*d9f75844SAndroid Build Coastguard Workerluci.bucket(
267*d9f75844SAndroid Build Coastguard Worker    name = "try",
268*d9f75844SAndroid Build Coastguard Worker    acls = [
269*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
270*d9f75844SAndroid Build Coastguard Worker            "service-account-cq",
271*d9f75844SAndroid Build Coastguard Worker            "project-webrtc-tryjob-access",
272*d9f75844SAndroid Build Coastguard Worker        ]),
273*d9f75844SAndroid Build Coastguard Worker    ],
274*d9f75844SAndroid Build Coastguard Worker)
275*d9f75844SAndroid Build Coastguard Worker
276*d9f75844SAndroid Build Coastguard Workerluci.bucket(
277*d9f75844SAndroid Build Coastguard Worker    name = "ci",
278*d9f75844SAndroid Build Coastguard Worker    acls = [
279*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
280*d9f75844SAndroid Build Coastguard Worker            "project-webrtc-ci-schedulers",
281*d9f75844SAndroid Build Coastguard Worker        ]),
282*d9f75844SAndroid Build Coastguard Worker    ],
283*d9f75844SAndroid Build Coastguard Worker)
284*d9f75844SAndroid Build Coastguard Worker
285*d9f75844SAndroid Build Coastguard Workerluci.bucket(
286*d9f75844SAndroid Build Coastguard Worker    name = "perf",
287*d9f75844SAndroid Build Coastguard Worker    acls = [
288*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
289*d9f75844SAndroid Build Coastguard Worker            "[email protected]",
290*d9f75844SAndroid Build Coastguard Worker        ]),
291*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
292*d9f75844SAndroid Build Coastguard Worker            # Allow Pinpoint to trigger builds for bisection
293*d9f75844SAndroid Build Coastguard Worker            "service-account-chromeperf",
294*d9f75844SAndroid Build Coastguard Worker        ]),
295*d9f75844SAndroid Build Coastguard Worker    ],
296*d9f75844SAndroid Build Coastguard Worker)
297*d9f75844SAndroid Build Coastguard Worker
298*d9f75844SAndroid Build Coastguard Workerluci.bucket(
299*d9f75844SAndroid Build Coastguard Worker    name = "cron",
300*d9f75844SAndroid Build Coastguard Worker)
301*d9f75844SAndroid Build Coastguard Worker
302*d9f75844SAndroid Build Coastguard Worker# Commit queue definitions:
303*d9f75844SAndroid Build Coastguard Worker
304*d9f75844SAndroid Build Coastguard Workerluci.cq_group(
305*d9f75844SAndroid Build Coastguard Worker    name = "cq",
306*d9f75844SAndroid Build Coastguard Worker    tree_status_host = "webrtc-status.appspot.com",
307*d9f75844SAndroid Build Coastguard Worker    watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
308*d9f75844SAndroid Build Coastguard Worker    acls = [
309*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
310*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
311*d9f75844SAndroid Build Coastguard Worker    ],
312*d9f75844SAndroid Build Coastguard Worker    retry_config = cq.RETRY_ALL_FAILURES,
313*d9f75844SAndroid Build Coastguard Worker    cancel_stale_tryjobs = True,
314*d9f75844SAndroid Build Coastguard Worker)
315*d9f75844SAndroid Build Coastguard Worker
316*d9f75844SAndroid Build Coastguard Workerluci.cq_group(
317*d9f75844SAndroid Build Coastguard Worker    name = "cq_branch",
318*d9f75844SAndroid Build Coastguard Worker    watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
319*d9f75844SAndroid Build Coastguard Worker    acls = [
320*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
321*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
322*d9f75844SAndroid Build Coastguard Worker    ],
323*d9f75844SAndroid Build Coastguard Worker    retry_config = cq.RETRY_ALL_FAILURES,
324*d9f75844SAndroid Build Coastguard Worker    cancel_stale_tryjobs = True,
325*d9f75844SAndroid Build Coastguard Worker)
326*d9f75844SAndroid Build Coastguard Worker
327*d9f75844SAndroid Build Coastguard Workerluci.cq_group(
328*d9f75844SAndroid Build Coastguard Worker    name = "cq_infra",
329*d9f75844SAndroid Build Coastguard Worker    watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
330*d9f75844SAndroid Build Coastguard Worker    acls = [
331*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
332*d9f75844SAndroid Build Coastguard Worker        acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
333*d9f75844SAndroid Build Coastguard Worker    ],
334*d9f75844SAndroid Build Coastguard Worker    retry_config = cq.RETRY_ALL_FAILURES,
335*d9f75844SAndroid Build Coastguard Worker    cancel_stale_tryjobs = True,
336*d9f75844SAndroid Build Coastguard Worker)
337*d9f75844SAndroid Build Coastguard Worker
338*d9f75844SAndroid Build Coastguard Workerluci.cq_tryjob_verifier(
339*d9f75844SAndroid Build Coastguard Worker    builder = "presubmit",
340*d9f75844SAndroid Build Coastguard Worker    cq_group = "cq_infra",
341*d9f75844SAndroid Build Coastguard Worker)
342*d9f75844SAndroid Build Coastguard Worker
343*d9f75844SAndroid Build Coastguard Workerluci.cq_tryjob_verifier(
344*d9f75844SAndroid Build Coastguard Worker    builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
345*d9f75844SAndroid Build Coastguard Worker    owner_whitelist = ["project-webrtc-internal-tryjob-access"],
346*d9f75844SAndroid Build Coastguard Worker    cq_group = "cq",
347*d9f75844SAndroid Build Coastguard Worker)
348*d9f75844SAndroid Build Coastguard Worker
349*d9f75844SAndroid Build Coastguard Worker# Notifier definitions:
350*d9f75844SAndroid Build Coastguard Worker
351*d9f75844SAndroid Build Coastguard Workerluci.notifier(
352*d9f75844SAndroid Build Coastguard Worker    name = "post_submit_failure_notifier",
353*d9f75844SAndroid Build Coastguard Worker    on_new_status = ["FAILURE"],
354*d9f75844SAndroid Build Coastguard Worker    notify_emails = [WEBRTC_TROOPER_EMAIL],
355*d9f75844SAndroid Build Coastguard Worker    notify_blamelist = True,
356*d9f75844SAndroid Build Coastguard Worker    template = luci.notifier_template(
357*d9f75844SAndroid Build Coastguard Worker        name = "build_failure",
358*d9f75844SAndroid Build Coastguard Worker        body = io.read_file("luci-notify/email-templates/build_failure.template"),
359*d9f75844SAndroid Build Coastguard Worker    ),
360*d9f75844SAndroid Build Coastguard Worker)
361*d9f75844SAndroid Build Coastguard Worker
362*d9f75844SAndroid Build Coastguard Workerluci.notifier(
363*d9f75844SAndroid Build Coastguard Worker    name = "cron_notifier",
364*d9f75844SAndroid Build Coastguard Worker    on_new_status = ["FAILURE", "INFRA_FAILURE"],
365*d9f75844SAndroid Build Coastguard Worker    notify_emails = [WEBRTC_TROOPER_EMAIL],
366*d9f75844SAndroid Build Coastguard Worker    template = luci.notifier_template(
367*d9f75844SAndroid Build Coastguard Worker        name = "cron",
368*d9f75844SAndroid Build Coastguard Worker        body = io.read_file("luci-notify/email-templates/cron.template"),
369*d9f75844SAndroid Build Coastguard Worker    ),
370*d9f75844SAndroid Build Coastguard Worker)
371*d9f75844SAndroid Build Coastguard Worker
372*d9f75844SAndroid Build Coastguard Workerluci.notifier(
373*d9f75844SAndroid Build Coastguard Worker    name = "infra_failure_notifier",
374*d9f75844SAndroid Build Coastguard Worker    on_new_status = ["INFRA_FAILURE"],
375*d9f75844SAndroid Build Coastguard Worker    notify_emails = [WEBRTC_TROOPER_EMAIL],
376*d9f75844SAndroid Build Coastguard Worker    template = luci.notifier_template(
377*d9f75844SAndroid Build Coastguard Worker        name = "infra_failure",
378*d9f75844SAndroid Build Coastguard Worker        body = io.read_file("luci-notify/email-templates/infra_failure.template"),
379*d9f75844SAndroid Build Coastguard Worker    ),
380*d9f75844SAndroid Build Coastguard Worker)
381*d9f75844SAndroid Build Coastguard Worker
382*d9f75844SAndroid Build Coastguard Worker# Tree closer definitions:
383*d9f75844SAndroid Build Coastguard Worker
384*d9f75844SAndroid Build Coastguard Workerluci.tree_closer(
385*d9f75844SAndroid Build Coastguard Worker    name = "webrtc_tree_closer",
386*d9f75844SAndroid Build Coastguard Worker    tree_status_host = "webrtc-status.appspot.com",
387*d9f75844SAndroid Build Coastguard Worker    # TODO: These step filters are copied verbatim from Gatekeeper, for testing
388*d9f75844SAndroid Build Coastguard Worker    # that LUCI-Notify would take the exact same actions. Once we've switched
389*d9f75844SAndroid Build Coastguard Worker    # over, this should be updated - several of these steps don't exist in
390*d9f75844SAndroid Build Coastguard Worker    # WebRTC recipes.
391*d9f75844SAndroid Build Coastguard Worker    failed_step_regexp = [
392*d9f75844SAndroid Build Coastguard Worker        "bot_update",
393*d9f75844SAndroid Build Coastguard Worker        "compile",
394*d9f75844SAndroid Build Coastguard Worker        "gclient runhooks",
395*d9f75844SAndroid Build Coastguard Worker        "runhooks",
396*d9f75844SAndroid Build Coastguard Worker        "update",
397*d9f75844SAndroid Build Coastguard Worker        "extract build",
398*d9f75844SAndroid Build Coastguard Worker        "cleanup_temp",
399*d9f75844SAndroid Build Coastguard Worker        "taskkill",
400*d9f75844SAndroid Build Coastguard Worker        "compile",
401*d9f75844SAndroid Build Coastguard Worker        "gn",
402*d9f75844SAndroid Build Coastguard Worker    ],
403*d9f75844SAndroid Build Coastguard Worker    failed_step_regexp_exclude = ".*\\(experimental\\).*",
404*d9f75844SAndroid Build Coastguard Worker)
405*d9f75844SAndroid Build Coastguard Worker
406*d9f75844SAndroid Build Coastguard Worker# Recipe definitions:
407*d9f75844SAndroid Build Coastguard Worker
408*d9f75844SAndroid Build Coastguard Workerdef recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
409*d9f75844SAndroid Build Coastguard Worker    return luci.recipe(
410*d9f75844SAndroid Build Coastguard Worker        name = recipe.split("/")[-1],
411*d9f75844SAndroid Build Coastguard Worker        cipd_package = pkg,
412*d9f75844SAndroid Build Coastguard Worker        cipd_version = "refs/heads/main",
413*d9f75844SAndroid Build Coastguard Worker        recipe = recipe,
414*d9f75844SAndroid Build Coastguard Worker        use_python3 = True,
415*d9f75844SAndroid Build Coastguard Worker    )
416*d9f75844SAndroid Build Coastguard Worker
417*d9f75844SAndroid Build Coastguard Workerrecipe("chromium_trybot")
418*d9f75844SAndroid Build Coastguard Workerrecipe("run_presubmit")
419*d9f75844SAndroid Build Coastguard Workerrecipe("webrtc/auto_roll_webrtc_deps")
420*d9f75844SAndroid Build Coastguard Workerrecipe("webrtc/ios_api_framework")
421*d9f75844SAndroid Build Coastguard Workerrecipe("webrtc/libfuzzer")
422*d9f75844SAndroid Build Coastguard Workerrecipe("webrtc/standalone")
423*d9f75844SAndroid Build Coastguard Workerrecipe("webrtc/update_webrtc_binary_version")
424*d9f75844SAndroid Build Coastguard Workerrecipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
425*d9f75844SAndroid Build Coastguard Worker
426*d9f75844SAndroid Build Coastguard Worker# Console definitions:
427*d9f75844SAndroid Build Coastguard Worker
428*d9f75844SAndroid Build Coastguard Workerluci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
429*d9f75844SAndroid Build Coastguard Workerluci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
430*d9f75844SAndroid Build Coastguard Workerluci.list_view(name = "cron", title = "Cron")
431*d9f75844SAndroid Build Coastguard Workerluci.list_view(name = "try", title = "Tryserver")
432*d9f75844SAndroid Build Coastguard Worker
433*d9f75844SAndroid Build Coastguard Workerdef add_milo(builder, views):
434*d9f75844SAndroid Build Coastguard Worker    """Add Milo console entries for the builder.
435*d9f75844SAndroid Build Coastguard Worker
436*d9f75844SAndroid Build Coastguard Worker    Args:
437*d9f75844SAndroid Build Coastguard Worker      builder: builder name (str).
438*d9f75844SAndroid Build Coastguard Worker      views: dict where keys are names of consoles and values are either a
439*d9f75844SAndroid Build Coastguard Worker        category for the console (str, pipe-separated) or True, which means
440*d9f75844SAndroid Build Coastguard Worker        adding to a list view rather than a console.
441*d9f75844SAndroid Build Coastguard Worker    """
442*d9f75844SAndroid Build Coastguard Worker    for view_name, category in views.items():
443*d9f75844SAndroid Build Coastguard Worker        if category == None:
444*d9f75844SAndroid Build Coastguard Worker            continue
445*d9f75844SAndroid Build Coastguard Worker        elif type(category) == "string":
446*d9f75844SAndroid Build Coastguard Worker            category, _, short_name = category.rpartition("|")
447*d9f75844SAndroid Build Coastguard Worker            luci.console_view_entry(
448*d9f75844SAndroid Build Coastguard Worker                console_view = view_name,
449*d9f75844SAndroid Build Coastguard Worker                builder = builder,
450*d9f75844SAndroid Build Coastguard Worker                category = category or None,
451*d9f75844SAndroid Build Coastguard Worker                short_name = short_name or None,
452*d9f75844SAndroid Build Coastguard Worker            )
453*d9f75844SAndroid Build Coastguard Worker        elif category == True:
454*d9f75844SAndroid Build Coastguard Worker            luci.list_view_entry(
455*d9f75844SAndroid Build Coastguard Worker                list_view = view_name,
456*d9f75844SAndroid Build Coastguard Worker                builder = builder,
457*d9f75844SAndroid Build Coastguard Worker            )
458*d9f75844SAndroid Build Coastguard Worker        else:
459*d9f75844SAndroid Build Coastguard Worker            fail("Unexpected value for category: %r" % category)
460*d9f75844SAndroid Build Coastguard Worker
461*d9f75844SAndroid Build Coastguard Workerlkgr_builders = []
462*d9f75844SAndroid Build Coastguard Worker
463*d9f75844SAndroid Build Coastguard Worker# Builder-defining functions:
464*d9f75844SAndroid Build Coastguard Worker
465*d9f75844SAndroid Build Coastguard Workerdef webrtc_builder(
466*d9f75844SAndroid Build Coastguard Worker        name,
467*d9f75844SAndroid Build Coastguard Worker        bucket,
468*d9f75844SAndroid Build Coastguard Worker        dimensions,
469*d9f75844SAndroid Build Coastguard Worker        properties = None,
470*d9f75844SAndroid Build Coastguard Worker        recipe = "standalone",
471*d9f75844SAndroid Build Coastguard Worker        priority = 30,
472*d9f75844SAndroid Build Coastguard Worker        execution_timeout = 2 * time.hour,
473*d9f75844SAndroid Build Coastguard Worker        **kwargs):
474*d9f75844SAndroid Build Coastguard Worker    """WebRTC specific wrapper around luci.builder.
475*d9f75844SAndroid Build Coastguard Worker
476*d9f75844SAndroid Build Coastguard Worker    Args:
477*d9f75844SAndroid Build Coastguard Worker      name: builder name (str).
478*d9f75844SAndroid Build Coastguard Worker      bucket: The name of the bucket the builder belongs to.
479*d9f75844SAndroid Build Coastguard Worker      dimensions: dict of Swarming dimensions (strings) to search machines by.
480*d9f75844SAndroid Build Coastguard Worker      properties: dict of properties to pass to the recipe (on top of the default ones).
481*d9f75844SAndroid Build Coastguard Worker      recipe: string with the name of the recipe to run.
482*d9f75844SAndroid Build Coastguard Worker      priority: int [1-255] or None, indicating swarming task priority, lower is
483*d9f75844SAndroid Build Coastguard Worker        more important. If None, defer the decision to Buildbucket service.
484*d9f75844SAndroid Build Coastguard Worker      execution_timeout: int or None, how long to wait for a running build to finish before
485*d9f75844SAndroid Build Coastguard Worker        forcefully aborting it and marking the build as timed out. If None,
486*d9f75844SAndroid Build Coastguard Worker        defer the decision to Buildbucket service.
487*d9f75844SAndroid Build Coastguard Worker      **kwargs: Pass on to webrtc_builder / luci.builder.
488*d9f75844SAndroid Build Coastguard Worker    Returns:
489*d9f75844SAndroid Build Coastguard Worker      A luci.builder.
490*d9f75844SAndroid Build Coastguard Worker    """
491*d9f75844SAndroid Build Coastguard Worker    properties = properties or {}
492*d9f75844SAndroid Build Coastguard Worker    resultdb_bq_table = "webrtc-ci.resultdb." + bucket + "_test_results"
493*d9f75844SAndroid Build Coastguard Worker    return luci.builder(
494*d9f75844SAndroid Build Coastguard Worker        name = name,
495*d9f75844SAndroid Build Coastguard Worker        bucket = bucket,
496*d9f75844SAndroid Build Coastguard Worker        executable = recipe,
497*d9f75844SAndroid Build Coastguard Worker        dimensions = dimensions,
498*d9f75844SAndroid Build Coastguard Worker        properties = properties,
499*d9f75844SAndroid Build Coastguard Worker        execution_timeout = execution_timeout,
500*d9f75844SAndroid Build Coastguard Worker        priority = priority,
501*d9f75844SAndroid Build Coastguard Worker        build_numbers = True,
502*d9f75844SAndroid Build Coastguard Worker        swarming_tags = ["vpython:native-python-wrapper"],
503*d9f75844SAndroid Build Coastguard Worker        resultdb_settings = resultdb.settings(
504*d9f75844SAndroid Build Coastguard Worker            enable = True,
505*d9f75844SAndroid Build Coastguard Worker            bq_exports = [
506*d9f75844SAndroid Build Coastguard Worker                resultdb.export_test_results(bq_table = resultdb_bq_table),
507*d9f75844SAndroid Build Coastguard Worker            ],
508*d9f75844SAndroid Build Coastguard Worker        ),
509*d9f75844SAndroid Build Coastguard Worker        **kwargs
510*d9f75844SAndroid Build Coastguard Worker    )
511*d9f75844SAndroid Build Coastguard Worker
512*d9f75844SAndroid Build Coastguard Workerdef ci_builder(
513*d9f75844SAndroid Build Coastguard Worker        name,
514*d9f75844SAndroid Build Coastguard Worker        ci_cat,
515*d9f75844SAndroid Build Coastguard Worker        dimensions,
516*d9f75844SAndroid Build Coastguard Worker        properties = None,
517*d9f75844SAndroid Build Coastguard Worker        perf_cat = None,
518*d9f75844SAndroid Build Coastguard Worker        prioritized = False,
519*d9f75844SAndroid Build Coastguard Worker        enabled = True,
520*d9f75844SAndroid Build Coastguard Worker        **kwargs):
521*d9f75844SAndroid Build Coastguard Worker    """Add a post-submit builder.
522*d9f75844SAndroid Build Coastguard Worker
523*d9f75844SAndroid Build Coastguard Worker    Args:
524*d9f75844SAndroid Build Coastguard Worker      name: builder name (str).
525*d9f75844SAndroid Build Coastguard Worker      ci_cat: the category + name for the /ci/ console, or None to omit from the console.
526*d9f75844SAndroid Build Coastguard Worker      dimensions: dict of Swarming dimensions (strings) to search machines by.
527*d9f75844SAndroid Build Coastguard Worker      properties: dict of properties to pass to the recipe (on top of the default ones).
528*d9f75844SAndroid Build Coastguard Worker      perf_cat: the category + name for the /perf/ console, or None to omit from the console.
529*d9f75844SAndroid Build Coastguard Worker      prioritized: True to make this builder have a higher priority and never batch builds.
530*d9f75844SAndroid Build Coastguard Worker      enabled: False to exclude this builder from consoles and failure notifications.
531*d9f75844SAndroid Build Coastguard Worker      **kwargs: Pass on to webrtc_builder / luci.builder.
532*d9f75844SAndroid Build Coastguard Worker    Returns:
533*d9f75844SAndroid Build Coastguard Worker      A luci.builder.
534*d9f75844SAndroid Build Coastguard Worker
535*d9f75844SAndroid Build Coastguard Worker    Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
536*d9f75844SAndroid Build Coastguard Worker    """
537*d9f75844SAndroid Build Coastguard Worker    if prioritized:
538*d9f75844SAndroid Build Coastguard Worker        kwargs["triggering_policy"] = scheduler.greedy_batching(
539*d9f75844SAndroid Build Coastguard Worker            max_batch_size = 1,
540*d9f75844SAndroid Build Coastguard Worker            max_concurrent_invocations = 3,
541*d9f75844SAndroid Build Coastguard Worker        )
542*d9f75844SAndroid Build Coastguard Worker        kwargs["priority"] = 29
543*d9f75844SAndroid Build Coastguard Worker
544*d9f75844SAndroid Build Coastguard Worker    if enabled:
545*d9f75844SAndroid Build Coastguard Worker        add_milo(name, {"ci": ci_cat, "perf": perf_cat})
546*d9f75844SAndroid Build Coastguard Worker        if ci_cat and not perf_cat:
547*d9f75844SAndroid Build Coastguard Worker            lkgr_builders.append(name)
548*d9f75844SAndroid Build Coastguard Worker    dimensions.update({"pool": "luci.webrtc.ci", "cpu": kwargs.pop("cpu", DEFAULT_CPU)})
549*d9f75844SAndroid Build Coastguard Worker    properties = properties or {}
550*d9f75844SAndroid Build Coastguard Worker    properties = dict(properties)  # Avoid mutating the original dict.
551*d9f75844SAndroid Build Coastguard Worker    properties["builder_group"] = "client.webrtc"
552*d9f75844SAndroid Build Coastguard Worker    properties.update(make_reclient_properties("rbe-webrtc-trusted"))
553*d9f75844SAndroid Build Coastguard Worker
554*d9f75844SAndroid Build Coastguard Worker    # TODO(b/245249582): remove goma properties after reclient migration.
555*d9f75844SAndroid Build Coastguard Worker    properties.update(make_goma_properties())
556*d9f75844SAndroid Build Coastguard Worker    notifies = ["post_submit_failure_notifier", "infra_failure_notifier"]
557*d9f75844SAndroid Build Coastguard Worker    notifies += ["webrtc_tree_closer"] if name not in skipped_lkgr_bots else []
558*d9f75844SAndroid Build Coastguard Worker    return webrtc_builder(
559*d9f75844SAndroid Build Coastguard Worker        name = name,
560*d9f75844SAndroid Build Coastguard Worker        dimensions = dimensions,
561*d9f75844SAndroid Build Coastguard Worker        properties = properties,
562*d9f75844SAndroid Build Coastguard Worker        bucket = "perf" if perf_cat else "ci",
563*d9f75844SAndroid Build Coastguard Worker        service_account = "[email protected]",
564*d9f75844SAndroid Build Coastguard Worker        triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
565*d9f75844SAndroid Build Coastguard Worker        repo = WEBRTC_GIT,
566*d9f75844SAndroid Build Coastguard Worker        notifies = notifies if enabled else None,
567*d9f75844SAndroid Build Coastguard Worker        **kwargs
568*d9f75844SAndroid Build Coastguard Worker    )
569*d9f75844SAndroid Build Coastguard Worker
570*d9f75844SAndroid Build Coastguard Workerdef try_builder(
571*d9f75844SAndroid Build Coastguard Worker        name,
572*d9f75844SAndroid Build Coastguard Worker        dimensions,
573*d9f75844SAndroid Build Coastguard Worker        properties = None,
574*d9f75844SAndroid Build Coastguard Worker        try_cat = True,
575*d9f75844SAndroid Build Coastguard Worker        cq = {},
576*d9f75844SAndroid Build Coastguard Worker        branch_cq = True,
577*d9f75844SAndroid Build Coastguard Worker        goma_enable_ats = True,
578*d9f75844SAndroid Build Coastguard Worker        goma_jobs = None,
579*d9f75844SAndroid Build Coastguard Worker        **kwargs):
580*d9f75844SAndroid Build Coastguard Worker    """Add a pre-submit builder.
581*d9f75844SAndroid Build Coastguard Worker
582*d9f75844SAndroid Build Coastguard Worker    Args:
583*d9f75844SAndroid Build Coastguard Worker      name: builder name (str).
584*d9f75844SAndroid Build Coastguard Worker      dimensions: dict of Swarming dimensions (strings) to search machines by.
585*d9f75844SAndroid Build Coastguard Worker      properties: dict of properties to pass to the recipe (on top of the default ones).
586*d9f75844SAndroid Build Coastguard Worker      try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
587*d9f75844SAndroid Build Coastguard Worker      cq: None to exclude this from all commit queues, or a dict of kwargs for cq_tryjob_verifier.
588*d9f75844SAndroid Build Coastguard Worker      branch_cq: False to exclude this builder just from the release-branch CQ.
589*d9f75844SAndroid Build Coastguard Worker      goma_enable_ats: True if the ATS should be enabled by the builder.
590*d9f75844SAndroid Build Coastguard Worker      goma_jobs: Number of jobs to be used by the builder.
591*d9f75844SAndroid Build Coastguard Worker      **kwargs: Pass on to webrtc_builder / luci.builder.
592*d9f75844SAndroid Build Coastguard Worker    Returns:
593*d9f75844SAndroid Build Coastguard Worker      A luci.builder.
594*d9f75844SAndroid Build Coastguard Worker    """
595*d9f75844SAndroid Build Coastguard Worker    add_milo(name, {"try": try_cat})
596*d9f75844SAndroid Build Coastguard Worker    dimensions.update({"pool": "luci.webrtc.try", "cpu": DEFAULT_CPU})
597*d9f75844SAndroid Build Coastguard Worker    properties = properties or {}
598*d9f75844SAndroid Build Coastguard Worker    properties["builder_group"] = "tryserver.webrtc"
599*d9f75844SAndroid Build Coastguard Worker    properties.update(make_goma_properties(enable_ats = goma_enable_ats, jobs = goma_jobs))
600*d9f75844SAndroid Build Coastguard Worker    if cq != None:
601*d9f75844SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(name, cq_group = "cq", **cq)
602*d9f75844SAndroid Build Coastguard Worker        if branch_cq:
603*d9f75844SAndroid Build Coastguard Worker            luci.cq_tryjob_verifier(name, cq_group = "cq_branch", **cq)
604*d9f75844SAndroid Build Coastguard Worker
605*d9f75844SAndroid Build Coastguard Worker    return webrtc_builder(
606*d9f75844SAndroid Build Coastguard Worker        name = name,
607*d9f75844SAndroid Build Coastguard Worker        dimensions = dimensions,
608*d9f75844SAndroid Build Coastguard Worker        properties = properties,
609*d9f75844SAndroid Build Coastguard Worker        bucket = "try",
610*d9f75844SAndroid Build Coastguard Worker        service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
611*d9f75844SAndroid Build Coastguard Worker        notifies = ["infra_failure_notifier"],
612*d9f75844SAndroid Build Coastguard Worker        **kwargs
613*d9f75844SAndroid Build Coastguard Worker    )
614*d9f75844SAndroid Build Coastguard Worker
615*d9f75844SAndroid Build Coastguard Workerdef perf_builder(name, perf_cat, **kwargs):
616*d9f75844SAndroid Build Coastguard Worker    """Add a perf builder.
617*d9f75844SAndroid Build Coastguard Worker
618*d9f75844SAndroid Build Coastguard Worker    Args:
619*d9f75844SAndroid Build Coastguard Worker      name: builder name (str).
620*d9f75844SAndroid Build Coastguard Worker      perf_cat: the category + name for the /perf/ console, or None to omit from the console.
621*d9f75844SAndroid Build Coastguard Worker      **kwargs: Pass on to webrtc_builder / luci.builder.
622*d9f75844SAndroid Build Coastguard Worker    Returns:
623*d9f75844SAndroid Build Coastguard Worker      A luci.builder.
624*d9f75844SAndroid Build Coastguard Worker
625*d9f75844SAndroid Build Coastguard Worker    Notifications are also disabled.
626*d9f75844SAndroid Build Coastguard Worker    """
627*d9f75844SAndroid Build Coastguard Worker    add_milo(name, {"perf": perf_cat})
628*d9f75844SAndroid Build Coastguard Worker    properties = make_goma_properties()
629*d9f75844SAndroid Build Coastguard Worker    properties.update(make_reclient_properties("rbe-webrtc-trusted"))
630*d9f75844SAndroid Build Coastguard Worker    properties["builder_group"] = "client.webrtc.perf"
631*d9f75844SAndroid Build Coastguard Worker    dimensions = {"pool": "luci.webrtc.perf", "os": "Linux", "cores": "2"}
632*d9f75844SAndroid Build Coastguard Worker    if "Android" in name:
633*d9f75844SAndroid Build Coastguard Worker        # Android perf testers require more performant bots to finish under 3 hours.
634*d9f75844SAndroid Build Coastguard Worker        dimensions["cores"] = "8"
635*d9f75844SAndroid Build Coastguard Worker    return webrtc_builder(
636*d9f75844SAndroid Build Coastguard Worker        name = name,
637*d9f75844SAndroid Build Coastguard Worker        dimensions = dimensions,
638*d9f75844SAndroid Build Coastguard Worker        properties = properties,
639*d9f75844SAndroid Build Coastguard Worker        bucket = "perf",
640*d9f75844SAndroid Build Coastguard Worker        service_account = "[email protected]",
641*d9f75844SAndroid Build Coastguard Worker        # log_base of 1.7 means:
642*d9f75844SAndroid Build Coastguard Worker        # when there are P pending builds, LUCI will batch the first B builds.
643*d9f75844SAndroid Build Coastguard Worker        # P:  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 ...
644*d9f75844SAndroid Build Coastguard Worker        # B:  1  1  2  2  3  3  3  3  4  4  4  4  4  4  5 ...
645*d9f75844SAndroid Build Coastguard Worker        triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
646*d9f75844SAndroid Build Coastguard Worker        repo = WEBRTC_GIT,
647*d9f75844SAndroid Build Coastguard Worker        execution_timeout = 3 * time.hour,
648*d9f75844SAndroid Build Coastguard Worker        notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
649*d9f75844SAndroid Build Coastguard Worker        **kwargs
650*d9f75844SAndroid Build Coastguard Worker    )
651*d9f75844SAndroid Build Coastguard Worker
652*d9f75844SAndroid Build Coastguard Workerdef cron_builder(name, service_account = None, **kwargs):
653*d9f75844SAndroid Build Coastguard Worker    if service_account == None:
654*d9f75844SAndroid Build Coastguard Worker        service_account = "[email protected]"
655*d9f75844SAndroid Build Coastguard Worker    add_milo(name, {"cron": True})
656*d9f75844SAndroid Build Coastguard Worker    return webrtc_builder(
657*d9f75844SAndroid Build Coastguard Worker        name = name,
658*d9f75844SAndroid Build Coastguard Worker        dimensions = {"pool": "luci.webrtc.cron", "os": "Linux", "cpu": DEFAULT_CPU},
659*d9f75844SAndroid Build Coastguard Worker        bucket = "cron",
660*d9f75844SAndroid Build Coastguard Worker        service_account = service_account,
661*d9f75844SAndroid Build Coastguard Worker        notifies = ["cron_notifier"],
662*d9f75844SAndroid Build Coastguard Worker        **kwargs
663*d9f75844SAndroid Build Coastguard Worker    )
664*d9f75844SAndroid Build Coastguard Worker
665*d9f75844SAndroid Build Coastguard Workerdef normal_builder_factory(**common_kwargs):
666*d9f75844SAndroid Build Coastguard Worker    def builder(*args, **kwargs):
667*d9f75844SAndroid Build Coastguard Worker        kwargs.update(common_kwargs)
668*d9f75844SAndroid Build Coastguard Worker        return ci_builder(*args, **kwargs)
669*d9f75844SAndroid Build Coastguard Worker
670*d9f75844SAndroid Build Coastguard Worker    def try_job(name, **kwargs):
671*d9f75844SAndroid Build Coastguard Worker        kwargs.update(common_kwargs)
672*d9f75844SAndroid Build Coastguard Worker        return try_builder(name, **kwargs)
673*d9f75844SAndroid Build Coastguard Worker
674*d9f75844SAndroid Build Coastguard Worker    return builder, try_job
675*d9f75844SAndroid Build Coastguard Worker
676*d9f75844SAndroid Build Coastguard Worker# Mixins:
677*d9f75844SAndroid Build Coastguard Worker
678*d9f75844SAndroid Build Coastguard Workerlinux_builder, linux_try_job = normal_builder_factory(
679*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Linux", "inside_docker": "0"},
680*d9f75844SAndroid Build Coastguard Worker)
681*d9f75844SAndroid Build Coastguard Worker
682*d9f75844SAndroid Build Coastguard Workerandroid_builder, android_try_job = normal_builder_factory(
683*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Linux"},
684*d9f75844SAndroid Build Coastguard Worker)
685*d9f75844SAndroid Build Coastguard Worker
686*d9f75844SAndroid Build Coastguard Workerwin_builder = normal_builder_factory(
687*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Windows"},
688*d9f75844SAndroid Build Coastguard Worker)[0]
689*d9f75844SAndroid Build Coastguard Worker
690*d9f75844SAndroid Build Coastguard Workerwin_try_job = normal_builder_factory(
691*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Windows"},
692*d9f75844SAndroid Build Coastguard Worker    goma_enable_ats = False,
693*d9f75844SAndroid Build Coastguard Worker)[1]
694*d9f75844SAndroid Build Coastguard Worker
695*d9f75844SAndroid Build Coastguard Workermac_builder, mac_try_job = normal_builder_factory(
696*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Mac"},
697*d9f75844SAndroid Build Coastguard Worker)
698*d9f75844SAndroid Build Coastguard Worker
699*d9f75844SAndroid Build Coastguard Workerios_builder, ios_try_job = normal_builder_factory(
700*d9f75844SAndroid Build Coastguard Worker    dimensions = {"os": "Mac"},
701*d9f75844SAndroid Build Coastguard Worker    properties = {"xcode_build_version": WEBRTC_XCODE13},
702*d9f75844SAndroid Build Coastguard Worker    caches = [swarming.cache(
703*d9f75844SAndroid Build Coastguard Worker        name = "xcode_ios_" + WEBRTC_XCODE13,
704*d9f75844SAndroid Build Coastguard Worker        path = "xcode_ios_" + WEBRTC_XCODE13 + ".app",
705*d9f75844SAndroid Build Coastguard Worker    )],
706*d9f75844SAndroid Build Coastguard Worker)
707*d9f75844SAndroid Build Coastguard Worker
708*d9f75844SAndroid Build Coastguard Worker# Actual builder configuration:
709*d9f75844SAndroid Build Coastguard Worker
710*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32 (dbg)", "Android|arm|dbg")
711*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_arm_dbg", cq = None)
712*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_arm_dbg")
713*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32", "Android|arm|rel")
714*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_arm_rel")
715*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
716*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_arm_rel")
717*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
718*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
719*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android32 (O Pixel2)", "Android|arm|Tester|O Pixel2", triggered_by = ["Android32 Builder arm"])
720*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android32 (R Pixel5)", "Android|arm|Tester|R Pixel5", triggered_by = ["Android32 Builder arm"])
721*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_arm64_dbg", cq = None)
722*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_arm64_dbg", cq = None)
723*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android64", "Android|arm64|rel")
724*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_arm64_rel")
725*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
726*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
727*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
728*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Android64 (R Pixel5)", "Android|arm64|Tester|R Pixel5", triggered_by = ["Android64 Builder arm64"])
729*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_arm64_rel")
730*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
731*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_x64_dbg")
732*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_x64_rel", cq = None)
733*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
734*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_x86_dbg")
735*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32 Builder x86", "Android|x86|rel")
736*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_compile_x86_rel")
737*d9f75844SAndroid Build Coastguard Workerandroid_builder("Android32 (more configs)", "Android|arm|more")
738*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_arm_more_configs")
739*d9f75844SAndroid Build Coastguard Workerandroid_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
740*d9f75844SAndroid Build Coastguard Worker
741*d9f75844SAndroid Build Coastguard Workerios_builder("iOS64 Debug", "iOS|arm64|dbg")
742*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_compile_arm64_dbg")
743*d9f75844SAndroid Build Coastguard Workerios_builder("iOS64 Release", "iOS|arm64|rel")
744*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_compile_arm64_rel")
745*d9f75844SAndroid Build Coastguard Workerios_builder("iOS64 Sim Debug (iOS 14)", "iOS|x64|14")
746*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_sim_x64_dbg_ios14")
747*d9f75844SAndroid Build Coastguard Workerios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
748*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_sim_x64_dbg_ios13")
749*d9f75844SAndroid Build Coastguard Workerios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
750*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_sim_x64_dbg_ios12")
751*d9f75844SAndroid Build Coastguard Workerios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
752*d9f75844SAndroid Build Coastguard Workerios_try_job("ios_api_framework", recipe = "ios_api_framework")
753*d9f75844SAndroid Build Coastguard Worker
754*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux32 Debug", "Linux|x86|dbg")
755*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_x86_dbg")
756*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux32 Release", "Linux|x86|rel")
757*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_x86_rel")
758*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Debug", "Linux|x64|dbg")
759*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_dbg", cq = None)
760*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_dbg")
761*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Release", "Linux|x64|rel")
762*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_rel")
763*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
764*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_rel")
765*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
766*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
767*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_arm_dbg")
768*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
769*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_arm_rel")
770*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
771*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_arm64_dbg")
772*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
773*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_compile_arm64_rel")
774*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux Asan", "Linux|x64|asan")
775*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_asan")
776*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux MSan", "Linux|x64|msan")
777*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_msan")
778*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux Tsan v2", "Linux|x64|tsan")
779*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_tsan2")
780*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux UBSan", "Linux|x64|ubsan")
781*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_ubsan")
782*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
783*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_ubsan_vptr")
784*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
785*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
786*d9f75844SAndroid Build Coastguard Workerlinux_builder("Linux (more configs)", "Linux|x64|more")
787*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_more_configs")
788*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
789*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
790*d9f75844SAndroid Build Coastguard Workerlinux_try_job("linux_coverage", cq = None)
791*d9f75844SAndroid Build Coastguard Worker
792*d9f75844SAndroid Build Coastguard Workerlinux_builder("Fuchsia Builder", ci_cat = None, perf_cat = "Fuchsia|x64|Builder|", prioritized = True)
793*d9f75844SAndroid Build Coastguard Workerlinux_builder("Fuchsia Release", "Fuchsia|x64|rel")
794*d9f75844SAndroid Build Coastguard Workerlinux_try_job("fuchsia_rel", cq = None)
795*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Fuchsia", "Fuchsia|x64|Tester|", triggered_by = ["Fuchsia Builder"])
796*d9f75844SAndroid Build Coastguard Worker
797*d9f75844SAndroid Build Coastguard Workermac_builder("Mac64 Debug", "Mac|x64|dbg")
798*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_dbg", cq = None)
799*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_compile_dbg")
800*d9f75844SAndroid Build Coastguard Workermac_builder("Mac64 Release", "Mac|x64|rel")
801*d9f75844SAndroid Build Coastguard Worker
802*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_rel")
803*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_compile_rel", cq = None)
804*d9f75844SAndroid Build Coastguard Workermac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
805*d9f75844SAndroid Build Coastguard Workermac_builder("MacArm64 Builder", ci_cat = None, perf_cat = "Mac|arm64|Builder|")
806*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Mac 11", "Mac|x64|Tester|11", triggered_by = ["Mac64 Builder"])
807*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Mac M1 Arm64 12", "Mac|arm64|Tester|12", triggered_by = ["MacArm64 Builder"])
808*d9f75844SAndroid Build Coastguard Worker
809*d9f75844SAndroid Build Coastguard Workermac_builder("Mac Asan", "Mac|x64|asan")
810*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_asan")
811*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
812*d9f75844SAndroid Build Coastguard Workermac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", cpu = "arm64-64-Apple_M1")
813*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_rel_m1")
814*d9f75844SAndroid Build Coastguard Workermac_try_job("mac_dbg_m1")
815*d9f75844SAndroid Build Coastguard Worker
816*d9f75844SAndroid Build Coastguard Workerwin_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
817*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_x86_clang_dbg", cq = None)
818*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_compile_x86_clang_dbg")
819*d9f75844SAndroid Build Coastguard Workerwin_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
820*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_x86_clang_rel")
821*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_compile_x86_clang_rel", cq = None)
822*d9f75844SAndroid Build Coastguard Workerwin_builder("Win64 Builder (Clang)", ci_cat = None, perf_cat = "Win|x64|Builder|")
823*d9f75844SAndroid Build Coastguard Workerperf_builder("Perf Win 10", "Win|x64|Tester|10", triggered_by = ["Win64 Builder (Clang)"])
824*d9f75844SAndroid Build Coastguard Workerwin_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
825*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_x64_clang_dbg", cq = None)
826*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_compile_x64_clang_dbg")
827*d9f75844SAndroid Build Coastguard Workerwin_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
828*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_x64_clang_rel", cq = None)
829*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_compile_x64_clang_rel")
830*d9f75844SAndroid Build Coastguard Workerwin_builder("Win64 ASan", "Win Clang|x64|asan")
831*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_asan")
832*d9f75844SAndroid Build Coastguard Workerwin_builder("Win (more configs)", "Win Clang|x86|more")
833*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_x86_more_configs")
834*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
835*d9f75844SAndroid Build Coastguard Workerwin_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
836*d9f75844SAndroid Build Coastguard Worker
837*d9f75844SAndroid Build Coastguard Workerlinux_try_job(
838*d9f75844SAndroid Build Coastguard Worker    "presubmit",
839*d9f75844SAndroid Build Coastguard Worker    recipe = "run_presubmit",
840*d9f75844SAndroid Build Coastguard Worker    properties = {"repo_name": "webrtc", "runhooks": True},
841*d9f75844SAndroid Build Coastguard Worker    priority = 28,
842*d9f75844SAndroid Build Coastguard Worker    cq = {"disable_reuse": True},
843*d9f75844SAndroid Build Coastguard Worker)
844*d9f75844SAndroid Build Coastguard Worker
845*d9f75844SAndroid Build Coastguard Workercron_builder(
846*d9f75844SAndroid Build Coastguard Worker    "Auto-roll - WebRTC DEPS",
847*d9f75844SAndroid Build Coastguard Worker    recipe = "auto_roll_webrtc_deps",
848*d9f75844SAndroid Build Coastguard Worker    schedule = "0 */2 * * *",  # Every 2 hours.
849*d9f75844SAndroid Build Coastguard Worker)
850*d9f75844SAndroid Build Coastguard Worker
851*d9f75844SAndroid Build Coastguard Workercron_builder(
852*d9f75844SAndroid Build Coastguard Worker    "WebRTC version update",
853*d9f75844SAndroid Build Coastguard Worker    recipe = "update_webrtc_binary_version",
854*d9f75844SAndroid Build Coastguard Worker    schedule = "0 4 * * *",  # Every day at 4am.
855*d9f75844SAndroid Build Coastguard Worker    service_account = "[email protected]",
856*d9f75844SAndroid Build Coastguard Worker)
857*d9f75844SAndroid Build Coastguard Worker
858*d9f75844SAndroid Build Coastguard Workerlkgr_config = {
859*d9f75844SAndroid Build Coastguard Worker    "project": "webrtc",
860*d9f75844SAndroid Build Coastguard Worker    "source_url": WEBRTC_GIT,
861*d9f75844SAndroid Build Coastguard Worker    "status_url": "https://webrtc-status.appspot.com",
862*d9f75844SAndroid Build Coastguard Worker    "allowed_lag": 9,  # hours (up to 10x during low commit volume periods)
863*d9f75844SAndroid Build Coastguard Worker    "allowed_gap": 150,  # commits behind
864*d9f75844SAndroid Build Coastguard Worker    "error_recipients": WEBRTC_TROOPER_EMAIL,
865*d9f75844SAndroid Build Coastguard Worker    "buckets": {
866*d9f75844SAndroid Build Coastguard Worker        "webrtc/ci": {
867*d9f75844SAndroid Build Coastguard Worker            # bucket alias: luci.webrtc.ci
868*d9f75844SAndroid Build Coastguard Worker            "builders": [
869*d9f75844SAndroid Build Coastguard Worker                b
870*d9f75844SAndroid Build Coastguard Worker                for b in sorted(lkgr_builders)
871*d9f75844SAndroid Build Coastguard Worker                if b not in skipped_lkgr_bots
872*d9f75844SAndroid Build Coastguard Worker            ],
873*d9f75844SAndroid Build Coastguard Worker        },
874*d9f75844SAndroid Build Coastguard Worker        "chromium/webrtc.fyi": {
875*d9f75844SAndroid Build Coastguard Worker            # bucket alias: luci.chromium.webrtc.fyi
876*d9f75844SAndroid Build Coastguard Worker            "builders": [
877*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Android Builder (dbg)",
878*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
879*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Android Builder",
880*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Android Tests (dbg)",
881*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Android Tests ARM64 (dbg)",
882*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Linux Builder (dbg)",
883*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Linux Builder",
884*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Linux Tester",
885*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Mac Builder (dbg)",
886*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Mac Builder",
887*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Mac Tester",
888*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Win Builder (dbg)",
889*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Win Builder",
890*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI Win10 Tester",
891*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI ios-device",
892*d9f75844SAndroid Build Coastguard Worker                "WebRTC Chromium FYI ios-simulator",
893*d9f75844SAndroid Build Coastguard Worker            ],
894*d9f75844SAndroid Build Coastguard Worker        },
895*d9f75844SAndroid Build Coastguard Worker    },
896*d9f75844SAndroid Build Coastguard Worker}
897*d9f75844SAndroid Build Coastguard Worker
898*d9f75844SAndroid Build Coastguard Workercron_builder(
899*d9f75844SAndroid Build Coastguard Worker    "WebRTC lkgr finder",
900*d9f75844SAndroid Build Coastguard Worker    recipe = "lkgr_finder",
901*d9f75844SAndroid Build Coastguard Worker    properties = {
902*d9f75844SAndroid Build Coastguard Worker        "project": "webrtc",
903*d9f75844SAndroid Build Coastguard Worker        "repo": WEBRTC_GIT,
904*d9f75844SAndroid Build Coastguard Worker        "ref": "refs/heads/lkgr",
905*d9f75844SAndroid Build Coastguard Worker        "src_ref": "refs/heads/main",
906*d9f75844SAndroid Build Coastguard Worker        "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
907*d9f75844SAndroid Build Coastguard Worker        "config": lkgr_config,
908*d9f75844SAndroid Build Coastguard Worker    },
909*d9f75844SAndroid Build Coastguard Worker    schedule = "*/10 * * * *",  # Every 10 minutes.
910*d9f75844SAndroid Build Coastguard Worker)
911