blob: d37c3b680d1f61f43a7d5b683904267dad6d2019 [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
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"
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
Oleh Prypin1a0593f2019-03-11 09:43:28 +010049# Top-level configs:
50
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020051# Enable LUCI Realms support.
52lucicfg.enable_experiment("crbug.com/1085650")
53
Andrii Shyshkalov32515d42021-04-29 14:39:42 +020054# Launch all builds in "realms-aware mode", crbug.com/1177975.
55luci.builder.defaults.experiments.set({"luci.use_realms": 100})
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020056
Oleh Prypin1a0593f2019-03-11 09:43:28 +010057lucicfg.config(
58 config_dir = ".",
59 tracked_files = [
60 "commit-queue.cfg",
61 "cr-buildbucket.cfg",
62 "luci-logdog.cfg",
63 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010064 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020065 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010066 "luci-scheduler.cfg",
67 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020068 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010069 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020070 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010071)
72
73luci.project(
74 name = "webrtc",
75 buildbucket = "cr-buildbucket.appspot.com",
76 logdog = "luci-logdog.appspot.com",
77 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010078 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010079 scheduler = "luci-scheduler.appspot.com",
80 swarming = "chromium-swarm.appspot.com",
81 acls = [
82 acl.entry(
83 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
84 groups = ["all"],
85 ),
86 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
87 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
88 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020089 bindings = [
90 luci.binding(
91 roles = "role/swarming.poolOwner",
92 groups = "project-webrtc-admins",
93 ),
94 luci.binding(
95 roles = "role/swarming.poolViewer",
96 groups = "all",
97 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +020098 # Allow any WebRTC build to trigger a test ran under chromium-tester@
99 # task service account.
100 luci.binding(
101 roles = "role/swarming.taskServiceAccount",
102 users = [
103 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
104 ],
105 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200106 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100107)
108
109luci.logdog(
110 gs_bucket = "chromium-luci-logdog",
111)
112
113luci.milo(
114 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
115)
116
Owen Rodleya55c38e2020-06-15 11:16:10 +1000117luci.notify(tree_closing_enabled = True)
118
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100119luci.cq(
120 status_host = "chromium-cq-status.appspot.com",
121 submit_max_burst = 1,
122 submit_burst_delay = 1 * time.minute,
123)
124
125luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200126 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100127 bucket = "ci",
128 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200129 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100130)
131
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200132# Swarming permissions:
133
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200134luci.realm(name = "pools/cron", bindings = [
135 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
136 luci.binding(
137 roles = "role/swarming.poolUser",
138 projects = "libyuv",
139 ),
140])
141
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200142luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200143luci.realm(name = "pools/ci-tests", bindings = [
144 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
145 luci.binding(
146 roles = "role/swarming.poolUser",
147 groups = "project-webrtc-ci-task-accounts",
148 ),
149 # Allow tasks here to use .ci task service accounts.
150 luci.binding(
151 roles = "role/swarming.taskServiceAccount",
152 groups = "project-webrtc-ci-task-accounts",
153 ),
154])
155
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200156luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200157luci.realm(name = "pools/try-tests", bindings = [
158 # Allow task service accounts of .try pool/bucket to trigger tasks here.
159 luci.binding(
160 roles = "role/swarming.poolUser",
161 groups = "project-webrtc-try-task-accounts",
162 ),
163 # Allow tasks here to use .try task service accounts.
164 luci.binding(
165 roles = "role/swarming.taskServiceAccount",
166 groups = "project-webrtc-try-task-accounts",
167 ),
168])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200169
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200170# Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
171luci.realm(name = "pools/perf", bindings = [
172 luci.binding(
173 roles = "role/swarming.poolUser",
174 groups = "project-webrtc-led-users",
175 ),
176])
177luci.binding(
178 realm = "perf",
179 roles = "role/swarming.taskTriggerer",
180 groups = "project-webrtc-led-users",
181)
182
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200183# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
184luci.binding(
185 realm = "@root",
186 roles = "role/swarming.poolUser",
187 groups = "project-webrtc-admins",
188)
189luci.binding(
190 realm = "@root",
191 roles = "role/swarming.taskTriggerer",
192 groups = "project-webrtc-admins",
193)
194
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200195# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200196luci.binding(
197 realm = "pools/try",
198 roles = "role/swarming.poolUser",
199 groups = "project-webrtc-led-users",
200)
201luci.binding(
202 realm = "try",
203 roles = "role/swarming.taskTriggerer",
204 groups = "project-webrtc-led-users",
205)
206
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100207# Bucket definitions:
208
209luci.bucket(
210 name = "try",
211 acls = [
212 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
213 "service-account-cq",
214 "project-webrtc-tryjob-access",
215 ]),
216 ],
217)
218
219luci.bucket(
220 name = "ci",
221 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200222 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
223 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100224 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200225 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
226 # Allow Pinpoint to trigger builds for bisection
227 "service-account-chromeperf",
228 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100229 ],
230)
231
232luci.bucket(
233 name = "perf",
234 acls = [
235 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100236 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
237 ]),
238 ],
239)
240
241luci.bucket(
242 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100243)
244
245# Commit queue definitions:
246
247luci.cq_group(
248 name = "cq",
249 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200250 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100251 acls = [
252 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
253 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
254 ],
255 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200256 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100257)
258
259luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100260 name = "cq_branch",
261 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
262 acls = [
263 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
264 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
265 ],
266 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200267 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100268)
269
270luci.cq_group(
271 name = "cq_infra",
272 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100273 acls = [
274 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
275 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
276 ],
277 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200278 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100279)
280
281luci.cq_tryjob_verifier(
282 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100283 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100284)
285
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200286luci.cq_tryjob_verifier(
287 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
288 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
289 cq_group = "cq",
290)
291
Oleh Prypin71d17422019-03-28 08:43:16 +0100292# Notifier definitions:
293
294luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200295 name = "post_submit_failure_notifier",
296 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200297 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200298 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200299 name = "build_failure",
300 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200301 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100302)
303
304luci.notifier(
305 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200306 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200307 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200308 template = luci.notifier_template(
309 name = "cron",
310 body = io.read_file("luci-notify/email-templates/cron.template"),
311 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100312)
313
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200314luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200315 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200316 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200317 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200318 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200319 name = "infra_failure",
320 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200321 ),
322)
323
Owen Rodley6b721ba2020-05-26 10:04:20 +1000324# Tree closer definitions:
325
326luci.tree_closer(
327 name = "webrtc_tree_closer",
328 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000329 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
330 # that LUCI-Notify would take the exact same actions. Once we've switched
331 # over, this should be updated - several of these steps don't exist in
332 # WebRTC recipes.
333 failed_step_regexp = [
334 "bot_update",
335 "compile",
336 "gclient runhooks",
337 "runhooks",
338 "update",
339 "extract build",
340 "cleanup_temp",
341 "taskkill",
342 "compile",
343 "gn",
344 ],
345 failed_step_regexp_exclude = ".*\\(experimental\\).*",
346)
347
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100348# Recipe definitions:
349
350def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
351 return luci.recipe(
352 name = recipe.split("/")[-1],
353 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200354 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100355 recipe = recipe,
356 )
357
358recipe("chromium_trybot")
359recipe("run_presubmit")
360recipe("webrtc/auto_roll_webrtc_deps")
361recipe("webrtc/ios")
362recipe("webrtc/ios_api_framework")
363recipe("webrtc/libfuzzer")
364recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100365recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100366recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800367recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100368
369# Console definitions:
370
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700371luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
372luci.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 +0100373luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100374luci.list_view(name = "try", title = "Tryserver")
375
376def add_milo(builder, views):
377 """Add Milo console entries for the builder.
378
379 Args:
380 builder: builder name (str).
381 views: dict where keys are names of consoles and values are either a
382 category for the console (str, pipe-separated) or True, which means
383 adding to a list view rather than a console.
384 """
385 for view_name, category in views.items():
386 if category == None:
387 continue
388 elif type(category) == "string":
389 category, _, short_name = category.rpartition("|")
390 luci.console_view_entry(
391 console_view = view_name,
392 builder = builder,
393 category = category or None,
394 short_name = short_name or None,
395 )
396 elif category == True:
397 luci.list_view_entry(
398 list_view = view_name,
399 builder = builder,
400 )
401 else:
402 fail("Unexpected value for category: %r" % category)
403
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200404lkgr_builders = {}
405
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100406# Builder-defining functions:
407
Artem Titarenkof6588b72019-11-14 14:28:11 +0100408def webrtc_builder(
409 name,
410 recipe = "standalone",
411 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200412 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100413 priority = 30,
414 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200415 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100416 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200417 """WebRTC specific wrapper around luci.builder.
418
419 Args:
420 name: builder name (str).
421 recipe: string with the name of the recipe to run.
422 dimensions: dict of Swarming dimensions (strings) to search machines by.
423 properties: dict of properties to pass to the recipe (on top of the default ones).
424 priority: int [1-255] or None, indicating swarming task priority, lower is
425 more important. If None, defer the decision to Buildbucket service.
426 execution_timeout: int or None, how long to wait for a running build to finish before
427 forcefully aborting it and marking the build as timed out. If None,
428 defer the decision to Buildbucket service.
429 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
430 decition to the goma module.
431 **kwargs: Pass on to webrtc_builder / luci.builder.
432 Returns:
433 A luci.builder.
434 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100435 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
436
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200437 if goma_jobs != None:
438 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
439 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900440 properties = merge_dicts(properties, {
441 "$recipe_engine/isolated": {
442 "server": "https://isolateserver.appspot.com",
443 },
444 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100445 return luci.builder(
446 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200447 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100448 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200449 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100450 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100451 priority = priority,
452 build_numbers = True,
453 swarming_tags = ["vpython:native-python-wrapper"],
454 **kwargs
455 )
456
457def ci_builder(
458 name,
459 ci_cat,
460 perf_cat = None,
461 fyi_cat = None,
462 properties = {},
463 dimensions = {},
464 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100465 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100466 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200467 """Add a post-submit builder.
468
469 Args:
470 name: builder name (str).
471 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
472 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
473 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
474 properties: dict of properties to pass to the recipe (on top of the default ones).
475 dimensions: dict of Swarming dimensions (strings) to search machines by.
476 prioritized: True to make this builder have a higher priority and never batch builds.
477 enabled: False to exclude this builder from consoles and failure notifications.
478 **kwargs: Pass on to webrtc_builder / luci.builder.
479 Returns:
480 A luci.builder.
481
482 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
483 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100484 if prioritized:
485 kwargs["triggering_policy"] = scheduler.greedy_batching(
486 max_batch_size = 1,
487 max_concurrent_invocations = 3,
488 )
489 kwargs["priority"] = 29
490
Oleh Prypinf5432c52019-03-19 15:10:37 +0100491 if enabled:
492 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200493 if ci_cat:
494 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100495 return webrtc_builder(
496 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700497 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100498 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
499 bucket = "ci",
500 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200501 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100502 repo = WEBRTC_GIT,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200503 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 +0100504 **kwargs
505 )
506
507def try_builder(
508 name,
509 try_cat = True,
510 fyi_cat = None,
511 properties = {},
512 dimensions = {},
513 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100514 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100515 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200516 """Add a pre-submit builder.
517
518 Args:
519 name: builder name (str).
520 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
521 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
522 properties: dict of properties to pass to the recipe (on top of the default ones).
523 dimensions: dict of Swarming dimensions (strings) to search machines by.
524 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 +0100525 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200526 **kwargs: Pass on to webrtc_builder / luci.builder.
527 Returns:
528 A luci.builder.
529 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100530 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
531 if cq != None:
532 luci.cq_tryjob_verifier(
533 builder = name,
534 cq_group = "cq",
535 **cq
536 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100537 if branch_cq:
538 luci.cq_tryjob_verifier(
539 builder = name,
540 cq_group = "cq_branch",
541 **cq
542 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100543
544 return webrtc_builder(
545 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700546 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100547 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
548 bucket = "try",
549 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200550 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100551 **kwargs
552 )
553
554def perf_builder(
555 name,
556 perf_cat,
557 recipe = "standalone",
558 properties = {},
559 dimensions = {},
560 **kwargs):
561 add_milo(name, {"perf": perf_cat})
562 return webrtc_builder(
563 name = name,
564 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700565 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100566 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
567 bucket = "perf",
568 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
569 # log_base of 1.7 means:
570 # when there are P pending builds, LUCI will batch the first B builds.
571 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
572 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200573 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100574 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200575 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100576 **kwargs
577 )
578
Mirko Bonadei12643772020-03-27 13:16:35 +0100579def android_perf_builder(
580 name,
581 perf_cat,
582 recipe = "standalone",
583 properties = {},
584 dimensions = {},
585 **kwargs):
586 return perf_builder(
587 name = name,
588 perf_cat = perf_cat,
589 recipe = recipe,
590 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
591 dimensions = dimensions,
592 **kwargs
593 )
594
595def linux_perf_builder(
596 name,
597 perf_cat,
598 recipe = "standalone",
599 properties = {},
600 dimensions = {},
601 **kwargs):
602 return perf_builder(
603 name = name,
604 perf_cat = perf_cat,
605 recipe = recipe,
606 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
607 dimensions = dimensions,
608 **kwargs
609 )
610
611def mac_perf_builder(
612 name,
613 perf_cat,
614 recipe = "standalone",
615 properties = {},
616 dimensions = {},
617 **kwargs):
618 return perf_builder(
619 name = name,
620 perf_cat = perf_cat,
621 recipe = recipe,
622 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
623 dimensions = dimensions,
624 **kwargs
625 )
626
627def win_perf_builder(
628 name,
629 perf_cat,
630 recipe = "standalone",
631 properties = {},
632 dimensions = {},
633 **kwargs):
634 return perf_builder(
635 name = name,
636 perf_cat = perf_cat,
637 recipe = recipe,
638 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
639 dimensions = dimensions,
640 **kwargs
641 )
642
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100643def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
644 if service_account == None:
645 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100646 add_milo(name, {"cron": True})
647 return webrtc_builder(
648 name = name,
649 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
650 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100651 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100652 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100653 **kwargs
654 )
655
656# Helpers:
657
658def merge_dicts(a, b):
659 """Return the result of merging two dicts.
660
661 If matching values are both dicts or both lists, they will be merged (non-recursively).
662
663 Args:
664 a: first dict.
665 b: second dict (takes priority).
666 Returns:
667 Merged dict.
668 """
669 a = dict(a)
670 for k, bv in b.items():
671 av = a.get(k)
672 if type(av) == "dict" and type(bv) == "dict":
673 a[k] = dict(av)
674 a[k].update(bv)
675 elif type(av) == "list" and type(bv) == "list":
676 a[k] = av + bv
677 else:
678 a[k] = bv
679 return a
680
681def normal_builder_factory(**common_kwargs):
682 def builder(*args, **kwargs):
683 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
684
685 def try_job(*args, **kwargs):
686 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
687
688 return builder, try_job
689
690# Mixins:
691
692linux_builder, linux_try_job = normal_builder_factory(
693 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100694 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100695)
696
697android_builder, android_try_job = normal_builder_factory(
698 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100699 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100700)
701
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200702def win_builder(*args, **kwargs):
703 return ci_builder(
704 *args,
705 **merge_dicts({
706 "dimensions": {"os": "Windows"},
707 "properties": GOMA_BACKEND_RBE_ATS_PROD,
708 }, kwargs)
709 )
710
711def win_try_job(*args, **kwargs):
712 return try_builder(
713 *args,
714 **merge_dicts({
715 "dimensions": {"os": "Windows"},
716 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
717 }, kwargs)
718 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100719
720mac_builder, mac_try_job = normal_builder_factory(
721 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100722 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100723)
724
725ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200726 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100727 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100728 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
729 caches = [swarming.cache("osx_sdk")],
730)
731
732# Some iOS builders don't use goma because they build using
733# `use_xcode_clang=true` which is not supported by goma.
734# https://ci.chromium.org/p/webrtc/builders/ci/iOS%20API%20Framework%20Builder
735# https://ci.chromium.org/p/webrtc/builders/try/ios_api_framework
736ios_builder_no_goma, ios_try_job_no_goma = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200737 dimensions = {"os": "Mac-10.15"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100738 recipe = "ios",
Artem Titov1d47d312020-11-03 14:45:52 +0100739 properties = {"$depot_tools/osx_sdk": {"sdk_version": "12a7209"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100740 caches = [swarming.cache("osx_sdk")],
741)
742
743# Actual builder configuration:
744
745android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
746android_try_job("android_compile_arm_dbg", cq = None)
747android_try_job("android_arm_dbg")
748android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000749android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100750android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
751android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200752android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100753android_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 +0100754android_try_job("android_compile_arm64_dbg", cq = None)
755android_try_job("android_arm64_dbg", cq = None)
756android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
757android_try_job("android_arm64_rel")
758android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100759android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
760android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100761android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100762android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
763android_try_job("android_compile_x64_dbg")
764android_try_job("android_compile_x64_rel", cq = None)
765android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
766android_try_job("android_compile_x86_dbg")
767android_builder("Android32 Builder x86", "Android|x86|rel")
768android_try_job("android_compile_x86_rel")
769android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
770android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100771android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100772
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100773ios_builder("iOS64 Debug", "iOS|arm64|dbg")
774ios_try_job("ios_compile_arm64_dbg")
775ios_builder("iOS64 Release", "iOS|arm64|rel")
776ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100777ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000778ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100779ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000780ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100781ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000782ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100783ios_builder_no_goma("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200784ios_try_job_no_goma("ios_api_framework", recipe = "ios_api_framework", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100785
786linux_builder("Linux32 Debug", "Linux|x86|dbg")
787linux_try_job("linux_x86_dbg")
788linux_builder("Linux32 Release", "Linux|x86|rel")
789linux_try_job("linux_x86_rel")
790linux_builder("Linux64 Debug", "Linux|x64|dbg")
791linux_try_job("linux_dbg", cq = None)
792linux_try_job("linux_compile_dbg")
793linux_builder("Linux64 Release", "Linux|x64|rel")
794linux_try_job("linux_rel")
795linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
796linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100797linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Christoffer Jansson627cb052021-06-29 12:34:58 +0200798linux_perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100799linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
800linux_try_job("linux_compile_arm_dbg")
801linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
802linux_try_job("linux_compile_arm_rel")
803linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
804linux_try_job("linux_compile_arm64_dbg")
805linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
806linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100807linux_builder("Linux Asan", "Linux|x64|asan")
808linux_try_job("linux_asan")
809linux_builder("Linux MSan", "Linux|x64|msan")
810linux_try_job("linux_msan")
811linux_builder("Linux Tsan v2", "Linux|x64|tsan")
812linux_try_job("linux_tsan2")
813linux_builder("Linux UBSan", "Linux|x64|ubsan")
814linux_try_job("linux_ubsan")
815linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
816linux_try_job("linux_ubsan_vptr")
817linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
818linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
819linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
820linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100821linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100822linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100823
824mac_builder("Mac64 Debug", "Mac|x64|dbg")
825mac_try_job("mac_dbg", cq = None)
826mac_try_job("mac_compile_dbg")
827mac_builder("Mac64 Release", "Mac|x64|rel")
Andrey Logvina9501222021-04-27 18:08:39 +0000828mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100829mac_try_job("mac_compile_rel", cq = None)
830mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100831mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100832mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000833mac_try_job("mac_asan")
Mirko Bonadei2f407ea2021-08-31 07:27:22 +0000834mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Christoffer Janssonb21c9502021-06-09 16:15:39 +0200835mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", dimensions = {"cpu": "arm64-64-Apple_M1"})
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100836
837win_builder("Win32 Debug", "Win MSVC|x86|dbg")
838win_try_job("win_x86_msvc_dbg")
839win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000840win_builder("Win32 Release", "Win MSVC|x86|rel")
841win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100842win_try_job("win_compile_x86_msvc_rel", cq = None)
843win_builder("Win64 Debug", "Win MSVC|x64|dbg")
844win_try_job("win_x64_msvc_dbg")
845win_try_job("win_compile_x64_msvc_dbg", cq = None)
846win_builder("Win64 Release", "Win MSVC|x64|rel")
847win_try_job("win_x64_msvc_rel")
848win_try_job("win_compile_x64_msvc_rel", cq = None)
849win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
850win_try_job("win_x86_clang_dbg", cq = None)
851win_try_job("win_compile_x86_clang_dbg")
852win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
853win_try_job("win_x86_clang_rel")
854win_try_job("win_compile_x86_clang_rel", cq = None)
855win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100856win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100857win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
858win_try_job("win_x64_clang_dbg", cq = None)
859win_try_job("win_x64_clang_dbg_win8", cq = None)
860win_try_job("win_x64_clang_dbg_win10", cq = None)
861win_try_job("win_compile_x64_clang_dbg")
862win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
863win_try_job("win_x64_clang_rel", cq = None)
864win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200865win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100866win_try_job("win_asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100867win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
868win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200869win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
870win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100871
872linux_try_job(
873 "presubmit",
874 recipe = "run_presubmit",
875 properties = {"repo_name": "webrtc", "runhooks": True},
876 priority = 28,
877 cq = {"disable_reuse": True},
878)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100879
880cron_builder(
881 "Auto-roll - WebRTC DEPS",
882 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200883 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100884)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200885
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100886cron_builder(
887 "WebRTC version update",
888 recipe = "update_webrtc_binary_version",
889 schedule = "0 4 * * *", # Every day at 4am.
890 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
891)
892
Mirko Bonadeic8ce5ea2021-07-12 10:54:14 +0200893# Add names of builders to remove from LKGR finder to this list. This is
894# useful when a failure can be safely ignored while fixing it without
895# blocking the LKGR finder on it.
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100896skipped_lkgr_bots = [
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100897]
898
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200899lkgr_config = {
900 "project": "webrtc",
901 "source_url": WEBRTC_GIT,
902 "status_url": "https://webrtc-status.appspot.com",
903 "allowed_lag": 300, # hours
904 "allowed_gap": 12, # commits behind
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200905 "error_recipients": WEBRTC_TROOPER_EMAIL,
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200906 "buckets": {
907 "webrtc/ci": {
908 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100909 "builders": [
910 b
911 for b in sorted(lkgr_builders)
912 if b not in skipped_lkgr_bots
913 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200914 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200915 "chromium/webrtc.fyi": {
916 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200917 "builders": [
918 "WebRTC Chromium FYI Android Builder (dbg)",
919 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
920 "WebRTC Chromium FYI Android Builder",
Mirko Bonadei04fe32f2020-05-01 00:45:58 +0200921 "WebRTC Chromium FYI Android Tests (dbg) (L Nexus5)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200922 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
923 "WebRTC Chromium FYI Linux Builder (dbg)",
924 "WebRTC Chromium FYI Linux Builder",
925 "WebRTC Chromium FYI Linux Tester",
926 "WebRTC Chromium FYI Mac Builder (dbg)",
927 "WebRTC Chromium FYI Mac Builder",
928 "WebRTC Chromium FYI Mac Tester",
929 "WebRTC Chromium FYI Win Builder (dbg)",
landrey9ef28982021-09-14 08:36:21 +0000930 # TODO(b/199711408): restore after fixed.
931 # "WebRTC Chromium FYI Win Builder",
landreydc9fbb72021-09-14 10:46:54 +0000932 # "WebRTC Chromium FYI Win10 Tester",
933 # "WebRTC Chromium FYI Win7 Tester",
934 # "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100935 "WebRTC Chromium FYI ios-device",
Björn Tereliusc20ed6b2021-06-21 14:31:35 +0200936 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200937 ],
938 },
939 },
940}
941
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100942cron_builder(
943 "WebRTC lkgr finder",
944 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200945 properties = {
946 "project": "webrtc",
947 "repo": WEBRTC_GIT,
948 "ref": "refs/heads/lkgr",
Christoffer Janssone9fcc7b2021-06-29 13:02:15 +0200949 "src_ref": "refs/heads/main",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200950 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
951 "config": lkgr_config,
952 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100953 schedule = "*/10 * * * *", # Every 10 minutes.
954)