blob: 20ecb3a2b49f00195bdf9149777601d2151a3a1e [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
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 = [
53 # TODO(webrtc:13232): The following 4 bots are excluded because they
54 # use MSVC. Remove when the bug has been fixed.
55 "Win32 Debug",
56 "Win32 Release",
57 "Win64 Debug",
58 "Win64 Release",
59]
60
Oleh Prypin1a0593f2019-03-11 09:43:28 +010061# Top-level configs:
62
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020063# Enable LUCI Realms support.
64lucicfg.enable_experiment("crbug.com/1085650")
65
Andrii Shyshkalov32515d42021-04-29 14:39:42 +020066# Launch all builds in "realms-aware mode", crbug.com/1177975.
67luci.builder.defaults.experiments.set({"luci.use_realms": 100})
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020068
Oleh Prypin1a0593f2019-03-11 09:43:28 +010069lucicfg.config(
70 config_dir = ".",
71 tracked_files = [
72 "commit-queue.cfg",
73 "cr-buildbucket.cfg",
74 "luci-logdog.cfg",
75 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010076 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020077 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010078 "luci-scheduler.cfg",
79 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020080 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010081 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020082 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010083)
84
85luci.project(
86 name = "webrtc",
87 buildbucket = "cr-buildbucket.appspot.com",
88 logdog = "luci-logdog.appspot.com",
89 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010090 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010091 scheduler = "luci-scheduler.appspot.com",
92 swarming = "chromium-swarm.appspot.com",
93 acls = [
94 acl.entry(
95 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
96 groups = ["all"],
97 ),
98 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
99 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
100 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200101 bindings = [
102 luci.binding(
103 roles = "role/swarming.poolOwner",
104 groups = "project-webrtc-admins",
105 ),
106 luci.binding(
107 roles = "role/swarming.poolViewer",
108 groups = "all",
109 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +0200110 # Allow any WebRTC build to trigger a test ran under chromium-tester@
111 # task service account.
112 luci.binding(
113 roles = "role/swarming.taskServiceAccount",
114 users = [
115 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
116 ],
117 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200118 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100119)
120
121luci.logdog(
122 gs_bucket = "chromium-luci-logdog",
123)
124
125luci.milo(
126 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
127)
128
Owen Rodleya55c38e2020-06-15 11:16:10 +1000129luci.notify(tree_closing_enabled = True)
130
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100131luci.cq(
132 status_host = "chromium-cq-status.appspot.com",
133 submit_max_burst = 1,
134 submit_burst_delay = 1 * time.minute,
135)
136
137luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200138 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100139 bucket = "ci",
140 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200141 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100142)
143
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200144# Swarming permissions:
145
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200146luci.realm(name = "pools/cron", bindings = [
147 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
148 luci.binding(
149 roles = "role/swarming.poolUser",
150 projects = "libyuv",
151 ),
152])
153
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200154luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200155luci.realm(name = "pools/ci-tests", bindings = [
156 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
157 luci.binding(
158 roles = "role/swarming.poolUser",
159 groups = "project-webrtc-ci-task-accounts",
160 ),
161 # Allow tasks here to use .ci task service accounts.
162 luci.binding(
163 roles = "role/swarming.taskServiceAccount",
164 groups = "project-webrtc-ci-task-accounts",
165 ),
166])
167
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200168luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200169luci.realm(name = "pools/try-tests", bindings = [
170 # Allow task service accounts of .try pool/bucket to trigger tasks here.
171 luci.binding(
172 roles = "role/swarming.poolUser",
173 groups = "project-webrtc-try-task-accounts",
174 ),
175 # Allow tasks here to use .try task service accounts.
176 luci.binding(
177 roles = "role/swarming.taskServiceAccount",
178 groups = "project-webrtc-try-task-accounts",
179 ),
180])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200181
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200182# Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
183luci.realm(name = "pools/perf", bindings = [
184 luci.binding(
185 roles = "role/swarming.poolUser",
186 groups = "project-webrtc-led-users",
187 ),
188])
189luci.binding(
190 realm = "perf",
191 roles = "role/swarming.taskTriggerer",
192 groups = "project-webrtc-led-users",
193)
194
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200195# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
196luci.binding(
197 realm = "@root",
198 roles = "role/swarming.poolUser",
199 groups = "project-webrtc-admins",
200)
201luci.binding(
202 realm = "@root",
203 roles = "role/swarming.taskTriggerer",
204 groups = "project-webrtc-admins",
205)
206
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200207# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200208luci.binding(
209 realm = "pools/try",
210 roles = "role/swarming.poolUser",
211 groups = "project-webrtc-led-users",
212)
213luci.binding(
214 realm = "try",
215 roles = "role/swarming.taskTriggerer",
216 groups = "project-webrtc-led-users",
217)
218
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100219# Bucket definitions:
220
221luci.bucket(
222 name = "try",
223 acls = [
224 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
225 "service-account-cq",
226 "project-webrtc-tryjob-access",
227 ]),
228 ],
229)
230
231luci.bucket(
232 name = "ci",
233 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200234 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
235 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100236 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200237 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
238 # Allow Pinpoint to trigger builds for bisection
239 "service-account-chromeperf",
240 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100241 ],
242)
243
244luci.bucket(
245 name = "perf",
246 acls = [
247 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100248 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
249 ]),
250 ],
251)
252
253luci.bucket(
254 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100255)
256
257# Commit queue definitions:
258
259luci.cq_group(
260 name = "cq",
261 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200262 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100263 acls = [
264 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
265 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
266 ],
267 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200268 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100269)
270
271luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100272 name = "cq_branch",
273 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
274 acls = [
275 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
276 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
277 ],
278 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200279 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100280)
281
282luci.cq_group(
283 name = "cq_infra",
284 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100285 acls = [
286 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
287 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
288 ],
289 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200290 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100291)
292
293luci.cq_tryjob_verifier(
294 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100295 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100296)
297
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200298luci.cq_tryjob_verifier(
299 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
300 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
301 cq_group = "cq",
302)
303
Oleh Prypin71d17422019-03-28 08:43:16 +0100304# Notifier definitions:
305
306luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200307 name = "post_submit_failure_notifier",
308 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200309 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200310 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200311 name = "build_failure",
312 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200313 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100314)
315
316luci.notifier(
317 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200318 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200319 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200320 template = luci.notifier_template(
321 name = "cron",
322 body = io.read_file("luci-notify/email-templates/cron.template"),
323 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100324)
325
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200326luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200327 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200328 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200329 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200330 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200331 name = "infra_failure",
332 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200333 ),
334)
335
Owen Rodley6b721ba2020-05-26 10:04:20 +1000336# Tree closer definitions:
337
338luci.tree_closer(
339 name = "webrtc_tree_closer",
340 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000341 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
342 # that LUCI-Notify would take the exact same actions. Once we've switched
343 # over, this should be updated - several of these steps don't exist in
344 # WebRTC recipes.
345 failed_step_regexp = [
346 "bot_update",
347 "compile",
348 "gclient runhooks",
349 "runhooks",
350 "update",
351 "extract build",
352 "cleanup_temp",
353 "taskkill",
354 "compile",
355 "gn",
356 ],
357 failed_step_regexp_exclude = ".*\\(experimental\\).*",
358)
359
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100360# Recipe definitions:
361
362def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
363 return luci.recipe(
364 name = recipe.split("/")[-1],
365 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200366 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100367 recipe = recipe,
368 )
369
370recipe("chromium_trybot")
371recipe("run_presubmit")
372recipe("webrtc/auto_roll_webrtc_deps")
373recipe("webrtc/ios")
374recipe("webrtc/ios_api_framework")
375recipe("webrtc/libfuzzer")
376recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100377recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100378recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800379recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100380
381# Console definitions:
382
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700383luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
384luci.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 +0100385luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100386luci.list_view(name = "try", title = "Tryserver")
387
388def add_milo(builder, views):
389 """Add Milo console entries for the builder.
390
391 Args:
392 builder: builder name (str).
393 views: dict where keys are names of consoles and values are either a
394 category for the console (str, pipe-separated) or True, which means
395 adding to a list view rather than a console.
396 """
397 for view_name, category in views.items():
398 if category == None:
399 continue
400 elif type(category) == "string":
401 category, _, short_name = category.rpartition("|")
402 luci.console_view_entry(
403 console_view = view_name,
404 builder = builder,
405 category = category or None,
406 short_name = short_name or None,
407 )
408 elif category == True:
409 luci.list_view_entry(
410 list_view = view_name,
411 builder = builder,
412 )
413 else:
414 fail("Unexpected value for category: %r" % category)
415
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200416lkgr_builders = {}
417
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100418# Builder-defining functions:
419
Artem Titarenkof6588b72019-11-14 14:28:11 +0100420def webrtc_builder(
421 name,
422 recipe = "standalone",
423 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200424 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100425 priority = 30,
426 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200427 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100428 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200429 """WebRTC specific wrapper around luci.builder.
430
431 Args:
432 name: builder name (str).
433 recipe: string with the name of the recipe to run.
434 dimensions: dict of Swarming dimensions (strings) to search machines by.
435 properties: dict of properties to pass to the recipe (on top of the default ones).
436 priority: int [1-255] or None, indicating swarming task priority, lower is
437 more important. If None, defer the decision to Buildbucket service.
438 execution_timeout: int or None, how long to wait for a running build to finish before
439 forcefully aborting it and marking the build as timed out. If None,
440 defer the decision to Buildbucket service.
441 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
442 decition to the goma module.
443 **kwargs: Pass on to webrtc_builder / luci.builder.
444 Returns:
445 A luci.builder.
446 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100447 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
448
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200449 if goma_jobs != None:
450 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
451 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900452 properties = merge_dicts(properties, {
453 "$recipe_engine/isolated": {
454 "server": "https://isolateserver.appspot.com",
455 },
456 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100457 return luci.builder(
458 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200459 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100460 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200461 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100462 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100463 priority = priority,
464 build_numbers = True,
465 swarming_tags = ["vpython:native-python-wrapper"],
466 **kwargs
467 )
468
469def ci_builder(
470 name,
471 ci_cat,
472 perf_cat = None,
473 fyi_cat = None,
474 properties = {},
475 dimensions = {},
476 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100477 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100478 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200479 """Add a post-submit builder.
480
481 Args:
482 name: builder name (str).
483 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
484 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
485 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
486 properties: dict of properties to pass to the recipe (on top of the default ones).
487 dimensions: dict of Swarming dimensions (strings) to search machines by.
488 prioritized: True to make this builder have a higher priority and never batch builds.
489 enabled: False to exclude this builder from consoles and failure notifications.
490 **kwargs: Pass on to webrtc_builder / luci.builder.
491 Returns:
492 A luci.builder.
493
494 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
495 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100496 if prioritized:
497 kwargs["triggering_policy"] = scheduler.greedy_batching(
498 max_batch_size = 1,
499 max_concurrent_invocations = 3,
500 )
501 kwargs["priority"] = 29
502
Oleh Prypinf5432c52019-03-19 15:10:37 +0100503 if enabled:
504 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200505 if ci_cat:
506 lkgr_builders[name] = True
Artem Titov70d45af2021-10-11 13:25:18 +0200507 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None
508 if notifies and name not in skipped_lkgr_bots:
509 notifies.append("webrtc_tree_closer")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100510 return webrtc_builder(
511 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700512 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100513 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
514 bucket = "ci",
515 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200516 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100517 repo = WEBRTC_GIT,
Artem Titov70d45af2021-10-11 13:25:18 +0200518 notifies = notifies,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100519 **kwargs
520 )
521
522def try_builder(
523 name,
524 try_cat = True,
525 fyi_cat = None,
526 properties = {},
527 dimensions = {},
528 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100529 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100530 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200531 """Add a pre-submit builder.
532
533 Args:
534 name: builder name (str).
535 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
536 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
537 properties: dict of properties to pass to the recipe (on top of the default ones).
538 dimensions: dict of Swarming dimensions (strings) to search machines by.
539 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 +0100540 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200541 **kwargs: Pass on to webrtc_builder / luci.builder.
542 Returns:
543 A luci.builder.
544 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100545 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
546 if cq != None:
547 luci.cq_tryjob_verifier(
548 builder = name,
549 cq_group = "cq",
550 **cq
551 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100552 if branch_cq:
553 luci.cq_tryjob_verifier(
554 builder = name,
555 cq_group = "cq_branch",
556 **cq
557 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100558
559 return webrtc_builder(
560 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700561 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100562 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
563 bucket = "try",
564 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200565 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100566 **kwargs
567 )
568
569def perf_builder(
570 name,
571 perf_cat,
572 recipe = "standalone",
573 properties = {},
574 dimensions = {},
575 **kwargs):
576 add_milo(name, {"perf": perf_cat})
577 return webrtc_builder(
578 name = name,
579 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700580 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100581 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
582 bucket = "perf",
583 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
584 # log_base of 1.7 means:
585 # when there are P pending builds, LUCI will batch the first B builds.
586 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
587 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200588 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100589 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200590 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100591 **kwargs
592 )
593
Mirko Bonadei12643772020-03-27 13:16:35 +0100594def android_perf_builder(
595 name,
596 perf_cat,
597 recipe = "standalone",
598 properties = {},
599 dimensions = {},
600 **kwargs):
601 return perf_builder(
602 name = name,
603 perf_cat = perf_cat,
604 recipe = recipe,
605 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
606 dimensions = dimensions,
607 **kwargs
608 )
609
610def linux_perf_builder(
611 name,
612 perf_cat,
613 recipe = "standalone",
614 properties = {},
615 dimensions = {},
616 **kwargs):
617 return perf_builder(
618 name = name,
619 perf_cat = perf_cat,
620 recipe = recipe,
621 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
622 dimensions = dimensions,
623 **kwargs
624 )
625
626def mac_perf_builder(
627 name,
628 perf_cat,
629 recipe = "standalone",
630 properties = {},
631 dimensions = {},
632 **kwargs):
633 return perf_builder(
634 name = name,
635 perf_cat = perf_cat,
636 recipe = recipe,
637 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
638 dimensions = dimensions,
639 **kwargs
640 )
641
642def win_perf_builder(
643 name,
644 perf_cat,
645 recipe = "standalone",
646 properties = {},
647 dimensions = {},
648 **kwargs):
649 return perf_builder(
650 name = name,
651 perf_cat = perf_cat,
652 recipe = recipe,
653 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
654 dimensions = dimensions,
655 **kwargs
656 )
657
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100658def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
659 if service_account == None:
660 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100661 add_milo(name, {"cron": True})
662 return webrtc_builder(
663 name = name,
664 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
665 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100666 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100667 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100668 **kwargs
669 )
670
671# Helpers:
672
673def merge_dicts(a, b):
674 """Return the result of merging two dicts.
675
676 If matching values are both dicts or both lists, they will be merged (non-recursively).
677
678 Args:
679 a: first dict.
680 b: second dict (takes priority).
681 Returns:
682 Merged dict.
683 """
684 a = dict(a)
685 for k, bv in b.items():
686 av = a.get(k)
687 if type(av) == "dict" and type(bv) == "dict":
688 a[k] = dict(av)
689 a[k].update(bv)
690 elif type(av) == "list" and type(bv) == "list":
691 a[k] = av + bv
692 else:
693 a[k] = bv
694 return a
695
696def normal_builder_factory(**common_kwargs):
697 def builder(*args, **kwargs):
698 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
699
700 def try_job(*args, **kwargs):
701 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
702
703 return builder, try_job
704
705# Mixins:
706
707linux_builder, linux_try_job = normal_builder_factory(
708 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100709 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100710)
711
712android_builder, android_try_job = normal_builder_factory(
713 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100714 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100715)
716
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200717def win_builder(*args, **kwargs):
718 return ci_builder(
719 *args,
720 **merge_dicts({
721 "dimensions": {"os": "Windows"},
722 "properties": GOMA_BACKEND_RBE_ATS_PROD,
723 }, kwargs)
724 )
725
726def win_try_job(*args, **kwargs):
727 return try_builder(
728 *args,
729 **merge_dicts({
730 "dimensions": {"os": "Windows"},
731 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
732 }, kwargs)
733 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100734
735mac_builder, mac_try_job = normal_builder_factory(
736 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100737 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100738)
739
740ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200741 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100742 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100743 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
744 caches = [swarming.cache("osx_sdk")],
745)
746
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200747ios_builder_macos11, ios_try_job_macos11 = normal_builder_factory(
Mirko Bonadeie680bce2021-10-03 12:05:13 +0200748 dimensions = {"os": "Mac-11"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100749 recipe = "ios",
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200750 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100751 caches = [swarming.cache("osx_sdk")],
752)
753
754# Actual builder configuration:
755
756android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
757android_try_job("android_compile_arm_dbg", cq = None)
758android_try_job("android_arm_dbg")
759android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000760android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100761android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
762android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200763android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100764android_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 +0100765android_try_job("android_compile_arm64_dbg", cq = None)
766android_try_job("android_arm64_dbg", cq = None)
767android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
768android_try_job("android_arm64_rel")
769android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100770android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
771android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100772android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100773android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
774android_try_job("android_compile_x64_dbg")
775android_try_job("android_compile_x64_rel", cq = None)
776android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
777android_try_job("android_compile_x86_dbg")
778android_builder("Android32 Builder x86", "Android|x86|rel")
779android_try_job("android_compile_x86_rel")
780android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
781android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100782android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100783
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100784ios_builder("iOS64 Debug", "iOS|arm64|dbg")
785ios_try_job("ios_compile_arm64_dbg")
786ios_builder("iOS64 Release", "iOS|arm64|rel")
787ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100788ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000789ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100790ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000791ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100792ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000793ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200794ios_builder_macos11("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
795ios_try_job_macos11("ios_api_framework", recipe = "ios_api_framework")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100796
797linux_builder("Linux32 Debug", "Linux|x86|dbg")
798linux_try_job("linux_x86_dbg")
799linux_builder("Linux32 Release", "Linux|x86|rel")
800linux_try_job("linux_x86_rel")
801linux_builder("Linux64 Debug", "Linux|x64|dbg")
802linux_try_job("linux_dbg", cq = None)
803linux_try_job("linux_compile_dbg")
804linux_builder("Linux64 Release", "Linux|x64|rel")
805linux_try_job("linux_rel")
806linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
807linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100808linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Christoffer Jansson627cb052021-06-29 12:34:58 +0200809linux_perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100810linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
811linux_try_job("linux_compile_arm_dbg")
812linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
813linux_try_job("linux_compile_arm_rel")
814linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
815linux_try_job("linux_compile_arm64_dbg")
816linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
817linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100818linux_builder("Linux Asan", "Linux|x64|asan")
819linux_try_job("linux_asan")
820linux_builder("Linux MSan", "Linux|x64|msan")
821linux_try_job("linux_msan")
822linux_builder("Linux Tsan v2", "Linux|x64|tsan")
823linux_try_job("linux_tsan2")
824linux_builder("Linux UBSan", "Linux|x64|ubsan")
825linux_try_job("linux_ubsan")
826linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
827linux_try_job("linux_ubsan_vptr")
828linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
829linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
830linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
831linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100832linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100833linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100834
835mac_builder("Mac64 Debug", "Mac|x64|dbg")
836mac_try_job("mac_dbg", cq = None)
837mac_try_job("mac_compile_dbg")
838mac_builder("Mac64 Release", "Mac|x64|rel")
Andrey Logvina9501222021-04-27 18:08:39 +0000839mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100840mac_try_job("mac_compile_rel", cq = None)
841mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100842mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100843mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000844mac_try_job("mac_asan")
Mirko Bonadei2f407ea2021-08-31 07:27:22 +0000845mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Christoffer Janssonb21c9502021-06-09 16:15:39 +0200846mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", dimensions = {"cpu": "arm64-64-Apple_M1"})
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100847
848win_builder("Win32 Debug", "Win MSVC|x86|dbg")
Björn Terelius46fc2e32021-10-06 15:13:25 +0200849win_try_job("win_x86_msvc_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100850win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000851win_builder("Win32 Release", "Win MSVC|x86|rel")
Björn Terelius46fc2e32021-10-06 15:13:25 +0200852win_try_job("win_x86_msvc_rel", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100853win_try_job("win_compile_x86_msvc_rel", cq = None)
854win_builder("Win64 Debug", "Win MSVC|x64|dbg")
Björn Terelius46fc2e32021-10-06 15:13:25 +0200855win_try_job("win_x64_msvc_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100856win_try_job("win_compile_x64_msvc_dbg", cq = None)
857win_builder("Win64 Release", "Win MSVC|x64|rel")
Björn Terelius46fc2e32021-10-06 15:13:25 +0200858win_try_job("win_x64_msvc_rel", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100859win_try_job("win_compile_x64_msvc_rel", cq = None)
860win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
861win_try_job("win_x86_clang_dbg", cq = None)
862win_try_job("win_compile_x86_clang_dbg")
863win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
864win_try_job("win_x86_clang_rel")
865win_try_job("win_compile_x86_clang_rel", cq = None)
866win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100867win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100868win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
869win_try_job("win_x64_clang_dbg", cq = None)
870win_try_job("win_x64_clang_dbg_win8", cq = None)
871win_try_job("win_x64_clang_dbg_win10", cq = None)
872win_try_job("win_compile_x64_clang_dbg")
873win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
874win_try_job("win_x64_clang_rel", cq = None)
875win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200876win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100877win_try_job("win_asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100878win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
879win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200880win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
881win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100882
883linux_try_job(
884 "presubmit",
885 recipe = "run_presubmit",
886 properties = {"repo_name": "webrtc", "runhooks": True},
887 priority = 28,
888 cq = {"disable_reuse": True},
889)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100890
891cron_builder(
892 "Auto-roll - WebRTC DEPS",
893 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200894 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100895)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200896
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100897cron_builder(
898 "WebRTC version update",
899 recipe = "update_webrtc_binary_version",
900 schedule = "0 4 * * *", # Every day at 4am.
901 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
902)
903
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200904lkgr_config = {
905 "project": "webrtc",
906 "source_url": WEBRTC_GIT,
907 "status_url": "https://webrtc-status.appspot.com",
908 "allowed_lag": 300, # hours
909 "allowed_gap": 12, # commits behind
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200910 "error_recipients": WEBRTC_TROOPER_EMAIL,
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200911 "buckets": {
912 "webrtc/ci": {
913 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100914 "builders": [
915 b
916 for b in sorted(lkgr_builders)
917 if b not in skipped_lkgr_bots
918 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200919 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200920 "chromium/webrtc.fyi": {
921 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200922 "builders": [
923 "WebRTC Chromium FYI Android Builder (dbg)",
924 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
925 "WebRTC Chromium FYI Android Builder",
Mirko Bonadei04fe32f2020-05-01 00:45:58 +0200926 "WebRTC Chromium FYI Android Tests (dbg) (L Nexus5)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200927 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
928 "WebRTC Chromium FYI Linux Builder (dbg)",
929 "WebRTC Chromium FYI Linux Builder",
930 "WebRTC Chromium FYI Linux Tester",
931 "WebRTC Chromium FYI Mac Builder (dbg)",
932 "WebRTC Chromium FYI Mac Builder",
933 "WebRTC Chromium FYI Mac Tester",
934 "WebRTC Chromium FYI Win Builder (dbg)",
Andrey Logvin7228ba12021-09-15 17:59:21 +0000935 "WebRTC Chromium FYI Win Builder",
Andrey Logvin7484d1b82021-09-15 17:32:39 +0000936 "WebRTC Chromium FYI Win10 Tester",
937 "WebRTC Chromium FYI Win7 Tester",
938 "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100939 "WebRTC Chromium FYI ios-device",
Björn Tereliusc20ed6b2021-06-21 14:31:35 +0200940 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200941 ],
942 },
943 },
944}
945
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100946cron_builder(
947 "WebRTC lkgr finder",
948 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200949 properties = {
950 "project": "webrtc",
951 "repo": WEBRTC_GIT,
952 "ref": "refs/heads/lkgr",
Christoffer Janssone9fcc7b2021-06-29 13:02:15 +0200953 "src_ref": "refs/heads/main",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200954 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
955 "config": lkgr_config,
956 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100957 schedule = "*/10 * * * *", # Every 10 minutes.
958)