blob: c98a1b7921386f19835538e782869bd4f624c7ce [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
Andrii Shyshkalov32515d42021-04-29 14:39:42 +020053# Launch all builds in "realms-aware mode", crbug.com/1177975.
54luci.builder.defaults.experiments.set({"luci.use_realms": 100})
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020055
Oleh Prypin1a0593f2019-03-11 09:43:28 +010056lucicfg.config(
57 config_dir = ".",
58 tracked_files = [
59 "commit-queue.cfg",
60 "cr-buildbucket.cfg",
61 "luci-logdog.cfg",
62 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010063 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020064 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010065 "luci-scheduler.cfg",
66 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020067 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010068 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020069 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010070)
71
72luci.project(
73 name = "webrtc",
74 buildbucket = "cr-buildbucket.appspot.com",
75 logdog = "luci-logdog.appspot.com",
76 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010077 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010078 scheduler = "luci-scheduler.appspot.com",
79 swarming = "chromium-swarm.appspot.com",
80 acls = [
81 acl.entry(
82 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
83 groups = ["all"],
84 ),
85 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
86 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
87 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020088 bindings = [
89 luci.binding(
90 roles = "role/swarming.poolOwner",
91 groups = "project-webrtc-admins",
92 ),
93 luci.binding(
94 roles = "role/swarming.poolViewer",
95 groups = "all",
96 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +020097 # Allow any WebRTC build to trigger a test ran under chromium-tester@
98 # task service account.
99 luci.binding(
100 roles = "role/swarming.taskServiceAccount",
101 users = [
102 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
103 ],
104 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200105 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100106)
107
108luci.logdog(
109 gs_bucket = "chromium-luci-logdog",
110)
111
112luci.milo(
113 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
114)
115
Owen Rodleya55c38e2020-06-15 11:16:10 +1000116luci.notify(tree_closing_enabled = True)
117
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100118luci.cq(
119 status_host = "chromium-cq-status.appspot.com",
120 submit_max_burst = 1,
121 submit_burst_delay = 1 * time.minute,
122)
123
124luci.gitiles_poller(
125 name = "webrtc-gitiles-trigger-master",
126 bucket = "ci",
127 repo = WEBRTC_GIT,
128)
129
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200130# Swarming permissions:
131
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200132luci.realm(name = "pools/cron", bindings = [
133 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
134 luci.binding(
135 roles = "role/swarming.poolUser",
136 projects = "libyuv",
137 ),
138])
139
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200140luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200141luci.realm(name = "pools/ci-tests", bindings = [
142 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
143 luci.binding(
144 roles = "role/swarming.poolUser",
145 groups = "project-webrtc-ci-task-accounts",
146 ),
147 # Allow tasks here to use .ci task service accounts.
148 luci.binding(
149 roles = "role/swarming.taskServiceAccount",
150 groups = "project-webrtc-ci-task-accounts",
151 ),
152])
153
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200154luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200155luci.realm(name = "pools/try-tests", bindings = [
156 # Allow task service accounts of .try pool/bucket to trigger tasks here.
157 luci.binding(
158 roles = "role/swarming.poolUser",
159 groups = "project-webrtc-try-task-accounts",
160 ),
161 # Allow tasks here to use .try task service accounts.
162 luci.binding(
163 roles = "role/swarming.taskServiceAccount",
164 groups = "project-webrtc-try-task-accounts",
165 ),
166])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200167
168# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
169luci.binding(
170 realm = "@root",
171 roles = "role/swarming.poolUser",
172 groups = "project-webrtc-admins",
173)
174luci.binding(
175 realm = "@root",
176 roles = "role/swarming.taskTriggerer",
177 groups = "project-webrtc-admins",
178)
179
180# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
181luci.binding(
182 realm = "pools/try",
183 roles = "role/swarming.poolUser",
184 groups = "project-webrtc-led-users",
185)
186luci.binding(
187 realm = "try",
188 roles = "role/swarming.taskTriggerer",
189 groups = "project-webrtc-led-users",
190)
191
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100192# Bucket definitions:
193
194luci.bucket(
195 name = "try",
196 acls = [
197 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
198 "service-account-cq",
199 "project-webrtc-tryjob-access",
200 ]),
201 ],
202)
203
204luci.bucket(
205 name = "ci",
206 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200207 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
208 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100209 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200210 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
211 # Allow Pinpoint to trigger builds for bisection
212 "service-account-chromeperf",
213 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100214 ],
215)
216
217luci.bucket(
218 name = "perf",
219 acls = [
220 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100221 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
222 ]),
223 ],
224)
225
226luci.bucket(
227 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100228)
229
230# Commit queue definitions:
231
232luci.cq_group(
233 name = "cq",
234 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100235 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100236 acls = [
237 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
238 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
239 ],
240 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200241 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100242)
243
244luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100245 name = "cq_branch",
246 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
247 acls = [
248 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
249 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
250 ],
251 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200252 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100253)
254
255luci.cq_group(
256 name = "cq_infra",
257 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100258 acls = [
259 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
260 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
261 ],
262 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200263 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100264)
265
266luci.cq_tryjob_verifier(
267 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100268 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100269)
270
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200271luci.cq_tryjob_verifier(
272 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
273 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
274 cq_group = "cq",
275)
276
Oleh Prypin71d17422019-03-28 08:43:16 +0100277# Notifier definitions:
278
279luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200280 name = "post_submit_failure_notifier",
281 on_new_status = ["FAILURE"],
Oleh Prypin71d17422019-03-28 08:43:16 +0100282 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200283 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200284 name = "build_failure",
285 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200286 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100287)
288
289luci.notifier(
290 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200291 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000292 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200293 template = luci.notifier_template(
294 name = "cron",
295 body = io.read_file("luci-notify/email-templates/cron.template"),
296 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100297)
298
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200299luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200300 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200301 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000302 notify_emails = ["webrtc-troopers-robots@google.com"],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200303 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200304 name = "infra_failure",
305 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200306 ),
307)
308
Owen Rodley6b721ba2020-05-26 10:04:20 +1000309# Tree closer definitions:
310
311luci.tree_closer(
312 name = "webrtc_tree_closer",
313 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000314 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
315 # that LUCI-Notify would take the exact same actions. Once we've switched
316 # over, this should be updated - several of these steps don't exist in
317 # WebRTC recipes.
318 failed_step_regexp = [
319 "bot_update",
320 "compile",
321 "gclient runhooks",
322 "runhooks",
323 "update",
324 "extract build",
325 "cleanup_temp",
326 "taskkill",
327 "compile",
328 "gn",
329 ],
330 failed_step_regexp_exclude = ".*\\(experimental\\).*",
331)
332
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100333# Recipe definitions:
334
335def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
336 return luci.recipe(
337 name = recipe.split("/")[-1],
338 cipd_package = pkg,
339 cipd_version = "refs/heads/master",
340 recipe = recipe,
341 )
342
343recipe("chromium_trybot")
344recipe("run_presubmit")
345recipe("webrtc/auto_roll_webrtc_deps")
346recipe("webrtc/ios")
347recipe("webrtc/ios_api_framework")
348recipe("webrtc/libfuzzer")
349recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100350recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100351recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800352recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100353
354# Console definitions:
355
356luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
357luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
358luci.list_view(name = "cron", title = "Cron")
359luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
360luci.list_view(name = "try", title = "Tryserver")
361
362def add_milo(builder, views):
363 """Add Milo console entries for the builder.
364
365 Args:
366 builder: builder name (str).
367 views: dict where keys are names of consoles and values are either a
368 category for the console (str, pipe-separated) or True, which means
369 adding to a list view rather than a console.
370 """
371 for view_name, category in views.items():
372 if category == None:
373 continue
374 elif type(category) == "string":
375 category, _, short_name = category.rpartition("|")
376 luci.console_view_entry(
377 console_view = view_name,
378 builder = builder,
379 category = category or None,
380 short_name = short_name or None,
381 )
382 elif category == True:
383 luci.list_view_entry(
384 list_view = view_name,
385 builder = builder,
386 )
387 else:
388 fail("Unexpected value for category: %r" % category)
389
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200390lkgr_builders = {}
391
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100392# Builder-defining functions:
393
Artem Titarenkof6588b72019-11-14 14:28:11 +0100394def webrtc_builder(
395 name,
396 recipe = "standalone",
397 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200398 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100399 priority = 30,
400 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200401 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100402 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200403 """WebRTC specific wrapper around luci.builder.
404
405 Args:
406 name: builder name (str).
407 recipe: string with the name of the recipe to run.
408 dimensions: dict of Swarming dimensions (strings) to search machines by.
409 properties: dict of properties to pass to the recipe (on top of the default ones).
410 priority: int [1-255] or None, indicating swarming task priority, lower is
411 more important. If None, defer the decision to Buildbucket service.
412 execution_timeout: int or None, how long to wait for a running build to finish before
413 forcefully aborting it and marking the build as timed out. If None,
414 defer the decision to Buildbucket service.
415 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
416 decition to the goma module.
417 **kwargs: Pass on to webrtc_builder / luci.builder.
418 Returns:
419 A luci.builder.
420 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100421 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
422
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200423 if goma_jobs != None:
424 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
425 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900426 properties = merge_dicts(properties, {
427 "$recipe_engine/isolated": {
428 "server": "https://isolateserver.appspot.com",
429 },
430 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100431 return luci.builder(
432 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200433 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100434 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200435 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100436 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100437 priority = priority,
438 build_numbers = True,
439 swarming_tags = ["vpython:native-python-wrapper"],
440 **kwargs
441 )
442
443def ci_builder(
444 name,
445 ci_cat,
446 perf_cat = None,
447 fyi_cat = None,
448 properties = {},
449 dimensions = {},
450 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100451 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100452 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200453 """Add a post-submit builder.
454
455 Args:
456 name: builder name (str).
457 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
458 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
459 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
460 properties: dict of properties to pass to the recipe (on top of the default ones).
461 dimensions: dict of Swarming dimensions (strings) to search machines by.
462 prioritized: True to make this builder have a higher priority and never batch builds.
463 enabled: False to exclude this builder from consoles and failure notifications.
464 **kwargs: Pass on to webrtc_builder / luci.builder.
465 Returns:
466 A luci.builder.
467
468 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
469 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100470 if prioritized:
471 kwargs["triggering_policy"] = scheduler.greedy_batching(
472 max_batch_size = 1,
473 max_concurrent_invocations = 3,
474 )
475 kwargs["priority"] = 29
476
Oleh Prypinf5432c52019-03-19 15:10:37 +0100477 if enabled:
478 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200479 if ci_cat:
480 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100481 return webrtc_builder(
482 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700483 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100484 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
485 bucket = "ci",
486 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100487 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100488 repo = WEBRTC_GIT,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200489 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 +0100490 **kwargs
491 )
492
493def try_builder(
494 name,
495 try_cat = True,
496 fyi_cat = None,
497 properties = {},
498 dimensions = {},
499 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100500 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100501 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200502 """Add a pre-submit builder.
503
504 Args:
505 name: builder name (str).
506 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
507 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
508 properties: dict of properties to pass to the recipe (on top of the default ones).
509 dimensions: dict of Swarming dimensions (strings) to search machines by.
510 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 +0100511 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200512 **kwargs: Pass on to webrtc_builder / luci.builder.
513 Returns:
514 A luci.builder.
515 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100516 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
517 if cq != None:
518 luci.cq_tryjob_verifier(
519 builder = name,
520 cq_group = "cq",
521 **cq
522 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100523 if branch_cq:
524 luci.cq_tryjob_verifier(
525 builder = name,
526 cq_group = "cq_branch",
527 **cq
528 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100529
530 return webrtc_builder(
531 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700532 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100533 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
534 bucket = "try",
535 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200536 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100537 **kwargs
538 )
539
540def perf_builder(
541 name,
542 perf_cat,
543 recipe = "standalone",
544 properties = {},
545 dimensions = {},
546 **kwargs):
547 add_milo(name, {"perf": perf_cat})
548 return webrtc_builder(
549 name = name,
550 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700551 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100552 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
553 bucket = "perf",
554 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
555 # log_base of 1.7 means:
556 # when there are P pending builds, LUCI will batch the first B builds.
557 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
558 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200559 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100560 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200561 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100562 **kwargs
563 )
564
Mirko Bonadei12643772020-03-27 13:16:35 +0100565def android_perf_builder(
566 name,
567 perf_cat,
568 recipe = "standalone",
569 properties = {},
570 dimensions = {},
571 **kwargs):
572 return perf_builder(
573 name = name,
574 perf_cat = perf_cat,
575 recipe = recipe,
576 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
577 dimensions = dimensions,
578 **kwargs
579 )
580
581def linux_perf_builder(
582 name,
583 perf_cat,
584 recipe = "standalone",
585 properties = {},
586 dimensions = {},
587 **kwargs):
588 return perf_builder(
589 name = name,
590 perf_cat = perf_cat,
591 recipe = recipe,
592 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
593 dimensions = dimensions,
594 **kwargs
595 )
596
597def mac_perf_builder(
598 name,
599 perf_cat,
600 recipe = "standalone",
601 properties = {},
602 dimensions = {},
603 **kwargs):
604 return perf_builder(
605 name = name,
606 perf_cat = perf_cat,
607 recipe = recipe,
608 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
609 dimensions = dimensions,
610 **kwargs
611 )
612
613def win_perf_builder(
614 name,
615 perf_cat,
616 recipe = "standalone",
617 properties = {},
618 dimensions = {},
619 **kwargs):
620 return perf_builder(
621 name = name,
622 perf_cat = perf_cat,
623 recipe = recipe,
624 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
625 dimensions = dimensions,
626 **kwargs
627 )
628
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100629def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
630 if service_account == None:
631 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100632 add_milo(name, {"cron": True})
633 return webrtc_builder(
634 name = name,
635 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
636 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100637 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100638 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100639 **kwargs
640 )
641
642# Helpers:
643
644def merge_dicts(a, b):
645 """Return the result of merging two dicts.
646
647 If matching values are both dicts or both lists, they will be merged (non-recursively).
648
649 Args:
650 a: first dict.
651 b: second dict (takes priority).
652 Returns:
653 Merged dict.
654 """
655 a = dict(a)
656 for k, bv in b.items():
657 av = a.get(k)
658 if type(av) == "dict" and type(bv) == "dict":
659 a[k] = dict(av)
660 a[k].update(bv)
661 elif type(av) == "list" and type(bv) == "list":
662 a[k] = av + bv
663 else:
664 a[k] = bv
665 return a
666
667def normal_builder_factory(**common_kwargs):
668 def builder(*args, **kwargs):
669 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
670
671 def try_job(*args, **kwargs):
672 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
673
674 return builder, try_job
675
676# Mixins:
677
678linux_builder, linux_try_job = normal_builder_factory(
679 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100680 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100681)
682
683android_builder, android_try_job = normal_builder_factory(
684 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100685 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100686)
687
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200688def win_builder(*args, **kwargs):
689 return ci_builder(
690 *args,
691 **merge_dicts({
692 "dimensions": {"os": "Windows"},
693 "properties": GOMA_BACKEND_RBE_ATS_PROD,
694 }, kwargs)
695 )
696
697def win_try_job(*args, **kwargs):
698 return try_builder(
699 *args,
700 **merge_dicts({
701 "dimensions": {"os": "Windows"},
702 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
703 }, kwargs)
704 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100705
706mac_builder, mac_try_job = normal_builder_factory(
707 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100708 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100709)
710
711ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200712 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100713 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100714 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
715 caches = [swarming.cache("osx_sdk")],
716)
717
718# Some iOS builders don't use goma because they build using
719# `use_xcode_clang=true` which is not supported by goma.
720# https://ci.chromium.org/p/webrtc/builders/ci/iOS%20API%20Framework%20Builder
721# https://ci.chromium.org/p/webrtc/builders/try/ios_api_framework
722ios_builder_no_goma, ios_try_job_no_goma = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200723 dimensions = {"os": "Mac-10.15"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100724 recipe = "ios",
Artem Titov1d47d312020-11-03 14:45:52 +0100725 properties = {"$depot_tools/osx_sdk": {"sdk_version": "12a7209"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100726 caches = [swarming.cache("osx_sdk")],
727)
728
729# Actual builder configuration:
730
731android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
732android_try_job("android_compile_arm_dbg", cq = None)
733android_try_job("android_arm_dbg")
734android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
735android_try_job("android_arm_rel")
736android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
737android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200738android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100739android_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 +0100740android_try_job("android_compile_arm64_dbg", cq = None)
741android_try_job("android_arm64_dbg", cq = None)
742android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
743android_try_job("android_arm64_rel")
744android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100745android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
746android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100747android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100748android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
749android_try_job("android_compile_x64_dbg")
750android_try_job("android_compile_x64_rel", cq = None)
751android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
752android_try_job("android_compile_x86_dbg")
753android_builder("Android32 Builder x86", "Android|x86|rel")
754android_try_job("android_compile_x86_rel")
755android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
756android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100757android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100758
759ios_builder("iOS32 Debug", "iOS|arm|dbg")
760ios_try_job("ios_compile_arm_dbg")
761ios_builder("iOS32 Release", "iOS|arm|rel")
762ios_try_job("ios_compile_arm_rel")
763ios_builder("iOS64 Debug", "iOS|arm64|dbg")
764ios_try_job("ios_compile_arm64_dbg")
765ios_builder("iOS64 Release", "iOS|arm64|rel")
766ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100767ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Mirko Bonadeif1e0c0b2021-01-12 13:05:52 +0100768ios_try_job("ios_sim_x64_dbg_ios14", cq = None)
Artem Titov1d47d312020-11-03 14:45:52 +0100769ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Artem Titove973dd62020-11-03 18:05:21 +0100770ios_try_job("ios_sim_x64_dbg_ios13", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100771ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin34ac6592021-02-04 13:03:49 +0000772
773# TODO(crbug.com/1174112): return ios_sim_x64_dbg_ios12 to cq.
774ios_try_job("ios_sim_x64_dbg_ios12", cq = None)
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100775ios_builder_no_goma("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200776ios_try_job_no_goma("ios_api_framework", recipe = "ios_api_framework", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100777
778linux_builder("Linux32 Debug", "Linux|x86|dbg")
779linux_try_job("linux_x86_dbg")
780linux_builder("Linux32 Release", "Linux|x86|rel")
781linux_try_job("linux_x86_rel")
782linux_builder("Linux64 Debug", "Linux|x64|dbg")
783linux_try_job("linux_dbg", cq = None)
784linux_try_job("linux_compile_dbg")
785linux_builder("Linux64 Release", "Linux|x64|rel")
786linux_try_job("linux_rel")
787linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
788linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100789linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
790linux_perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100791linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
792linux_try_job("linux_compile_arm_dbg")
793linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
794linux_try_job("linux_compile_arm_rel")
795linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
796linux_try_job("linux_compile_arm64_dbg")
797linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
798linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100799linux_builder("Linux Asan", "Linux|x64|asan")
800linux_try_job("linux_asan")
801linux_builder("Linux MSan", "Linux|x64|msan")
802linux_try_job("linux_msan")
803linux_builder("Linux Tsan v2", "Linux|x64|tsan")
804linux_try_job("linux_tsan2")
805linux_builder("Linux UBSan", "Linux|x64|ubsan")
806linux_try_job("linux_ubsan")
807linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
808linux_try_job("linux_ubsan_vptr")
809linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
810linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
811linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
812linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100813linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100814linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100815
816mac_builder("Mac64 Debug", "Mac|x64|dbg")
817mac_try_job("mac_dbg", cq = None)
818mac_try_job("mac_compile_dbg")
819mac_builder("Mac64 Release", "Mac|x64|rel")
Andrey Logvina9501222021-04-27 18:08:39 +0000820mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100821mac_try_job("mac_compile_rel", cq = None)
822mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100823mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100824mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000825mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100826mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100827
828win_builder("Win32 Debug", "Win MSVC|x86|dbg")
829win_try_job("win_x86_msvc_dbg")
830win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000831win_builder("Win32 Release", "Win MSVC|x86|rel")
832win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100833win_try_job("win_compile_x86_msvc_rel", cq = None)
834win_builder("Win64 Debug", "Win MSVC|x64|dbg")
835win_try_job("win_x64_msvc_dbg")
836win_try_job("win_compile_x64_msvc_dbg", cq = None)
837win_builder("Win64 Release", "Win MSVC|x64|rel")
838win_try_job("win_x64_msvc_rel")
839win_try_job("win_compile_x64_msvc_rel", cq = None)
840win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
841win_try_job("win_x86_clang_dbg", cq = None)
842win_try_job("win_compile_x86_clang_dbg")
843win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
844win_try_job("win_x86_clang_rel")
845win_try_job("win_compile_x86_clang_rel", cq = None)
846win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100847win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100848win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
849win_try_job("win_x64_clang_dbg", cq = None)
850win_try_job("win_x64_clang_dbg_win8", cq = None)
851win_try_job("win_x64_clang_dbg_win10", cq = None)
852win_try_job("win_compile_x64_clang_dbg")
853win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
854win_try_job("win_x64_clang_rel", cq = None)
855win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200856win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100857win_try_job("win_asan")
858win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
859win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
860win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
861win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200862win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
863win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100864
865linux_try_job(
866 "presubmit",
867 recipe = "run_presubmit",
868 properties = {"repo_name": "webrtc", "runhooks": True},
869 priority = 28,
870 cq = {"disable_reuse": True},
871)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100872
873cron_builder(
874 "Auto-roll - WebRTC DEPS",
875 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200876 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100877)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200878
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100879cron_builder(
880 "WebRTC version update",
881 recipe = "update_webrtc_binary_version",
882 schedule = "0 4 * * *", # Every day at 4am.
883 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
884)
885
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100886skipped_lkgr_bots = [
887 "iOS64 Sim Debug (iOS 14.0)",
888 "iOS64 Sim Debug (iOS 13)",
889 "iOS64 Sim Debug (iOS 12)",
890]
891
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200892lkgr_config = {
893 "project": "webrtc",
894 "source_url": WEBRTC_GIT,
895 "status_url": "https://webrtc-status.appspot.com",
896 "allowed_lag": 300, # hours
897 "allowed_gap": 12, # commits behind
Mirko Bonadei450e9b72020-07-10 19:19:22 +0000898 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200899 "buckets": {
900 "webrtc/ci": {
901 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100902 "builders": [
903 b
904 for b in sorted(lkgr_builders)
905 if b not in skipped_lkgr_bots
906 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200907 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200908 "chromium/webrtc.fyi": {
909 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200910 "builders": [
911 "WebRTC Chromium FYI Android Builder (dbg)",
912 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
913 "WebRTC Chromium FYI Android Builder",
Mirko Bonadei04fe32f2020-05-01 00:45:58 +0200914 "WebRTC Chromium FYI Android Tests (dbg) (L Nexus5)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200915 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
916 "WebRTC Chromium FYI Linux Builder (dbg)",
917 "WebRTC Chromium FYI Linux Builder",
918 "WebRTC Chromium FYI Linux Tester",
919 "WebRTC Chromium FYI Mac Builder (dbg)",
920 "WebRTC Chromium FYI Mac Builder",
921 "WebRTC Chromium FYI Mac Tester",
922 "WebRTC Chromium FYI Win Builder (dbg)",
923 "WebRTC Chromium FYI Win Builder",
924 "WebRTC Chromium FYI Win10 Tester",
Mirko Bonadeif1ef9292021-03-25 18:07:48 +0100925 # TODO(bugs.webrtc.org/12616): Re-enable when the gclient
926 # runhooks step is fixed or skipped.
927 # "WebRTC Chromium FYI Win7 Tester",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200928 "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100929 "WebRTC Chromium FYI ios-device",
930 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200931 ],
932 },
933 },
934}
935
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100936cron_builder(
937 "WebRTC lkgr finder",
938 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200939 properties = {
940 "project": "webrtc",
941 "repo": WEBRTC_GIT,
942 "ref": "refs/heads/lkgr",
943 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
944 "config": lkgr_config,
945 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100946 schedule = "*/10 * * * *", # Every 10 minutes.
947)