blob: bbdb029bc6ad8291db623b954b61473022e7cebe [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.
Christoffer Jansson3e21f3f2021-11-17 16:30:51 +010061luci.builder.defaults.experiments.set(
62 {
63 "luci.use_realms": 100,
64 "luci.recipes.use_python3": 100,
65 },
66)
Jeremy Leconte34db3992021-11-23 09:44:31 +010067luci.builder.defaults.test_presentation.set(
68 resultdb.test_presentation(grouping_keys = ["status", "v.test_suite"]),
69)
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020070
Oleh Prypin1a0593f2019-03-11 09:43:28 +010071lucicfg.config(
72 config_dir = ".",
73 tracked_files = [
74 "commit-queue.cfg",
75 "cr-buildbucket.cfg",
76 "luci-logdog.cfg",
77 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010078 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020079 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010080 "luci-scheduler.cfg",
81 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020082 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010083 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020084 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010085)
86
87luci.project(
88 name = "webrtc",
89 buildbucket = "cr-buildbucket.appspot.com",
90 logdog = "luci-logdog.appspot.com",
91 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010092 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010093 scheduler = "luci-scheduler.appspot.com",
94 swarming = "chromium-swarm.appspot.com",
95 acls = [
96 acl.entry(
97 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
98 groups = ["all"],
99 ),
100 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
101 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
102 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200103 bindings = [
104 luci.binding(
Vadim Shtayura64ca5e62021-11-11 17:10:18 -0800105 roles = "role/configs.validator",
106 users = [
107 "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
108 ],
109 ),
110 luci.binding(
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200111 roles = "role/swarming.poolOwner",
112 groups = "project-webrtc-admins",
113 ),
114 luci.binding(
115 roles = "role/swarming.poolViewer",
116 groups = "all",
117 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +0200118 # Allow any WebRTC build to trigger a test ran under chromium-tester@
119 # task service account.
120 luci.binding(
121 roles = "role/swarming.taskServiceAccount",
122 users = [
123 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
124 ],
125 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200126 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100127)
128
129luci.logdog(
130 gs_bucket = "chromium-luci-logdog",
131)
132
133luci.milo(
134 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
135)
136
Owen Rodleya55c38e2020-06-15 11:16:10 +1000137luci.notify(tree_closing_enabled = True)
138
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100139luci.cq(
140 status_host = "chromium-cq-status.appspot.com",
141 submit_max_burst = 1,
142 submit_burst_delay = 1 * time.minute,
143)
144
145luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200146 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100147 bucket = "ci",
148 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200149 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100150)
151
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200152# Swarming permissions:
153
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200154luci.realm(name = "pools/cron", bindings = [
155 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
156 luci.binding(
157 roles = "role/swarming.poolUser",
158 projects = "libyuv",
159 ),
160])
161
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200162luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200163luci.realm(name = "pools/ci-tests", bindings = [
164 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
165 luci.binding(
166 roles = "role/swarming.poolUser",
167 groups = "project-webrtc-ci-task-accounts",
168 ),
169 # Allow tasks here to use .ci task service accounts.
170 luci.binding(
171 roles = "role/swarming.taskServiceAccount",
172 groups = "project-webrtc-ci-task-accounts",
173 ),
174])
175
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200176luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200177luci.realm(name = "pools/try-tests", bindings = [
178 # Allow task service accounts of .try pool/bucket to trigger tasks here.
179 luci.binding(
180 roles = "role/swarming.poolUser",
181 groups = "project-webrtc-try-task-accounts",
182 ),
183 # Allow tasks here to use .try task service accounts.
184 luci.binding(
185 roles = "role/swarming.taskServiceAccount",
186 groups = "project-webrtc-try-task-accounts",
187 ),
188])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200189
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200190# Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
191luci.realm(name = "pools/perf", bindings = [
192 luci.binding(
193 roles = "role/swarming.poolUser",
194 groups = "project-webrtc-led-users",
195 ),
196])
197luci.binding(
198 realm = "perf",
199 roles = "role/swarming.taskTriggerer",
200 groups = "project-webrtc-led-users",
201)
202
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200203# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
204luci.binding(
205 realm = "@root",
206 roles = "role/swarming.poolUser",
207 groups = "project-webrtc-admins",
208)
209luci.binding(
210 realm = "@root",
211 roles = "role/swarming.taskTriggerer",
212 groups = "project-webrtc-admins",
213)
214
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200215# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200216luci.binding(
217 realm = "pools/try",
218 roles = "role/swarming.poolUser",
219 groups = "project-webrtc-led-users",
220)
221luci.binding(
222 realm = "try",
223 roles = "role/swarming.taskTriggerer",
224 groups = "project-webrtc-led-users",
225)
226
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100227# Bucket definitions:
228
229luci.bucket(
230 name = "try",
231 acls = [
232 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
233 "service-account-cq",
234 "project-webrtc-tryjob-access",
235 ]),
236 ],
237)
238
239luci.bucket(
240 name = "ci",
241 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200242 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
243 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100244 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200245 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
246 # Allow Pinpoint to trigger builds for bisection
247 "service-account-chromeperf",
248 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100249 ],
250)
251
252luci.bucket(
253 name = "perf",
254 acls = [
255 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100256 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
257 ]),
258 ],
259)
260
261luci.bucket(
262 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100263)
264
265# Commit queue definitions:
266
267luci.cq_group(
268 name = "cq",
269 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200270 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100271 acls = [
272 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
273 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
274 ],
275 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200276 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100277)
278
279luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100280 name = "cq_branch",
281 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
282 acls = [
283 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
284 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
285 ],
286 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200287 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100288)
289
290luci.cq_group(
291 name = "cq_infra",
292 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100293 acls = [
294 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
295 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
296 ],
297 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200298 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100299)
300
301luci.cq_tryjob_verifier(
302 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100303 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100304)
305
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200306luci.cq_tryjob_verifier(
307 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
308 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
309 cq_group = "cq",
310)
311
Oleh Prypin71d17422019-03-28 08:43:16 +0100312# Notifier definitions:
313
314luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200315 name = "post_submit_failure_notifier",
316 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200317 notify_emails = [WEBRTC_TROOPER_EMAIL],
Christoffer Jansson16635012021-10-25 16:32:38 +0200318 notify_blamelist = True,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200319 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200320 name = "build_failure",
321 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200322 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100323)
324
325luci.notifier(
326 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200327 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200328 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200329 template = luci.notifier_template(
330 name = "cron",
331 body = io.read_file("luci-notify/email-templates/cron.template"),
332 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100333)
334
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200335luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200336 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200337 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200338 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200339 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200340 name = "infra_failure",
341 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200342 ),
343)
344
Owen Rodley6b721ba2020-05-26 10:04:20 +1000345# Tree closer definitions:
346
347luci.tree_closer(
348 name = "webrtc_tree_closer",
349 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000350 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
351 # that LUCI-Notify would take the exact same actions. Once we've switched
352 # over, this should be updated - several of these steps don't exist in
353 # WebRTC recipes.
354 failed_step_regexp = [
355 "bot_update",
356 "compile",
357 "gclient runhooks",
358 "runhooks",
359 "update",
360 "extract build",
361 "cleanup_temp",
362 "taskkill",
363 "compile",
364 "gn",
365 ],
366 failed_step_regexp_exclude = ".*\\(experimental\\).*",
367)
368
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100369# Recipe definitions:
370
371def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
372 return luci.recipe(
373 name = recipe.split("/")[-1],
374 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200375 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100376 recipe = recipe,
Christoffer Jansson659d9322021-11-18 15:56:00 +0100377 use_python3 = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100378 )
379
380recipe("chromium_trybot")
381recipe("run_presubmit")
382recipe("webrtc/auto_roll_webrtc_deps")
383recipe("webrtc/ios")
384recipe("webrtc/ios_api_framework")
385recipe("webrtc/libfuzzer")
386recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100387recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100388recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800389recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100390
391# Console definitions:
392
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700393luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
394luci.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 +0100395luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100396luci.list_view(name = "try", title = "Tryserver")
397
398def add_milo(builder, views):
399 """Add Milo console entries for the builder.
400
401 Args:
402 builder: builder name (str).
403 views: dict where keys are names of consoles and values are either a
404 category for the console (str, pipe-separated) or True, which means
405 adding to a list view rather than a console.
406 """
407 for view_name, category in views.items():
408 if category == None:
409 continue
410 elif type(category) == "string":
411 category, _, short_name = category.rpartition("|")
412 luci.console_view_entry(
413 console_view = view_name,
414 builder = builder,
415 category = category or None,
416 short_name = short_name or None,
417 )
418 elif category == True:
419 luci.list_view_entry(
420 list_view = view_name,
421 builder = builder,
422 )
423 else:
424 fail("Unexpected value for category: %r" % category)
425
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200426lkgr_builders = {}
427
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100428# Builder-defining functions:
429
Artem Titarenkof6588b72019-11-14 14:28:11 +0100430def webrtc_builder(
431 name,
432 recipe = "standalone",
433 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200434 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100435 priority = 30,
436 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200437 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100438 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200439 """WebRTC specific wrapper around luci.builder.
440
441 Args:
442 name: builder name (str).
443 recipe: string with the name of the recipe to run.
444 dimensions: dict of Swarming dimensions (strings) to search machines by.
445 properties: dict of properties to pass to the recipe (on top of the default ones).
446 priority: int [1-255] or None, indicating swarming task priority, lower is
447 more important. If None, defer the decision to Buildbucket service.
448 execution_timeout: int or None, how long to wait for a running build to finish before
449 forcefully aborting it and marking the build as timed out. If None,
450 defer the decision to Buildbucket service.
451 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
452 decition to the goma module.
453 **kwargs: Pass on to webrtc_builder / luci.builder.
454 Returns:
455 A luci.builder.
456 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100457 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
458
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200459 if goma_jobs != None:
460 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
461 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900462 properties = merge_dicts(properties, {
463 "$recipe_engine/isolated": {
464 "server": "https://isolateserver.appspot.com",
465 },
466 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100467 return luci.builder(
468 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200469 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100470 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200471 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100472 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100473 priority = priority,
474 build_numbers = True,
475 swarming_tags = ["vpython:native-python-wrapper"],
Jeremy Lecontef2312112021-11-12 11:55:27 +0100476 resultdb_settings = resultdb.settings(enable = True),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100477 **kwargs
478 )
479
480def ci_builder(
481 name,
482 ci_cat,
483 perf_cat = None,
484 fyi_cat = None,
485 properties = {},
486 dimensions = {},
487 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100488 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100489 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200490 """Add a post-submit builder.
491
492 Args:
493 name: builder name (str).
494 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
495 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
496 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
497 properties: dict of properties to pass to the recipe (on top of the default ones).
498 dimensions: dict of Swarming dimensions (strings) to search machines by.
499 prioritized: True to make this builder have a higher priority and never batch builds.
500 enabled: False to exclude this builder from consoles and failure notifications.
501 **kwargs: Pass on to webrtc_builder / luci.builder.
502 Returns:
503 A luci.builder.
504
505 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
506 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100507 if prioritized:
508 kwargs["triggering_policy"] = scheduler.greedy_batching(
509 max_batch_size = 1,
510 max_concurrent_invocations = 3,
511 )
512 kwargs["priority"] = 29
513
Oleh Prypinf5432c52019-03-19 15:10:37 +0100514 if enabled:
515 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200516 if ci_cat:
517 lkgr_builders[name] = True
Artem Titov70d45af2021-10-11 13:25:18 +0200518 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None
519 if notifies and name not in skipped_lkgr_bots:
520 notifies.append("webrtc_tree_closer")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100521 return webrtc_builder(
522 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700523 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100524 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
525 bucket = "ci",
526 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200527 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100528 repo = WEBRTC_GIT,
Artem Titov70d45af2021-10-11 13:25:18 +0200529 notifies = notifies,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100530 **kwargs
531 )
532
533def try_builder(
534 name,
535 try_cat = True,
536 fyi_cat = None,
537 properties = {},
538 dimensions = {},
539 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100540 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100541 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200542 """Add a pre-submit builder.
543
544 Args:
545 name: builder name (str).
546 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
547 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
548 properties: dict of properties to pass to the recipe (on top of the default ones).
549 dimensions: dict of Swarming dimensions (strings) to search machines by.
550 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 +0100551 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200552 **kwargs: Pass on to webrtc_builder / luci.builder.
553 Returns:
554 A luci.builder.
555 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100556 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
557 if cq != None:
558 luci.cq_tryjob_verifier(
559 builder = name,
560 cq_group = "cq",
561 **cq
562 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100563 if branch_cq:
564 luci.cq_tryjob_verifier(
565 builder = name,
566 cq_group = "cq_branch",
567 **cq
568 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100569
570 return webrtc_builder(
571 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700572 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100573 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
574 bucket = "try",
575 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200576 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100577 **kwargs
578 )
579
580def perf_builder(
581 name,
582 perf_cat,
583 recipe = "standalone",
584 properties = {},
585 dimensions = {},
586 **kwargs):
587 add_milo(name, {"perf": perf_cat})
588 return webrtc_builder(
589 name = name,
590 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700591 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100592 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
593 bucket = "perf",
594 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
595 # log_base of 1.7 means:
596 # when there are P pending builds, LUCI will batch the first B builds.
597 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
598 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200599 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Christoffer Jansson16635012021-10-25 16:32:38 +0200600 repo = WEBRTC_GIT,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100601 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200602 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100603 **kwargs
604 )
605
Mirko Bonadei12643772020-03-27 13:16:35 +0100606def android_perf_builder(
607 name,
608 perf_cat,
609 recipe = "standalone",
610 properties = {},
611 dimensions = {},
612 **kwargs):
613 return perf_builder(
614 name = name,
615 perf_cat = perf_cat,
616 recipe = recipe,
617 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
618 dimensions = dimensions,
619 **kwargs
620 )
621
622def linux_perf_builder(
623 name,
624 perf_cat,
625 recipe = "standalone",
626 properties = {},
627 dimensions = {},
628 **kwargs):
629 return perf_builder(
630 name = name,
631 perf_cat = perf_cat,
632 recipe = recipe,
633 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
634 dimensions = dimensions,
635 **kwargs
636 )
637
638def mac_perf_builder(
639 name,
640 perf_cat,
641 recipe = "standalone",
642 properties = {},
643 dimensions = {},
644 **kwargs):
645 return perf_builder(
646 name = name,
647 perf_cat = perf_cat,
648 recipe = recipe,
649 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
650 dimensions = dimensions,
651 **kwargs
652 )
653
654def win_perf_builder(
655 name,
656 perf_cat,
657 recipe = "standalone",
658 properties = {},
659 dimensions = {},
660 **kwargs):
661 return perf_builder(
662 name = name,
663 perf_cat = perf_cat,
664 recipe = recipe,
665 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
666 dimensions = dimensions,
667 **kwargs
668 )
669
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100670def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
671 if service_account == None:
672 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100673 add_milo(name, {"cron": True})
674 return webrtc_builder(
675 name = name,
676 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
677 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100678 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100679 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100680 **kwargs
681 )
682
683# Helpers:
684
685def merge_dicts(a, b):
686 """Return the result of merging two dicts.
687
688 If matching values are both dicts or both lists, they will be merged (non-recursively).
689
690 Args:
691 a: first dict.
692 b: second dict (takes priority).
693 Returns:
694 Merged dict.
695 """
696 a = dict(a)
697 for k, bv in b.items():
698 av = a.get(k)
699 if type(av) == "dict" and type(bv) == "dict":
700 a[k] = dict(av)
701 a[k].update(bv)
702 elif type(av) == "list" and type(bv) == "list":
703 a[k] = av + bv
704 else:
705 a[k] = bv
706 return a
707
708def normal_builder_factory(**common_kwargs):
709 def builder(*args, **kwargs):
710 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
711
712 def try_job(*args, **kwargs):
713 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
714
715 return builder, try_job
716
717# Mixins:
718
719linux_builder, linux_try_job = normal_builder_factory(
720 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100721 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100722)
723
724android_builder, android_try_job = normal_builder_factory(
725 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100726 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100727)
728
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200729def win_builder(*args, **kwargs):
730 return ci_builder(
731 *args,
732 **merge_dicts({
733 "dimensions": {"os": "Windows"},
734 "properties": GOMA_BACKEND_RBE_ATS_PROD,
735 }, kwargs)
736 )
737
738def win_try_job(*args, **kwargs):
739 return try_builder(
740 *args,
741 **merge_dicts({
742 "dimensions": {"os": "Windows"},
743 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
744 }, kwargs)
745 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100746
747mac_builder, mac_try_job = normal_builder_factory(
748 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100749 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100750)
751
752ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200753 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100754 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100755 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
756 caches = [swarming.cache("osx_sdk")],
757)
758
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200759ios_builder_macos11, ios_try_job_macos11 = normal_builder_factory(
Mirko Bonadeie680bce2021-10-03 12:05:13 +0200760 dimensions = {"os": "Mac-11"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100761 recipe = "ios",
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200762 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100763 caches = [swarming.cache("osx_sdk")],
764)
765
766# Actual builder configuration:
767
768android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
769android_try_job("android_compile_arm_dbg", cq = None)
770android_try_job("android_arm_dbg")
771android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000772android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100773android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
774android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200775android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100776android_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 +0100777android_try_job("android_compile_arm64_dbg", cq = None)
778android_try_job("android_arm64_dbg", cq = None)
779android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
780android_try_job("android_arm64_rel")
781android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100782android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
783android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100784android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100785android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
786android_try_job("android_compile_x64_dbg")
787android_try_job("android_compile_x64_rel", cq = None)
788android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
789android_try_job("android_compile_x86_dbg")
790android_builder("Android32 Builder x86", "Android|x86|rel")
791android_try_job("android_compile_x86_rel")
792android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
793android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100794android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100795
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100796ios_builder("iOS64 Debug", "iOS|arm64|dbg")
797ios_try_job("ios_compile_arm64_dbg")
798ios_builder("iOS64 Release", "iOS|arm64|rel")
799ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100800ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000801ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100802ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000803ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100804ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000805ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200806ios_builder_macos11("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
807ios_try_job_macos11("ios_api_framework", recipe = "ios_api_framework")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100808
809linux_builder("Linux32 Debug", "Linux|x86|dbg")
810linux_try_job("linux_x86_dbg")
811linux_builder("Linux32 Release", "Linux|x86|rel")
812linux_try_job("linux_x86_rel")
813linux_builder("Linux64 Debug", "Linux|x64|dbg")
814linux_try_job("linux_dbg", cq = None)
815linux_try_job("linux_compile_dbg")
816linux_builder("Linux64 Release", "Linux|x64|rel")
817linux_try_job("linux_rel")
818linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
819linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100820linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Christoffer Jansson627cb052021-06-29 12:34:58 +0200821linux_perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100822linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
823linux_try_job("linux_compile_arm_dbg")
824linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
825linux_try_job("linux_compile_arm_rel")
826linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
827linux_try_job("linux_compile_arm64_dbg")
828linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
829linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100830linux_builder("Linux Asan", "Linux|x64|asan")
831linux_try_job("linux_asan")
832linux_builder("Linux MSan", "Linux|x64|msan")
833linux_try_job("linux_msan")
834linux_builder("Linux Tsan v2", "Linux|x64|tsan")
835linux_try_job("linux_tsan2")
836linux_builder("Linux UBSan", "Linux|x64|ubsan")
837linux_try_job("linux_ubsan")
838linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
839linux_try_job("linux_ubsan_vptr")
840linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
841linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
842linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
843linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100844linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100845linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100846
847mac_builder("Mac64 Debug", "Mac|x64|dbg")
Mirko Bonadei36a79c52021-10-15 19:52:52 +0200848mac_try_job("mac_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100849mac_try_job("mac_compile_dbg")
850mac_builder("Mac64 Release", "Mac|x64|rel")
Mirko Bonadei624568e2021-10-15 15:31:57 +0200851mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100852mac_try_job("mac_compile_rel", cq = None)
853mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100854mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100855mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000856mac_try_job("mac_asan")
Mirko Bonadei2f407ea2021-08-31 07:27:22 +0000857mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Christoffer Janssonb21c9502021-06-09 16:15:39 +0200858mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", dimensions = {"cpu": "arm64-64-Apple_M1"})
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100859
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100860win_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",
Christoffer Jansson75938042021-10-21 16:56:34 +0200908 "allowed_lag": 150, # hours
909 "allowed_gap": 4, # 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",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200926 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
landrey3f323922021-10-21 07:30:03 +0000927 "WebRTC Chromium FYI Android Tests (dbg) (N Nexus5X)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200928 "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)