blob: 8a948b2e7efa1eca68e55ca4d0b8dd32e4b6c19a [file] [log] [blame]
Oleh Prypin1a0593f2019-03-11 09:43:28 +01001#!/usr/bin/env lucicfg
2
3# Copyright (c) 2019 The WebRTC project authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7# https://chromium.googlesource.com/infra/luci/luci-go/+/master/lucicfg/doc/
8
Jeremy Leconteea2016b2020-07-01 09:47:22 +02009"""LUCI project configuration for WebRTC CQ and CI."""
10
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020011lucicfg.check_version("1.23.0")
Mirko Bonadei9189d9c2020-06-09 21:54:18 +020012
Oleh Prypin1a0593f2019-03-11 09:43:28 +010013WEBRTC_GIT = "https://webrtc.googlesource.com/src"
14WEBRTC_GERRIT = "https://webrtc-review.googlesource.com/src"
15
Mirko Bonadei32ca4862020-03-11 10:39:45 +010016GOMA_BACKEND_WEBRTC_RBE_PROD = {
Mirko Bonadei1e905342020-03-04 09:39:42 +010017 "$build/goma": {
18 "server_host": "goma.chromium.org",
Jeremy Leconteea2016b2020-07-01 09:47:22 +020019 "use_luci_auth": True,
20 },
Mirko Bonadei1e905342020-03-04 09:39:42 +010021}
22
Mirko Bonadei84360ca2020-03-12 08:35:48 +010023GOMA_BACKEND_WEBRTC_IOS_RBE_PROD = {
24 "$build/goma": {
25 "server_host": "goma.chromium.org",
Jeremy Leconteea2016b2020-07-01 09:47:22 +020026 "use_luci_auth": True,
Mirko Bonadei84360ca2020-03-12 08:35:48 +010027 },
Artem Titov1d47d312020-11-03 14:45:52 +010028 "$depot_tools/osx_sdk": {"sdk_version": "12a7209"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +010029}
30
Patrik Höglund3916a972019-12-04 13:19:38 +010031GOMA_BACKEND_RBE_ATS_PROD = {
32 "$build/goma": {
33 "server_host": "goma.chromium.org",
Mirko Bonadei2688eca2020-03-25 09:15:54 +010034 "use_luci_auth": True,
Jeremy Leconteea2016b2020-07-01 09:47:22 +020035 "enable_ats": True,
36 },
Patrik Höglund3916a972019-12-04 13:19:38 +010037}
38
Mirko Bonadei5aafd472021-04-21 10:42:00 +020039# Disable ATS on CQ/try.
40GOMA_BACKEND_RBE_NO_ATS_PROD = {
41 "$build/goma": {
42 "server_host": "goma.chromium.org",
43 "use_luci_auth": True,
44 "enable_ats": False,
45 },
46}
47
Oleh Prypin1a0593f2019-03-11 09:43:28 +010048# Top-level configs:
49
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020050# Enable LUCI Realms support.
51lucicfg.enable_experiment("crbug.com/1085650")
52
Oleh Prypin1a0593f2019-03-11 09:43:28 +010053lucicfg.config(
54 config_dir = ".",
55 tracked_files = [
56 "commit-queue.cfg",
57 "cr-buildbucket.cfg",
58 "luci-logdog.cfg",
59 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010060 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020061 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010062 "luci-scheduler.cfg",
63 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020064 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010065 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020066 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010067)
68
69luci.project(
70 name = "webrtc",
71 buildbucket = "cr-buildbucket.appspot.com",
72 logdog = "luci-logdog.appspot.com",
73 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010074 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010075 scheduler = "luci-scheduler.appspot.com",
76 swarming = "chromium-swarm.appspot.com",
77 acls = [
78 acl.entry(
79 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
80 groups = ["all"],
81 ),
82 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
83 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
84 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020085 bindings = [
86 luci.binding(
87 roles = "role/swarming.poolOwner",
88 groups = "project-webrtc-admins",
89 ),
90 luci.binding(
91 roles = "role/swarming.poolViewer",
92 groups = "all",
93 ),
94 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010095)
96
97luci.logdog(
98 gs_bucket = "chromium-luci-logdog",
99)
100
101luci.milo(
102 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
103)
104
Owen Rodleya55c38e2020-06-15 11:16:10 +1000105luci.notify(tree_closing_enabled = True)
106
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100107luci.cq(
108 status_host = "chromium-cq-status.appspot.com",
109 submit_max_burst = 1,
110 submit_burst_delay = 1 * time.minute,
111)
112
113luci.gitiles_poller(
114 name = "webrtc-gitiles-trigger-master",
115 bucket = "ci",
116 repo = WEBRTC_GIT,
117)
118
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200119# Swarming permissions:
120
121# Declare pool realms with default ACLs, effectively defaulting to @root realm.
122luci.realm(name = "pools/ci")
123luci.realm(name = "pools/try")
124luci.realm(name = "pools/perf")
125luci.realm(name = "pools/cron")
126
127# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
128luci.binding(
129 realm = "@root",
130 roles = "role/swarming.poolUser",
131 groups = "project-webrtc-admins",
132)
133luci.binding(
134 realm = "@root",
135 roles = "role/swarming.taskTriggerer",
136 groups = "project-webrtc-admins",
137)
138
139# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
140luci.binding(
141 realm = "pools/try",
142 roles = "role/swarming.poolUser",
143 groups = "project-webrtc-led-users",
144)
145luci.binding(
146 realm = "try",
147 roles = "role/swarming.taskTriggerer",
148 groups = "project-webrtc-led-users",
149)
150
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100151# Bucket definitions:
152
153luci.bucket(
154 name = "try",
155 acls = [
156 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
157 "service-account-cq",
158 "project-webrtc-tryjob-access",
159 ]),
160 ],
161)
162
163luci.bucket(
164 name = "ci",
165 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200166 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
167 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100168 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200169 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
170 # Allow Pinpoint to trigger builds for bisection
171 "service-account-chromeperf",
172 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100173 ],
174)
175
176luci.bucket(
177 name = "perf",
178 acls = [
179 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100180 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
181 ]),
182 ],
183)
184
185luci.bucket(
186 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100187)
188
189# Commit queue definitions:
190
191luci.cq_group(
192 name = "cq",
193 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100194 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100195 acls = [
196 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
197 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
198 ],
199 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200200 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100201)
202
203luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100204 name = "cq_branch",
205 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
206 acls = [
207 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
208 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
209 ],
210 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200211 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100212)
213
214luci.cq_group(
215 name = "cq_infra",
216 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100217 acls = [
218 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
219 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
220 ],
221 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200222 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100223)
224
225luci.cq_tryjob_verifier(
226 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100227 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100228)
229
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200230luci.cq_tryjob_verifier(
231 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
232 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
233 cq_group = "cq",
234)
235
Oleh Prypin71d17422019-03-28 08:43:16 +0100236# Notifier definitions:
237
238luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200239 name = "post_submit_failure_notifier",
240 on_new_status = ["FAILURE"],
Oleh Prypin71d17422019-03-28 08:43:16 +0100241 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200242 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200243 name = "build_failure",
244 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200245 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100246)
247
248luci.notifier(
249 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200250 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000251 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200252 template = luci.notifier_template(
253 name = "cron",
254 body = io.read_file("luci-notify/email-templates/cron.template"),
255 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100256)
257
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200258luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200259 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200260 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000261 notify_emails = ["webrtc-troopers-robots@google.com"],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200262 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200263 name = "infra_failure",
264 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200265 ),
266)
267
Owen Rodley6b721ba2020-05-26 10:04:20 +1000268# Tree closer definitions:
269
270luci.tree_closer(
271 name = "webrtc_tree_closer",
272 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000273 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
274 # that LUCI-Notify would take the exact same actions. Once we've switched
275 # over, this should be updated - several of these steps don't exist in
276 # WebRTC recipes.
277 failed_step_regexp = [
278 "bot_update",
279 "compile",
280 "gclient runhooks",
281 "runhooks",
282 "update",
283 "extract build",
284 "cleanup_temp",
285 "taskkill",
286 "compile",
287 "gn",
288 ],
289 failed_step_regexp_exclude = ".*\\(experimental\\).*",
290)
291
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100292# Recipe definitions:
293
294def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
295 return luci.recipe(
296 name = recipe.split("/")[-1],
297 cipd_package = pkg,
298 cipd_version = "refs/heads/master",
299 recipe = recipe,
300 )
301
302recipe("chromium_trybot")
303recipe("run_presubmit")
304recipe("webrtc/auto_roll_webrtc_deps")
305recipe("webrtc/ios")
306recipe("webrtc/ios_api_framework")
307recipe("webrtc/libfuzzer")
308recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100309recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100310recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800311recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100312
313# Console definitions:
314
315luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
316luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
317luci.list_view(name = "cron", title = "Cron")
318luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
319luci.list_view(name = "try", title = "Tryserver")
320
321def add_milo(builder, views):
322 """Add Milo console entries for the builder.
323
324 Args:
325 builder: builder name (str).
326 views: dict where keys are names of consoles and values are either a
327 category for the console (str, pipe-separated) or True, which means
328 adding to a list view rather than a console.
329 """
330 for view_name, category in views.items():
331 if category == None:
332 continue
333 elif type(category) == "string":
334 category, _, short_name = category.rpartition("|")
335 luci.console_view_entry(
336 console_view = view_name,
337 builder = builder,
338 category = category or None,
339 short_name = short_name or None,
340 )
341 elif category == True:
342 luci.list_view_entry(
343 list_view = view_name,
344 builder = builder,
345 )
346 else:
347 fail("Unexpected value for category: %r" % category)
348
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200349lkgr_builders = {}
350
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100351# Builder-defining functions:
352
Artem Titarenkof6588b72019-11-14 14:28:11 +0100353def webrtc_builder(
354 name,
355 recipe = "standalone",
356 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200357 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100358 priority = 30,
359 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200360 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100361 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200362 """WebRTC specific wrapper around luci.builder.
363
364 Args:
365 name: builder name (str).
366 recipe: string with the name of the recipe to run.
367 dimensions: dict of Swarming dimensions (strings) to search machines by.
368 properties: dict of properties to pass to the recipe (on top of the default ones).
369 priority: int [1-255] or None, indicating swarming task priority, lower is
370 more important. If None, defer the decision to Buildbucket service.
371 execution_timeout: int or None, how long to wait for a running build to finish before
372 forcefully aborting it and marking the build as timed out. If None,
373 defer the decision to Buildbucket service.
374 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
375 decition to the goma module.
376 **kwargs: Pass on to webrtc_builder / luci.builder.
377 Returns:
378 A luci.builder.
379 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100380 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
381
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200382 if goma_jobs != None:
383 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
384 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900385 properties = merge_dicts(properties, {
386 "$recipe_engine/isolated": {
387 "server": "https://isolateserver.appspot.com",
388 },
389 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100390 return luci.builder(
391 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200392 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100393 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200394 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100395 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100396 priority = priority,
397 build_numbers = True,
398 swarming_tags = ["vpython:native-python-wrapper"],
399 **kwargs
400 )
401
402def ci_builder(
403 name,
404 ci_cat,
405 perf_cat = None,
406 fyi_cat = None,
407 properties = {},
408 dimensions = {},
409 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100410 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100411 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200412 """Add a post-submit builder.
413
414 Args:
415 name: builder name (str).
416 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
417 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
418 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
419 properties: dict of properties to pass to the recipe (on top of the default ones).
420 dimensions: dict of Swarming dimensions (strings) to search machines by.
421 prioritized: True to make this builder have a higher priority and never batch builds.
422 enabled: False to exclude this builder from consoles and failure notifications.
423 **kwargs: Pass on to webrtc_builder / luci.builder.
424 Returns:
425 A luci.builder.
426
427 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
428 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100429 if prioritized:
430 kwargs["triggering_policy"] = scheduler.greedy_batching(
431 max_batch_size = 1,
432 max_concurrent_invocations = 3,
433 )
434 kwargs["priority"] = 29
435
Oleh Prypinf5432c52019-03-19 15:10:37 +0100436 if enabled:
437 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200438 if ci_cat:
439 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100440 return webrtc_builder(
441 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700442 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100443 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
444 bucket = "ci",
445 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100446 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100447 repo = WEBRTC_GIT,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200448 notifies = ["post_submit_failure_notifier", "webrtc_tree_closer", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100449 **kwargs
450 )
451
452def try_builder(
453 name,
454 try_cat = True,
455 fyi_cat = None,
456 properties = {},
457 dimensions = {},
458 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100459 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100460 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200461 """Add a pre-submit builder.
462
463 Args:
464 name: builder name (str).
465 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
466 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
467 properties: dict of properties to pass to the recipe (on top of the default ones).
468 dimensions: dict of Swarming dimensions (strings) to search machines by.
469 cq: None to exclude this from all commit queues, or a dict of kwargs for cq_tryjob_verifier.
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100470 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200471 **kwargs: Pass on to webrtc_builder / luci.builder.
472 Returns:
473 A luci.builder.
474 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100475 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
476 if cq != None:
477 luci.cq_tryjob_verifier(
478 builder = name,
479 cq_group = "cq",
480 **cq
481 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100482 if branch_cq:
483 luci.cq_tryjob_verifier(
484 builder = name,
485 cq_group = "cq_branch",
486 **cq
487 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100488
489 return webrtc_builder(
490 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700491 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100492 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
493 bucket = "try",
494 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200495 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100496 **kwargs
497 )
498
499def perf_builder(
500 name,
501 perf_cat,
502 recipe = "standalone",
503 properties = {},
504 dimensions = {},
505 **kwargs):
506 add_milo(name, {"perf": perf_cat})
507 return webrtc_builder(
508 name = name,
509 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700510 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100511 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
512 bucket = "perf",
513 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
514 # log_base of 1.7 means:
515 # when there are P pending builds, LUCI will batch the first B builds.
516 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
517 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200518 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100519 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200520 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100521 **kwargs
522 )
523
Mirko Bonadei12643772020-03-27 13:16:35 +0100524def android_perf_builder(
525 name,
526 perf_cat,
527 recipe = "standalone",
528 properties = {},
529 dimensions = {},
530 **kwargs):
531 return perf_builder(
532 name = name,
533 perf_cat = perf_cat,
534 recipe = recipe,
535 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
536 dimensions = dimensions,
537 **kwargs
538 )
539
540def linux_perf_builder(
541 name,
542 perf_cat,
543 recipe = "standalone",
544 properties = {},
545 dimensions = {},
546 **kwargs):
547 return perf_builder(
548 name = name,
549 perf_cat = perf_cat,
550 recipe = recipe,
551 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
552 dimensions = dimensions,
553 **kwargs
554 )
555
556def mac_perf_builder(
557 name,
558 perf_cat,
559 recipe = "standalone",
560 properties = {},
561 dimensions = {},
562 **kwargs):
563 return perf_builder(
564 name = name,
565 perf_cat = perf_cat,
566 recipe = recipe,
567 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
568 dimensions = dimensions,
569 **kwargs
570 )
571
572def win_perf_builder(
573 name,
574 perf_cat,
575 recipe = "standalone",
576 properties = {},
577 dimensions = {},
578 **kwargs):
579 return perf_builder(
580 name = name,
581 perf_cat = perf_cat,
582 recipe = recipe,
583 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
584 dimensions = dimensions,
585 **kwargs
586 )
587
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100588def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
589 if service_account == None:
590 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100591 add_milo(name, {"cron": True})
592 return webrtc_builder(
593 name = name,
594 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
595 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100596 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100597 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100598 **kwargs
599 )
600
601# Helpers:
602
603def merge_dicts(a, b):
604 """Return the result of merging two dicts.
605
606 If matching values are both dicts or both lists, they will be merged (non-recursively).
607
608 Args:
609 a: first dict.
610 b: second dict (takes priority).
611 Returns:
612 Merged dict.
613 """
614 a = dict(a)
615 for k, bv in b.items():
616 av = a.get(k)
617 if type(av) == "dict" and type(bv) == "dict":
618 a[k] = dict(av)
619 a[k].update(bv)
620 elif type(av) == "list" and type(bv) == "list":
621 a[k] = av + bv
622 else:
623 a[k] = bv
624 return a
625
626def normal_builder_factory(**common_kwargs):
627 def builder(*args, **kwargs):
628 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
629
630 def try_job(*args, **kwargs):
631 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
632
633 return builder, try_job
634
635# Mixins:
636
637linux_builder, linux_try_job = normal_builder_factory(
638 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100639 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100640)
641
642android_builder, android_try_job = normal_builder_factory(
643 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100644 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100645)
646
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200647def win_builder(*args, **kwargs):
648 return ci_builder(
649 *args,
650 **merge_dicts({
651 "dimensions": {"os": "Windows"},
652 "properties": GOMA_BACKEND_RBE_ATS_PROD,
653 }, kwargs)
654 )
655
656def win_try_job(*args, **kwargs):
657 return try_builder(
658 *args,
659 **merge_dicts({
660 "dimensions": {"os": "Windows"},
661 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
662 }, kwargs)
663 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100664
665mac_builder, mac_try_job = normal_builder_factory(
666 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100667 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100668)
669
670ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200671 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100672 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100673 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
674 caches = [swarming.cache("osx_sdk")],
675)
676
677# Some iOS builders don't use goma because they build using
678# `use_xcode_clang=true` which is not supported by goma.
679# https://ci.chromium.org/p/webrtc/builders/ci/iOS%20API%20Framework%20Builder
680# https://ci.chromium.org/p/webrtc/builders/try/ios_api_framework
681ios_builder_no_goma, ios_try_job_no_goma = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200682 dimensions = {"os": "Mac-10.15"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100683 recipe = "ios",
Artem Titov1d47d312020-11-03 14:45:52 +0100684 properties = {"$depot_tools/osx_sdk": {"sdk_version": "12a7209"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100685 caches = [swarming.cache("osx_sdk")],
686)
687
688# Actual builder configuration:
689
690android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
691android_try_job("android_compile_arm_dbg", cq = None)
692android_try_job("android_arm_dbg")
693android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
694android_try_job("android_arm_rel")
695android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
696android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200697android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100698android_perf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100699android_try_job("android_compile_arm64_dbg", cq = None)
700android_try_job("android_arm64_dbg", cq = None)
701android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
702android_try_job("android_arm64_rel")
703android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100704android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
705android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100706android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100707android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
708android_try_job("android_compile_x64_dbg")
709android_try_job("android_compile_x64_rel", cq = None)
710android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
711android_try_job("android_compile_x86_dbg")
712android_builder("Android32 Builder x86", "Android|x86|rel")
713android_try_job("android_compile_x86_rel")
714android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
715android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100716android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100717
718ios_builder("iOS32 Debug", "iOS|arm|dbg")
719ios_try_job("ios_compile_arm_dbg")
720ios_builder("iOS32 Release", "iOS|arm|rel")
721ios_try_job("ios_compile_arm_rel")
722ios_builder("iOS64 Debug", "iOS|arm64|dbg")
723ios_try_job("ios_compile_arm64_dbg")
724ios_builder("iOS64 Release", "iOS|arm64|rel")
725ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100726ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Mirko Bonadeif1e0c0b2021-01-12 13:05:52 +0100727ios_try_job("ios_sim_x64_dbg_ios14", cq = None)
Artem Titov1d47d312020-11-03 14:45:52 +0100728ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Artem Titove973dd62020-11-03 18:05:21 +0100729ios_try_job("ios_sim_x64_dbg_ios13", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100730ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin34ac6592021-02-04 13:03:49 +0000731
732# TODO(crbug.com/1174112): return ios_sim_x64_dbg_ios12 to cq.
733ios_try_job("ios_sim_x64_dbg_ios12", cq = None)
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100734ios_builder_no_goma("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200735ios_try_job_no_goma("ios_api_framework", recipe = "ios_api_framework", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100736
737linux_builder("Linux32 Debug", "Linux|x86|dbg")
738linux_try_job("linux_x86_dbg")
739linux_builder("Linux32 Release", "Linux|x86|rel")
740linux_try_job("linux_x86_rel")
741linux_builder("Linux64 Debug", "Linux|x64|dbg")
742linux_try_job("linux_dbg", cq = None)
743linux_try_job("linux_compile_dbg")
744linux_builder("Linux64 Release", "Linux|x64|rel")
745linux_try_job("linux_rel")
746linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
747linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100748linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
749linux_perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100750linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
751linux_try_job("linux_compile_arm_dbg")
752linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
753linux_try_job("linux_compile_arm_rel")
754linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
755linux_try_job("linux_compile_arm64_dbg")
756linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
757linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100758linux_builder("Linux Asan", "Linux|x64|asan")
759linux_try_job("linux_asan")
760linux_builder("Linux MSan", "Linux|x64|msan")
761linux_try_job("linux_msan")
762linux_builder("Linux Tsan v2", "Linux|x64|tsan")
763linux_try_job("linux_tsan2")
764linux_builder("Linux UBSan", "Linux|x64|ubsan")
765linux_try_job("linux_ubsan")
766linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
767linux_try_job("linux_ubsan_vptr")
768linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
769linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
770linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
771linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100772linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100773linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100774
775mac_builder("Mac64 Debug", "Mac|x64|dbg")
776mac_try_job("mac_dbg", cq = None)
777mac_try_job("mac_compile_dbg")
778mac_builder("Mac64 Release", "Mac|x64|rel")
Andrey Logvina9501222021-04-27 18:08:39 +0000779mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100780mac_try_job("mac_compile_rel", cq = None)
781mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100782mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100783mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000784mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100785mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100786
787win_builder("Win32 Debug", "Win MSVC|x86|dbg")
788win_try_job("win_x86_msvc_dbg")
789win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000790win_builder("Win32 Release", "Win MSVC|x86|rel")
791win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100792win_try_job("win_compile_x86_msvc_rel", cq = None)
793win_builder("Win64 Debug", "Win MSVC|x64|dbg")
794win_try_job("win_x64_msvc_dbg")
795win_try_job("win_compile_x64_msvc_dbg", cq = None)
796win_builder("Win64 Release", "Win MSVC|x64|rel")
797win_try_job("win_x64_msvc_rel")
798win_try_job("win_compile_x64_msvc_rel", cq = None)
799win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
800win_try_job("win_x86_clang_dbg", cq = None)
801win_try_job("win_compile_x86_clang_dbg")
802win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
803win_try_job("win_x86_clang_rel")
804win_try_job("win_compile_x86_clang_rel", cq = None)
805win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100806win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100807win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
808win_try_job("win_x64_clang_dbg", cq = None)
809win_try_job("win_x64_clang_dbg_win8", cq = None)
810win_try_job("win_x64_clang_dbg_win10", cq = None)
811win_try_job("win_compile_x64_clang_dbg")
812win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
813win_try_job("win_x64_clang_rel", cq = None)
814win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200815win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100816win_try_job("win_asan")
817win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
818win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
819win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
820win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200821win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
822win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100823
824linux_try_job(
825 "presubmit",
826 recipe = "run_presubmit",
827 properties = {"repo_name": "webrtc", "runhooks": True},
828 priority = 28,
829 cq = {"disable_reuse": True},
830)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100831
832cron_builder(
833 "Auto-roll - WebRTC DEPS",
834 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200835 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100836)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200837
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100838cron_builder(
839 "WebRTC version update",
840 recipe = "update_webrtc_binary_version",
841 schedule = "0 4 * * *", # Every day at 4am.
842 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
843)
844
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100845skipped_lkgr_bots = [
846 "iOS64 Sim Debug (iOS 14.0)",
847 "iOS64 Sim Debug (iOS 13)",
848 "iOS64 Sim Debug (iOS 12)",
849]
850
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200851lkgr_config = {
852 "project": "webrtc",
853 "source_url": WEBRTC_GIT,
854 "status_url": "https://webrtc-status.appspot.com",
855 "allowed_lag": 300, # hours
856 "allowed_gap": 12, # commits behind
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000857 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200858 "buckets": {
859 "webrtc/ci": {
860 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100861 "builders": [
862 b
863 for b in sorted(lkgr_builders)
864 if b not in skipped_lkgr_bots
865 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200866 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200867 "chromium/webrtc.fyi": {
868 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200869 "builders": [
870 "WebRTC Chromium FYI Android Builder (dbg)",
871 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
872 "WebRTC Chromium FYI Android Builder",
Mirko Bonadei04fe32f2020-05-01 00:45:58 +0200873 "WebRTC Chromium FYI Android Tests (dbg) (L Nexus5)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200874 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
875 "WebRTC Chromium FYI Linux Builder (dbg)",
876 "WebRTC Chromium FYI Linux Builder",
877 "WebRTC Chromium FYI Linux Tester",
878 "WebRTC Chromium FYI Mac Builder (dbg)",
879 "WebRTC Chromium FYI Mac Builder",
880 "WebRTC Chromium FYI Mac Tester",
881 "WebRTC Chromium FYI Win Builder (dbg)",
882 "WebRTC Chromium FYI Win Builder",
883 "WebRTC Chromium FYI Win10 Tester",
Mirko Bonadeif1ef9292021-03-25 18:07:48 +0100884 # TODO(bugs.webrtc.org/12616): Re-enable when the gclient
885 # runhooks step is fixed or skipped.
886 # "WebRTC Chromium FYI Win7 Tester",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200887 "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100888 "WebRTC Chromium FYI ios-device",
889 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200890 ],
891 },
892 },
893}
894
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100895cron_builder(
896 "WebRTC lkgr finder",
897 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200898 properties = {
899 "project": "webrtc",
900 "repo": WEBRTC_GIT,
901 "ref": "refs/heads/lkgr",
902 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
903 "config": lkgr_config,
904 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100905 schedule = "*/10 * * * *", # Every 10 minutes.
906)