blob: 8ccb5e205d5f5c10bcae0f7593f478d509ea8933 [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
Christoffer Janssona814c562021-09-09 13:44:54 +02007# https://chromium.googlesource.com/infra/luci/luci-go/+/main/lucicfg/doc/
Oleh Prypin1a0593f2019-03-11 09:43:28 +01008
Jeremy Leconteea2016b2020-07-01 09:47:22 +02009"""LUCI project configuration for WebRTC CQ and CI."""
10
Vadim Shtayurac3b27562021-10-25 17:05:37 -070011lucicfg.check_version("1.29.1")
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"
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +020015WEBRTC_TROOPER_EMAIL = "webrtc-troopers-robots@google.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +010016
Mirko Bonadei32ca4862020-03-11 10:39:45 +010017GOMA_BACKEND_WEBRTC_RBE_PROD = {
Mirko Bonadei1e905342020-03-04 09:39:42 +010018 "$build/goma": {
19 "server_host": "goma.chromium.org",
Jeremy Leconteea2016b2020-07-01 09:47:22 +020020 "use_luci_auth": True,
21 },
Mirko Bonadei1e905342020-03-04 09:39:42 +010022}
23
Mirko Bonadei84360ca2020-03-12 08:35:48 +010024GOMA_BACKEND_WEBRTC_IOS_RBE_PROD = {
25 "$build/goma": {
26 "server_host": "goma.chromium.org",
Jeremy Leconteea2016b2020-07-01 09:47:22 +020027 "use_luci_auth": True,
Mirko Bonadei84360ca2020-03-12 08:35:48 +010028 },
Artem Titov1d47d312020-11-03 14:45:52 +010029 "$depot_tools/osx_sdk": {"sdk_version": "12a7209"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +010030}
31
Patrik Höglund3916a972019-12-04 13:19:38 +010032GOMA_BACKEND_RBE_ATS_PROD = {
33 "$build/goma": {
34 "server_host": "goma.chromium.org",
Mirko Bonadei2688eca2020-03-25 09:15:54 +010035 "use_luci_auth": True,
Jeremy Leconteea2016b2020-07-01 09:47:22 +020036 "enable_ats": True,
37 },
Patrik Höglund3916a972019-12-04 13:19:38 +010038}
39
Mirko Bonadei5aafd472021-04-21 10:42:00 +020040# Disable ATS on CQ/try.
41GOMA_BACKEND_RBE_NO_ATS_PROD = {
42 "$build/goma": {
43 "server_host": "goma.chromium.org",
44 "use_luci_auth": True,
45 "enable_ats": False,
46 },
47}
48
Artem Titov70d45af2021-10-11 13:25:18 +020049# Add names of builders to remove from LKGR finder to this list. This is
50# useful when a failure can be safely ignored while fixing it without
51# blocking the LKGR finder on it.
52skipped_lkgr_bots = [
Artem Titov70d45af2021-10-11 13:25:18 +020053]
54
Oleh Prypin1a0593f2019-03-11 09:43:28 +010055# Top-level configs:
56
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020057# Enable LUCI Realms support.
58lucicfg.enable_experiment("crbug.com/1085650")
59
Andrii Shyshkalov32515d42021-04-29 14:39:42 +020060# Launch all builds in "realms-aware mode", crbug.com/1177975.
61luci.builder.defaults.experiments.set({"luci.use_realms": 100})
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020062
Oleh Prypin1a0593f2019-03-11 09:43:28 +010063lucicfg.config(
64 config_dir = ".",
65 tracked_files = [
66 "commit-queue.cfg",
67 "cr-buildbucket.cfg",
68 "luci-logdog.cfg",
69 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010070 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020071 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010072 "luci-scheduler.cfg",
73 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020074 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010075 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020076 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010077)
78
79luci.project(
80 name = "webrtc",
81 buildbucket = "cr-buildbucket.appspot.com",
82 logdog = "luci-logdog.appspot.com",
83 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010084 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010085 scheduler = "luci-scheduler.appspot.com",
86 swarming = "chromium-swarm.appspot.com",
87 acls = [
88 acl.entry(
89 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
90 groups = ["all"],
91 ),
92 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
93 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
94 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020095 bindings = [
96 luci.binding(
97 roles = "role/swarming.poolOwner",
98 groups = "project-webrtc-admins",
99 ),
100 luci.binding(
101 roles = "role/swarming.poolViewer",
102 groups = "all",
103 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +0200104 # Allow any WebRTC build to trigger a test ran under chromium-tester@
105 # task service account.
106 luci.binding(
107 roles = "role/swarming.taskServiceAccount",
108 users = [
109 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
110 ],
111 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200112 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100113)
114
115luci.logdog(
116 gs_bucket = "chromium-luci-logdog",
117)
118
119luci.milo(
120 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
121)
122
Owen Rodleya55c38e2020-06-15 11:16:10 +1000123luci.notify(tree_closing_enabled = True)
124
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100125luci.cq(
126 status_host = "chromium-cq-status.appspot.com",
127 submit_max_burst = 1,
128 submit_burst_delay = 1 * time.minute,
129)
130
131luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200132 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100133 bucket = "ci",
134 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200135 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100136)
137
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200138# Swarming permissions:
139
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200140luci.realm(name = "pools/cron", bindings = [
141 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
142 luci.binding(
143 roles = "role/swarming.poolUser",
144 projects = "libyuv",
145 ),
146])
147
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200148luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200149luci.realm(name = "pools/ci-tests", bindings = [
150 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
151 luci.binding(
152 roles = "role/swarming.poolUser",
153 groups = "project-webrtc-ci-task-accounts",
154 ),
155 # Allow tasks here to use .ci task service accounts.
156 luci.binding(
157 roles = "role/swarming.taskServiceAccount",
158 groups = "project-webrtc-ci-task-accounts",
159 ),
160])
161
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200162luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200163luci.realm(name = "pools/try-tests", bindings = [
164 # Allow task service accounts of .try pool/bucket to trigger tasks here.
165 luci.binding(
166 roles = "role/swarming.poolUser",
167 groups = "project-webrtc-try-task-accounts",
168 ),
169 # Allow tasks here to use .try task service accounts.
170 luci.binding(
171 roles = "role/swarming.taskServiceAccount",
172 groups = "project-webrtc-try-task-accounts",
173 ),
174])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200175
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200176# Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
177luci.realm(name = "pools/perf", bindings = [
178 luci.binding(
179 roles = "role/swarming.poolUser",
180 groups = "project-webrtc-led-users",
181 ),
182])
183luci.binding(
184 realm = "perf",
185 roles = "role/swarming.taskTriggerer",
186 groups = "project-webrtc-led-users",
187)
188
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200189# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
190luci.binding(
191 realm = "@root",
192 roles = "role/swarming.poolUser",
193 groups = "project-webrtc-admins",
194)
195luci.binding(
196 realm = "@root",
197 roles = "role/swarming.taskTriggerer",
198 groups = "project-webrtc-admins",
199)
200
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200201# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200202luci.binding(
203 realm = "pools/try",
204 roles = "role/swarming.poolUser",
205 groups = "project-webrtc-led-users",
206)
207luci.binding(
208 realm = "try",
209 roles = "role/swarming.taskTriggerer",
210 groups = "project-webrtc-led-users",
211)
212
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100213# Bucket definitions:
214
215luci.bucket(
216 name = "try",
217 acls = [
218 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
219 "service-account-cq",
220 "project-webrtc-tryjob-access",
221 ]),
222 ],
223)
224
225luci.bucket(
226 name = "ci",
227 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200228 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
229 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100230 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200231 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
232 # Allow Pinpoint to trigger builds for bisection
233 "service-account-chromeperf",
234 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100235 ],
236)
237
238luci.bucket(
239 name = "perf",
240 acls = [
241 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100242 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
243 ]),
244 ],
245)
246
247luci.bucket(
248 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100249)
250
251# Commit queue definitions:
252
253luci.cq_group(
254 name = "cq",
255 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200256 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100257 acls = [
258 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
259 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
260 ],
261 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200262 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100263)
264
265luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100266 name = "cq_branch",
267 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
268 acls = [
269 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
270 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
271 ],
272 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200273 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100274)
275
276luci.cq_group(
277 name = "cq_infra",
278 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100279 acls = [
280 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
281 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
282 ],
283 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200284 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100285)
286
287luci.cq_tryjob_verifier(
288 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100289 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100290)
291
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200292luci.cq_tryjob_verifier(
293 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
294 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
295 cq_group = "cq",
296)
297
Oleh Prypin71d17422019-03-28 08:43:16 +0100298# Notifier definitions:
299
300luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200301 name = "post_submit_failure_notifier",
302 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200303 notify_emails = [WEBRTC_TROOPER_EMAIL],
Christoffer Jansson16635012021-10-25 16:32:38 +0200304 notify_blamelist = True,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200305 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200306 name = "build_failure",
307 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200308 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100309)
310
311luci.notifier(
312 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200313 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200314 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200315 template = luci.notifier_template(
316 name = "cron",
317 body = io.read_file("luci-notify/email-templates/cron.template"),
318 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100319)
320
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200321luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200322 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200323 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200324 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200325 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200326 name = "infra_failure",
327 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200328 ),
329)
330
Owen Rodley6b721ba2020-05-26 10:04:20 +1000331# Tree closer definitions:
332
333luci.tree_closer(
334 name = "webrtc_tree_closer",
335 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000336 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
337 # that LUCI-Notify would take the exact same actions. Once we've switched
338 # over, this should be updated - several of these steps don't exist in
339 # WebRTC recipes.
340 failed_step_regexp = [
341 "bot_update",
342 "compile",
343 "gclient runhooks",
344 "runhooks",
345 "update",
346 "extract build",
347 "cleanup_temp",
348 "taskkill",
349 "compile",
350 "gn",
351 ],
352 failed_step_regexp_exclude = ".*\\(experimental\\).*",
353)
354
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100355# Recipe definitions:
356
357def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
358 return luci.recipe(
359 name = recipe.split("/")[-1],
360 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200361 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100362 recipe = recipe,
363 )
364
365recipe("chromium_trybot")
366recipe("run_presubmit")
367recipe("webrtc/auto_roll_webrtc_deps")
368recipe("webrtc/ios")
369recipe("webrtc/ios_api_framework")
370recipe("webrtc/libfuzzer")
371recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100372recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100373recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800374recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100375
376# Console definitions:
377
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700378luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
379luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100380luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100381luci.list_view(name = "try", title = "Tryserver")
382
383def add_milo(builder, views):
384 """Add Milo console entries for the builder.
385
386 Args:
387 builder: builder name (str).
388 views: dict where keys are names of consoles and values are either a
389 category for the console (str, pipe-separated) or True, which means
390 adding to a list view rather than a console.
391 """
392 for view_name, category in views.items():
393 if category == None:
394 continue
395 elif type(category) == "string":
396 category, _, short_name = category.rpartition("|")
397 luci.console_view_entry(
398 console_view = view_name,
399 builder = builder,
400 category = category or None,
401 short_name = short_name or None,
402 )
403 elif category == True:
404 luci.list_view_entry(
405 list_view = view_name,
406 builder = builder,
407 )
408 else:
409 fail("Unexpected value for category: %r" % category)
410
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200411lkgr_builders = {}
412
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100413# Builder-defining functions:
414
Artem Titarenkof6588b72019-11-14 14:28:11 +0100415def webrtc_builder(
416 name,
417 recipe = "standalone",
418 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200419 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100420 priority = 30,
421 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200422 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100423 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200424 """WebRTC specific wrapper around luci.builder.
425
426 Args:
427 name: builder name (str).
428 recipe: string with the name of the recipe to run.
429 dimensions: dict of Swarming dimensions (strings) to search machines by.
430 properties: dict of properties to pass to the recipe (on top of the default ones).
431 priority: int [1-255] or None, indicating swarming task priority, lower is
432 more important. If None, defer the decision to Buildbucket service.
433 execution_timeout: int or None, how long to wait for a running build to finish before
434 forcefully aborting it and marking the build as timed out. If None,
435 defer the decision to Buildbucket service.
436 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
437 decition to the goma module.
438 **kwargs: Pass on to webrtc_builder / luci.builder.
439 Returns:
440 A luci.builder.
441 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100442 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
443
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200444 if goma_jobs != None:
445 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
446 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900447 properties = merge_dicts(properties, {
448 "$recipe_engine/isolated": {
449 "server": "https://isolateserver.appspot.com",
450 },
451 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100452 return luci.builder(
453 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200454 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100455 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200456 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100457 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100458 priority = priority,
459 build_numbers = True,
460 swarming_tags = ["vpython:native-python-wrapper"],
Jeremy Lecontef2312112021-11-12 11:55:27 +0100461 resultdb_settings = resultdb.settings(enable = True),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100462 **kwargs
463 )
464
465def ci_builder(
466 name,
467 ci_cat,
468 perf_cat = None,
469 fyi_cat = None,
470 properties = {},
471 dimensions = {},
472 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100473 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100474 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200475 """Add a post-submit builder.
476
477 Args:
478 name: builder name (str).
479 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
480 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
481 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
482 properties: dict of properties to pass to the recipe (on top of the default ones).
483 dimensions: dict of Swarming dimensions (strings) to search machines by.
484 prioritized: True to make this builder have a higher priority and never batch builds.
485 enabled: False to exclude this builder from consoles and failure notifications.
486 **kwargs: Pass on to webrtc_builder / luci.builder.
487 Returns:
488 A luci.builder.
489
490 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
491 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100492 if prioritized:
493 kwargs["triggering_policy"] = scheduler.greedy_batching(
494 max_batch_size = 1,
495 max_concurrent_invocations = 3,
496 )
497 kwargs["priority"] = 29
498
Oleh Prypinf5432c52019-03-19 15:10:37 +0100499 if enabled:
500 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200501 if ci_cat:
502 lkgr_builders[name] = True
Artem Titov70d45af2021-10-11 13:25:18 +0200503 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None
504 if notifies and name not in skipped_lkgr_bots:
505 notifies.append("webrtc_tree_closer")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100506 return webrtc_builder(
507 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700508 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100509 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
510 bucket = "ci",
511 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200512 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100513 repo = WEBRTC_GIT,
Artem Titov70d45af2021-10-11 13:25:18 +0200514 notifies = notifies,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100515 **kwargs
516 )
517
518def try_builder(
519 name,
520 try_cat = True,
521 fyi_cat = None,
522 properties = {},
523 dimensions = {},
524 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100525 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100526 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200527 """Add a pre-submit builder.
528
529 Args:
530 name: builder name (str).
531 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
532 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
533 properties: dict of properties to pass to the recipe (on top of the default ones).
534 dimensions: dict of Swarming dimensions (strings) to search machines by.
535 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 +0100536 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200537 **kwargs: Pass on to webrtc_builder / luci.builder.
538 Returns:
539 A luci.builder.
540 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100541 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
542 if cq != None:
543 luci.cq_tryjob_verifier(
544 builder = name,
545 cq_group = "cq",
546 **cq
547 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100548 if branch_cq:
549 luci.cq_tryjob_verifier(
550 builder = name,
551 cq_group = "cq_branch",
552 **cq
553 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100554
555 return webrtc_builder(
556 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700557 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100558 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
559 bucket = "try",
560 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200561 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100562 **kwargs
563 )
564
565def perf_builder(
566 name,
567 perf_cat,
568 recipe = "standalone",
569 properties = {},
570 dimensions = {},
571 **kwargs):
572 add_milo(name, {"perf": perf_cat})
573 return webrtc_builder(
574 name = name,
575 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700576 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100577 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
578 bucket = "perf",
579 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
580 # log_base of 1.7 means:
581 # when there are P pending builds, LUCI will batch the first B builds.
582 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
583 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200584 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Christoffer Jansson16635012021-10-25 16:32:38 +0200585 repo = WEBRTC_GIT,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100586 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200587 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100588 **kwargs
589 )
590
Mirko Bonadei12643772020-03-27 13:16:35 +0100591def android_perf_builder(
592 name,
593 perf_cat,
594 recipe = "standalone",
595 properties = {},
596 dimensions = {},
597 **kwargs):
598 return perf_builder(
599 name = name,
600 perf_cat = perf_cat,
601 recipe = recipe,
602 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
603 dimensions = dimensions,
604 **kwargs
605 )
606
607def linux_perf_builder(
608 name,
609 perf_cat,
610 recipe = "standalone",
611 properties = {},
612 dimensions = {},
613 **kwargs):
614 return perf_builder(
615 name = name,
616 perf_cat = perf_cat,
617 recipe = recipe,
618 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
619 dimensions = dimensions,
620 **kwargs
621 )
622
623def mac_perf_builder(
624 name,
625 perf_cat,
626 recipe = "standalone",
627 properties = {},
628 dimensions = {},
629 **kwargs):
630 return perf_builder(
631 name = name,
632 perf_cat = perf_cat,
633 recipe = recipe,
634 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
635 dimensions = dimensions,
636 **kwargs
637 )
638
639def win_perf_builder(
640 name,
641 perf_cat,
642 recipe = "standalone",
643 properties = {},
644 dimensions = {},
645 **kwargs):
646 return perf_builder(
647 name = name,
648 perf_cat = perf_cat,
649 recipe = recipe,
650 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
651 dimensions = dimensions,
652 **kwargs
653 )
654
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100655def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
656 if service_account == None:
657 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100658 add_milo(name, {"cron": True})
659 return webrtc_builder(
660 name = name,
661 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
662 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100663 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100664 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100665 **kwargs
666 )
667
668# Helpers:
669
670def merge_dicts(a, b):
671 """Return the result of merging two dicts.
672
673 If matching values are both dicts or both lists, they will be merged (non-recursively).
674
675 Args:
676 a: first dict.
677 b: second dict (takes priority).
678 Returns:
679 Merged dict.
680 """
681 a = dict(a)
682 for k, bv in b.items():
683 av = a.get(k)
684 if type(av) == "dict" and type(bv) == "dict":
685 a[k] = dict(av)
686 a[k].update(bv)
687 elif type(av) == "list" and type(bv) == "list":
688 a[k] = av + bv
689 else:
690 a[k] = bv
691 return a
692
693def normal_builder_factory(**common_kwargs):
694 def builder(*args, **kwargs):
695 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
696
697 def try_job(*args, **kwargs):
698 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
699
700 return builder, try_job
701
702# Mixins:
703
704linux_builder, linux_try_job = normal_builder_factory(
705 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100706 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100707)
708
709android_builder, android_try_job = normal_builder_factory(
710 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100711 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100712)
713
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200714def win_builder(*args, **kwargs):
715 return ci_builder(
716 *args,
717 **merge_dicts({
718 "dimensions": {"os": "Windows"},
719 "properties": GOMA_BACKEND_RBE_ATS_PROD,
720 }, kwargs)
721 )
722
723def win_try_job(*args, **kwargs):
724 return try_builder(
725 *args,
726 **merge_dicts({
727 "dimensions": {"os": "Windows"},
728 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
729 }, kwargs)
730 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100731
732mac_builder, mac_try_job = normal_builder_factory(
733 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100734 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100735)
736
737ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200738 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100739 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100740 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
741 caches = [swarming.cache("osx_sdk")],
742)
743
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200744ios_builder_macos11, ios_try_job_macos11 = normal_builder_factory(
Mirko Bonadeie680bce2021-10-03 12:05:13 +0200745 dimensions = {"os": "Mac-11"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100746 recipe = "ios",
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200747 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100748 caches = [swarming.cache("osx_sdk")],
749)
750
751# Actual builder configuration:
752
753android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
754android_try_job("android_compile_arm_dbg", cq = None)
755android_try_job("android_arm_dbg")
756android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000757android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100758android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
759android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200760android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100761android_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 +0100762android_try_job("android_compile_arm64_dbg", cq = None)
763android_try_job("android_arm64_dbg", cq = None)
764android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
765android_try_job("android_arm64_rel")
766android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100767android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
768android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100769android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100770android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
771android_try_job("android_compile_x64_dbg")
772android_try_job("android_compile_x64_rel", cq = None)
773android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
774android_try_job("android_compile_x86_dbg")
775android_builder("Android32 Builder x86", "Android|x86|rel")
776android_try_job("android_compile_x86_rel")
777android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
778android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100779android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100780
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100781ios_builder("iOS64 Debug", "iOS|arm64|dbg")
782ios_try_job("ios_compile_arm64_dbg")
783ios_builder("iOS64 Release", "iOS|arm64|rel")
784ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100785ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000786ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100787ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000788ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100789ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000790ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200791ios_builder_macos11("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
792ios_try_job_macos11("ios_api_framework", recipe = "ios_api_framework")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100793
794linux_builder("Linux32 Debug", "Linux|x86|dbg")
795linux_try_job("linux_x86_dbg")
796linux_builder("Linux32 Release", "Linux|x86|rel")
797linux_try_job("linux_x86_rel")
798linux_builder("Linux64 Debug", "Linux|x64|dbg")
799linux_try_job("linux_dbg", cq = None)
800linux_try_job("linux_compile_dbg")
801linux_builder("Linux64 Release", "Linux|x64|rel")
802linux_try_job("linux_rel")
803linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
804linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100805linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Christoffer Jansson627cb052021-06-29 12:34:58 +0200806linux_perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100807linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
808linux_try_job("linux_compile_arm_dbg")
809linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
810linux_try_job("linux_compile_arm_rel")
811linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
812linux_try_job("linux_compile_arm64_dbg")
813linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
814linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100815linux_builder("Linux Asan", "Linux|x64|asan")
816linux_try_job("linux_asan")
817linux_builder("Linux MSan", "Linux|x64|msan")
818linux_try_job("linux_msan")
819linux_builder("Linux Tsan v2", "Linux|x64|tsan")
820linux_try_job("linux_tsan2")
821linux_builder("Linux UBSan", "Linux|x64|ubsan")
822linux_try_job("linux_ubsan")
823linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
824linux_try_job("linux_ubsan_vptr")
825linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
826linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
827linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
828linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100829linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100830linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100831
832mac_builder("Mac64 Debug", "Mac|x64|dbg")
Mirko Bonadei36a79c52021-10-15 19:52:52 +0200833mac_try_job("mac_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100834mac_try_job("mac_compile_dbg")
835mac_builder("Mac64 Release", "Mac|x64|rel")
Mirko Bonadei624568e2021-10-15 15:31:57 +0200836mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100837mac_try_job("mac_compile_rel", cq = None)
838mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100839mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100840mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000841mac_try_job("mac_asan")
Mirko Bonadei2f407ea2021-08-31 07:27:22 +0000842mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Christoffer Janssonb21c9502021-06-09 16:15:39 +0200843mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", dimensions = {"cpu": "arm64-64-Apple_M1"})
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100844
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100845win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
846win_try_job("win_x86_clang_dbg", cq = None)
847win_try_job("win_compile_x86_clang_dbg")
848win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
849win_try_job("win_x86_clang_rel")
850win_try_job("win_compile_x86_clang_rel", cq = None)
851win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100852win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100853win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
854win_try_job("win_x64_clang_dbg", cq = None)
855win_try_job("win_x64_clang_dbg_win8", cq = None)
856win_try_job("win_x64_clang_dbg_win10", cq = None)
857win_try_job("win_compile_x64_clang_dbg")
858win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
859win_try_job("win_x64_clang_rel", cq = None)
860win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200861win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100862win_try_job("win_asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100863win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
864win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200865win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
866win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100867
868linux_try_job(
869 "presubmit",
870 recipe = "run_presubmit",
871 properties = {"repo_name": "webrtc", "runhooks": True},
872 priority = 28,
873 cq = {"disable_reuse": True},
874)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100875
876cron_builder(
877 "Auto-roll - WebRTC DEPS",
878 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200879 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100880)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200881
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100882cron_builder(
883 "WebRTC version update",
884 recipe = "update_webrtc_binary_version",
885 schedule = "0 4 * * *", # Every day at 4am.
886 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
887)
888
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200889lkgr_config = {
890 "project": "webrtc",
891 "source_url": WEBRTC_GIT,
892 "status_url": "https://webrtc-status.appspot.com",
Christoffer Jansson75938042021-10-21 16:56:34 +0200893 "allowed_lag": 150, # hours
894 "allowed_gap": 4, # commits behind
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200895 "error_recipients": WEBRTC_TROOPER_EMAIL,
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200896 "buckets": {
897 "webrtc/ci": {
898 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100899 "builders": [
900 b
901 for b in sorted(lkgr_builders)
902 if b not in skipped_lkgr_bots
903 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200904 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200905 "chromium/webrtc.fyi": {
906 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200907 "builders": [
908 "WebRTC Chromium FYI Android Builder (dbg)",
909 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
910 "WebRTC Chromium FYI Android Builder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200911 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
landrey3f323922021-10-21 07:30:03 +0000912 "WebRTC Chromium FYI Android Tests (dbg) (N Nexus5X)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200913 "WebRTC Chromium FYI Linux Builder (dbg)",
914 "WebRTC Chromium FYI Linux Builder",
915 "WebRTC Chromium FYI Linux Tester",
916 "WebRTC Chromium FYI Mac Builder (dbg)",
917 "WebRTC Chromium FYI Mac Builder",
918 "WebRTC Chromium FYI Mac Tester",
919 "WebRTC Chromium FYI Win Builder (dbg)",
Andrey Logvin7228ba12021-09-15 17:59:21 +0000920 "WebRTC Chromium FYI Win Builder",
Andrey Logvin7484d1b82021-09-15 17:32:39 +0000921 "WebRTC Chromium FYI Win10 Tester",
922 "WebRTC Chromium FYI Win7 Tester",
923 "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100924 "WebRTC Chromium FYI ios-device",
Björn Tereliusc20ed6b2021-06-21 14:31:35 +0200925 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200926 ],
927 },
928 },
929}
930
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100931cron_builder(
932 "WebRTC lkgr finder",
933 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200934 properties = {
935 "project": "webrtc",
936 "repo": WEBRTC_GIT,
937 "ref": "refs/heads/lkgr",
Christoffer Janssone9fcc7b2021-06-29 13:02:15 +0200938 "src_ref": "refs/heads/main",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200939 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
940 "config": lkgr_config,
941 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100942 schedule = "*/10 * * * *", # Every 10 minutes.
943)