blob: df57112f7422fe349fedbdd1b708ee944b944276 [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 Shtayurac343a082022-02-09 12:59:42 -080011lucicfg.check_version("1.30.9")
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"
Jeremy Leconte39fbd002022-02-22 10:01:14 +010016WEBRTC_IOS_XCODE_VERSION = "12a7209"
Jeremy Lecontea9cd35e2022-02-22 15:15:21 +010017WEBRTC_XCODE13 = "13a233"
Jeremy Leconte39fbd002022-02-22 10:01:14 +010018WEBRTC_IOS_SDK_PROPERTY = {"$depot_tools/osx_sdk": {"sdk_version": WEBRTC_IOS_XCODE_VERSION}}
Jeremy Leconte228f54f2022-02-23 11:10:33 +010019DEFAULT_CPU = "x86-64"
Oleh Prypin1a0593f2019-03-11 09:43:28 +010020
Jeremy Leconte39fbd002022-02-22 10:01:14 +010021# Helpers:
22
Jeremy Leconte1efa6a12022-02-23 09:17:12 +010023def make_goma_properties(enable_ats = True, jobs = None):
Jeremy Leconte39fbd002022-02-22 10:01:14 +010024 """Makes a default goma property with the specified argument.
25
26 Args:
27 enable_ats: True if the ATS should be enabled.
28 jobs: Number of jobs to be used by the builder.
29 Returns:
30 A dictonary with the goma properties.
31 """
32 goma_properties = {
Mirko Bonadei1e905342020-03-04 09:39:42 +010033 "server_host": "goma.chromium.org",
Jeremy Leconteea2016b2020-07-01 09:47:22 +020034 "use_luci_auth": True,
Jeremy Leconte39fbd002022-02-22 10:01:14 +010035 }
Jeremy Leconte1efa6a12022-02-23 09:17:12 +010036 if not enable_ats:
Jeremy Leconte39fbd002022-02-22 10:01:14 +010037 goma_properties["enable_ats"] = enable_ats
38 if jobs:
39 goma_properties["jobs"] = jobs
40 return {"$build/goma": goma_properties}
Mirko Bonadei5aafd472021-04-21 10:42:00 +020041
Artem Titov70d45af2021-10-11 13:25:18 +020042# Add names of builders to remove from LKGR finder to this list. This is
43# useful when a failure can be safely ignored while fixing it without
44# blocking the LKGR finder on it.
45skipped_lkgr_bots = [
Artem Titov70d45af2021-10-11 13:25:18 +020046]
47
Vadim Shtayurac343a082022-02-09 12:59:42 -080048# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
49lucicfg.enable_experiment("crbug.com/1182002")
50
Christoffer Jansson3e21f3f2021-11-17 16:30:51 +010051luci.builder.defaults.experiments.set(
52 {
Christoffer Jansson3e21f3f2021-11-17 16:30:51 +010053 "luci.recipes.use_python3": 100,
54 },
55)
Jeremy Leconte34db3992021-11-23 09:44:31 +010056luci.builder.defaults.test_presentation.set(
57 resultdb.test_presentation(grouping_keys = ["status", "v.test_suite"]),
58)
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020059
Oleh Prypin1a0593f2019-03-11 09:43:28 +010060lucicfg.config(
61 config_dir = ".",
62 tracked_files = [
63 "commit-queue.cfg",
64 "cr-buildbucket.cfg",
65 "luci-logdog.cfg",
66 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010067 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020068 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010069 "luci-scheduler.cfg",
70 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020071 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010072 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020073 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010074)
75
76luci.project(
77 name = "webrtc",
78 buildbucket = "cr-buildbucket.appspot.com",
79 logdog = "luci-logdog.appspot.com",
80 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010081 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010082 scheduler = "luci-scheduler.appspot.com",
83 swarming = "chromium-swarm.appspot.com",
84 acls = [
85 acl.entry(
86 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
87 groups = ["all"],
88 ),
89 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
90 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
91 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020092 bindings = [
93 luci.binding(
Vadim Shtayura64ca5e62021-11-11 17:10:18 -080094 roles = "role/configs.validator",
95 users = [
96 "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
97 ],
98 ),
99 luci.binding(
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200100 roles = "role/swarming.poolOwner",
101 groups = "project-webrtc-admins",
102 ),
103 luci.binding(
104 roles = "role/swarming.poolViewer",
105 groups = "all",
106 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +0200107 # Allow any WebRTC build to trigger a test ran under chromium-tester@
108 # task service account.
109 luci.binding(
110 roles = "role/swarming.taskServiceAccount",
111 users = [
112 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
113 ],
114 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200115 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100116)
117
118luci.logdog(
119 gs_bucket = "chromium-luci-logdog",
120)
121
122luci.milo(
123 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
124)
125
Owen Rodleya55c38e2020-06-15 11:16:10 +1000126luci.notify(tree_closing_enabled = True)
127
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100128luci.cq(
129 status_host = "chromium-cq-status.appspot.com",
130 submit_max_burst = 1,
131 submit_burst_delay = 1 * time.minute,
132)
133
134luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200135 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100136 bucket = "ci",
137 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200138 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100139)
140
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200141# Swarming permissions:
142
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200143luci.realm(name = "pools/cron", bindings = [
144 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
145 luci.binding(
146 roles = "role/swarming.poolUser",
147 projects = "libyuv",
148 ),
149])
150
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200151luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200152luci.realm(name = "pools/ci-tests", bindings = [
153 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
154 luci.binding(
155 roles = "role/swarming.poolUser",
156 groups = "project-webrtc-ci-task-accounts",
157 ),
158 # Allow tasks here to use .ci task service accounts.
159 luci.binding(
160 roles = "role/swarming.taskServiceAccount",
161 groups = "project-webrtc-ci-task-accounts",
162 ),
163])
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100164luci.realm(name = "ci", bindings = [
165 # Allow CI builders to create invocations in their own builds.
166 luci.binding(
167 roles = "role/resultdb.invocationCreator",
168 groups = "project-webrtc-ci-task-accounts",
169 ),
170])
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200171
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100172luci.realm(name = "pools/try", bindings = [
173 # Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
174 luci.binding(
175 roles = "role/swarming.poolUser",
176 groups = "project-webrtc-led-users",
177 ),
178])
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200179luci.realm(name = "pools/try-tests", bindings = [
180 # Allow task service accounts of .try pool/bucket to trigger tasks here.
181 luci.binding(
182 roles = "role/swarming.poolUser",
183 groups = "project-webrtc-try-task-accounts",
184 ),
185 # Allow tasks here to use .try task service accounts.
186 luci.binding(
187 roles = "role/swarming.taskServiceAccount",
188 groups = "project-webrtc-try-task-accounts",
189 ),
190])
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100191luci.realm(name = "try", bindings = [
192 luci.binding(
193 roles = "role/swarming.taskTriggerer",
194 groups = "project-webrtc-led-users",
195 ),
196 # Allow try builders to create invocations in their own builds.
197 luci.binding(
198 roles = "role/resultdb.invocationCreator",
199 groups = "project-webrtc-try-task-accounts",
200 ),
201])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200202
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200203luci.realm(name = "pools/perf", bindings = [
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100204 # Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200205 luci.binding(
206 roles = "role/swarming.poolUser",
207 groups = "project-webrtc-led-users",
208 ),
209])
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100210luci.realm(name = "perf", bindings = [
211 luci.binding(
212 roles = "role/swarming.taskTriggerer",
213 groups = "project-webrtc-led-users",
214 ),
215])
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200216
Jeremy Leconte053e63c2021-11-24 13:55:48 +0100217luci.realm(name = "@root", bindings = [
218 # Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
219 luci.binding(
220 roles = "role/swarming.poolUser",
221 groups = "project-webrtc-admins",
222 ),
223 luci.binding(
224 roles = "role/swarming.taskTriggerer",
225 groups = "project-webrtc-admins",
226 ),
227])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200228
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100229# Bucket definitions:
230
231luci.bucket(
232 name = "try",
233 acls = [
234 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
235 "service-account-cq",
236 "project-webrtc-tryjob-access",
237 ]),
238 ],
239)
240
241luci.bucket(
242 name = "ci",
243 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200244 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
245 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100246 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200247 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
248 # Allow Pinpoint to trigger builds for bisection
249 "service-account-chromeperf",
250 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100251 ],
252)
253
254luci.bucket(
255 name = "perf",
256 acls = [
257 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100258 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
259 ]),
260 ],
261)
262
263luci.bucket(
264 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100265)
266
267# Commit queue definitions:
268
269luci.cq_group(
270 name = "cq",
271 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200272 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100273 acls = [
274 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
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_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100282 name = "cq_branch",
283 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
284 acls = [
285 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
286 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
287 ],
288 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200289 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100290)
291
292luci.cq_group(
293 name = "cq_infra",
294 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100295 acls = [
296 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
297 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
298 ],
299 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200300 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100301)
302
303luci.cq_tryjob_verifier(
304 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100305 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100306)
307
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200308luci.cq_tryjob_verifier(
309 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
310 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
311 cq_group = "cq",
312)
313
Oleh Prypin71d17422019-03-28 08:43:16 +0100314# Notifier definitions:
315
316luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200317 name = "post_submit_failure_notifier",
318 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200319 notify_emails = [WEBRTC_TROOPER_EMAIL],
Christoffer Jansson16635012021-10-25 16:32:38 +0200320 notify_blamelist = True,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200321 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200322 name = "build_failure",
323 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200324 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100325)
326
327luci.notifier(
328 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200329 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200330 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200331 template = luci.notifier_template(
332 name = "cron",
333 body = io.read_file("luci-notify/email-templates/cron.template"),
334 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100335)
336
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200337luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200338 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200339 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200340 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200341 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200342 name = "infra_failure",
343 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200344 ),
345)
346
Owen Rodley6b721ba2020-05-26 10:04:20 +1000347# Tree closer definitions:
348
349luci.tree_closer(
350 name = "webrtc_tree_closer",
351 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000352 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
353 # that LUCI-Notify would take the exact same actions. Once we've switched
354 # over, this should be updated - several of these steps don't exist in
355 # WebRTC recipes.
356 failed_step_regexp = [
357 "bot_update",
358 "compile",
359 "gclient runhooks",
360 "runhooks",
361 "update",
362 "extract build",
363 "cleanup_temp",
364 "taskkill",
365 "compile",
366 "gn",
367 ],
368 failed_step_regexp_exclude = ".*\\(experimental\\).*",
369)
370
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100371# Recipe definitions:
372
373def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
374 return luci.recipe(
375 name = recipe.split("/")[-1],
376 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200377 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100378 recipe = recipe,
Christoffer Jansson659d9322021-11-18 15:56:00 +0100379 use_python3 = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100380 )
381
382recipe("chromium_trybot")
383recipe("run_presubmit")
384recipe("webrtc/auto_roll_webrtc_deps")
385recipe("webrtc/ios")
386recipe("webrtc/ios_api_framework")
387recipe("webrtc/libfuzzer")
388recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100389recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100390recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800391recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100392
393# Console definitions:
394
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700395luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
396luci.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 +0100397luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100398luci.list_view(name = "try", title = "Tryserver")
399
400def add_milo(builder, views):
401 """Add Milo console entries for the builder.
402
403 Args:
404 builder: builder name (str).
405 views: dict where keys are names of consoles and values are either a
406 category for the console (str, pipe-separated) or True, which means
407 adding to a list view rather than a console.
408 """
409 for view_name, category in views.items():
410 if category == None:
411 continue
412 elif type(category) == "string":
413 category, _, short_name = category.rpartition("|")
414 luci.console_view_entry(
415 console_view = view_name,
416 builder = builder,
417 category = category or None,
418 short_name = short_name or None,
419 )
420 elif category == True:
421 luci.list_view_entry(
422 list_view = view_name,
423 builder = builder,
424 )
425 else:
426 fail("Unexpected value for category: %r" % category)
427
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200428lkgr_builders = {}
429
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100430# Builder-defining functions:
431
Artem Titarenkof6588b72019-11-14 14:28:11 +0100432def webrtc_builder(
433 name,
Jeremy Lecontec2516202021-12-14 13:01:24 +0100434 bucket,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100435 dimensions,
436 properties = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100437 recipe = "standalone",
Artem Titarenkof6588b72019-11-14 14:28:11 +0100438 priority = 30,
439 execution_timeout = 2 * time.hour,
440 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200441 """WebRTC specific wrapper around luci.builder.
442
443 Args:
444 name: builder name (str).
Jeremy Lecontec2516202021-12-14 13:01:24 +0100445 bucket: The name of the bucket the builder belongs to.
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200446 dimensions: dict of Swarming dimensions (strings) to search machines by.
447 properties: dict of properties to pass to the recipe (on top of the default ones).
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100448 recipe: string with the name of the recipe to run.
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200449 priority: int [1-255] or None, indicating swarming task priority, lower is
450 more important. If None, defer the decision to Buildbucket service.
451 execution_timeout: int or None, how long to wait for a running build to finish before
452 forcefully aborting it and marking the build as timed out. If None,
453 defer the decision to Buildbucket service.
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200454 **kwargs: Pass on to webrtc_builder / luci.builder.
455 Returns:
456 A luci.builder.
457 """
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100458 properties = properties or {}
459 properties["$recipe_engine/isolated"] = {
460 "server": "https://isolateserver.appspot.com",
461 }
Jeremy Lecontec2516202021-12-14 13:01:24 +0100462 resultdb_bq_table = "webrtc-ci.resultdb." + bucket + "_test_results"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100463 return luci.builder(
464 name = name,
Jeremy Lecontec2516202021-12-14 13:01:24 +0100465 bucket = bucket,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200466 executable = recipe,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100467 dimensions = dimensions,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200468 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100469 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100470 priority = priority,
471 build_numbers = True,
472 swarming_tags = ["vpython:native-python-wrapper"],
Jeremy Lecontec2516202021-12-14 13:01:24 +0100473 resultdb_settings = resultdb.settings(
474 enable = True,
475 bq_exports = [
476 resultdb.export_test_results(bq_table = resultdb_bq_table),
477 ],
478 ),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100479 **kwargs
480 )
481
482def ci_builder(
483 name,
484 ci_cat,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100485 dimensions,
486 properties = None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100487 perf_cat = None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100488 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100489 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100490 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200491 """Add a post-submit builder.
492
493 Args:
494 name: builder name (str).
495 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
Oleh Prypine5677672019-04-25 12:21:35 +0200496 dimensions: dict of Swarming dimensions (strings) to search machines by.
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100497 properties: dict of properties to pass to the recipe (on top of the default ones).
498 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
Oleh Prypine5677672019-04-25 12:21:35 +0200499 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:
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100515 add_milo(name, {"ci": ci_cat, "perf": perf_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200516 if ci_cat:
517 lkgr_builders[name] = True
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100518 dimensions.update({"pool": "luci.webrtc.ci", "cpu": kwargs.pop("cpu", DEFAULT_CPU)})
519 properties = properties or {}
520 properties["builder_group"] = "client.webrtc"
521 properties.update(make_goma_properties())
Artem Titov70d45af2021-10-11 13:25:18 +0200522 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None
523 if notifies and name not in skipped_lkgr_bots:
524 notifies.append("webrtc_tree_closer")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100525 return webrtc_builder(
526 name = name,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100527 dimensions = dimensions,
528 properties = properties,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100529 bucket = "ci",
530 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200531 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100532 repo = WEBRTC_GIT,
Artem Titov70d45af2021-10-11 13:25:18 +0200533 notifies = notifies,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100534 **kwargs
535 )
536
537def try_builder(
538 name,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100539 dimensions,
540 properties = None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100541 try_cat = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100542 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100543 branch_cq = True,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100544 goma_enable_ats = True,
545 goma_jobs = None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100546 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200547 """Add a pre-submit builder.
548
549 Args:
550 name: builder name (str).
Oleh Prypine5677672019-04-25 12:21:35 +0200551 dimensions: dict of Swarming dimensions (strings) to search machines by.
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100552 properties: dict of properties to pass to the recipe (on top of the default ones).
553 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
Oleh Prypine5677672019-04-25 12:21:35 +0200554 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 +0100555 branch_cq: False to exclude this builder just from the release-branch CQ.
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100556 goma_enable_ats: True if the ATS should be enabled by the builder.
557 goma_jobs: Number of jobs to be used by the builder.
Oleh Prypine5677672019-04-25 12:21:35 +0200558 **kwargs: Pass on to webrtc_builder / luci.builder.
559 Returns:
560 A luci.builder.
561 """
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100562 add_milo(name, {"try": try_cat})
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100563 dimensions.update({"pool": "luci.webrtc.try", "cpu": DEFAULT_CPU})
564 properties = properties or {}
565 properties["builder_group"] = "tryserver.webrtc"
566 properties.update(make_goma_properties(enable_ats = goma_enable_ats, jobs = goma_jobs))
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100567 if cq != None:
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100568 luci.cq_tryjob_verifier(name, cq_group = "cq", **cq)
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100569 if branch_cq:
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100570 luci.cq_tryjob_verifier(name, cq_group = "cq_branch", **cq)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100571
572 return webrtc_builder(
573 name = name,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100574 dimensions = dimensions,
575 properties = properties,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100576 bucket = "try",
577 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200578 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100579 **kwargs
580 )
581
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100582def perf_builder(name, perf_cat, **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100583 add_milo(name, {"perf": perf_cat})
Jeremy Leconte1efa6a12022-02-23 09:17:12 +0100584 properties = make_goma_properties()
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100585 properties["builder_group"] = "client.webrtc.perf"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100586 return webrtc_builder(
587 name = name,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100588 dimensions = {"pool": "luci.webrtc.perf", "os": "Linux"},
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100589 properties = properties,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100590 bucket = "perf",
591 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
592 # log_base of 1.7 means:
593 # when there are P pending builds, LUCI will batch the first B builds.
594 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
595 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200596 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Christoffer Jansson16635012021-10-25 16:32:38 +0200597 repo = WEBRTC_GIT,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100598 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200599 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100600 **kwargs
601 )
602
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100603def cron_builder(name, service_account = None, **kwargs):
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100604 if service_account == None:
605 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100606 add_milo(name, {"cron": True})
607 return webrtc_builder(
608 name = name,
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100609 dimensions = {"pool": "luci.webrtc.cron", "os": "Linux", "cpu": DEFAULT_CPU},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100610 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100611 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100612 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100613 **kwargs
614 )
615
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100616def normal_builder_factory(**common_kwargs):
617 def builder(*args, **kwargs):
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100618 kwargs.update(common_kwargs)
619 return ci_builder(*args, **kwargs)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100620
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100621 def try_job(name, **kwargs):
622 kwargs.update(common_kwargs)
623 return try_builder(name, **kwargs)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100624
625 return builder, try_job
626
627# Mixins:
628
629linux_builder, linux_try_job = normal_builder_factory(
630 dimensions = {"os": "Linux", "inside_docker": "0"},
631)
632
633android_builder, android_try_job = normal_builder_factory(
634 dimensions = {"os": "Linux"},
635)
636
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100637win_builder = normal_builder_factory(
638 dimensions = {"os": "Windows"},
639)[0]
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200640
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100641win_try_job = normal_builder_factory(
642 dimensions = {"os": "Windows"},
643 goma_enable_ats = False,
644)[1]
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100645
646mac_builder, mac_try_job = normal_builder_factory(
647 dimensions = {"os": "Mac"},
648)
649
Jeremy Leconte2338cc02022-02-22 13:22:05 +0100650ios_builder = normal_builder_factory(
651 dimensions = {"os": "Mac-10.15"},
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100652 properties = {"xcode_build_version": WEBRTC_IOS_XCODE_VERSION},
Jeremy Leconte2338cc02022-02-22 13:22:05 +0100653 caches = [swarming.cache(
654 name = "xcode_ios_" + WEBRTC_IOS_XCODE_VERSION,
655 path = "xcode_ios_" + WEBRTC_IOS_XCODE_VERSION + ".app",
656 )],
657)[0]
658
659ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200660 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100661 recipe = "ios",
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100662 properties = WEBRTC_IOS_SDK_PROPERTY,
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100663 caches = [swarming.cache("osx_sdk")],
Jeremy Leconte2338cc02022-02-22 13:22:05 +0100664)[1]
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100665
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200666ios_builder_macos11, ios_try_job_macos11 = normal_builder_factory(
Mirko Bonadeie680bce2021-10-03 12:05:13 +0200667 dimensions = {"os": "Mac-11"},
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100668 properties = {"xcode_build_version": WEBRTC_XCODE13},
Jeremy Lecontea9cd35e2022-02-22 15:15:21 +0100669 caches = [swarming.cache(
670 name = "xcode_ios_" + WEBRTC_XCODE13,
671 path = "xcode_ios_" + WEBRTC_XCODE13 + ".app",
672 )],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100673)
674
675# Actual builder configuration:
676
677android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
678android_try_job("android_compile_arm_dbg", cq = None)
679android_try_job("android_arm_dbg")
680android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000681android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100682android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
683android_try_job("android_compile_arm_rel")
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100684perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
685perf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100686android_try_job("android_compile_arm64_dbg", cq = None)
687android_try_job("android_arm64_dbg", cq = None)
688android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
689android_try_job("android_arm64_rel")
690android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100691perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
692perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100693android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100694android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
695android_try_job("android_compile_x64_dbg")
696android_try_job("android_compile_x64_rel", cq = None)
697android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
698android_try_job("android_compile_x86_dbg")
699android_builder("Android32 Builder x86", "Android|x86|rel")
700android_try_job("android_compile_x86_rel")
701android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
702android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100703android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100704
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100705ios_builder("iOS64 Debug", "iOS|arm64|dbg")
706ios_try_job("ios_compile_arm64_dbg")
707ios_builder("iOS64 Release", "iOS|arm64|rel")
708ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100709ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000710ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100711ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000712ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100713ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000714ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200715ios_builder_macos11("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
716ios_try_job_macos11("ios_api_framework", recipe = "ios_api_framework")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100717
718linux_builder("Linux32 Debug", "Linux|x86|dbg")
719linux_try_job("linux_x86_dbg")
720linux_builder("Linux32 Release", "Linux|x86|rel")
721linux_try_job("linux_x86_rel")
722linux_builder("Linux64 Debug", "Linux|x64|dbg")
723linux_try_job("linux_dbg", cq = None)
724linux_try_job("linux_compile_dbg")
725linux_builder("Linux64 Release", "Linux|x64|rel")
726linux_try_job("linux_rel")
727linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
728linux_try_job("linux_compile_rel")
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100729perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
730perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100731linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
732linux_try_job("linux_compile_arm_dbg")
733linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
734linux_try_job("linux_compile_arm_rel")
735linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
736linux_try_job("linux_compile_arm64_dbg")
737linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
738linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100739linux_builder("Linux Asan", "Linux|x64|asan")
740linux_try_job("linux_asan")
741linux_builder("Linux MSan", "Linux|x64|msan")
742linux_try_job("linux_msan")
743linux_builder("Linux Tsan v2", "Linux|x64|tsan")
744linux_try_job("linux_tsan2")
745linux_builder("Linux UBSan", "Linux|x64|ubsan")
746linux_try_job("linux_ubsan")
747linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
748linux_try_job("linux_ubsan_vptr")
749linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
750linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
751linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
752linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100753linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100754linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100755
756mac_builder("Mac64 Debug", "Mac|x64|dbg")
Mirko Bonadei36a79c52021-10-15 19:52:52 +0200757mac_try_job("mac_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100758mac_try_job("mac_compile_dbg")
759mac_builder("Mac64 Release", "Mac|x64|rel")
Mirko Bonadei624568e2021-10-15 15:31:57 +0200760mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100761mac_try_job("mac_compile_rel", cq = None)
762mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100763perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100764mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000765mac_try_job("mac_asan")
Christoffer Jansson4a8d1f52021-12-09 10:16:43 +0100766mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Jeremy Leconte228f54f2022-02-23 11:10:33 +0100767mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", cpu = "arm64-64-Apple_M1")
Jeremy Leconte39fbd002022-02-22 10:01:14 +0100768mac_try_job("mac_rel_m1", try_cat = None, cq = None)
769mac_try_job("mac_dbg_m1", try_cat = None, cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100770
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100771win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
772win_try_job("win_x86_clang_dbg", cq = None)
773win_try_job("win_compile_x86_clang_dbg")
774win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
775win_try_job("win_x86_clang_rel")
776win_try_job("win_compile_x86_clang_rel", cq = None)
777win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Jeremy Leconte1efa6a12022-02-23 09:17:12 +0100778perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100779win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
780win_try_job("win_x64_clang_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100781win_try_job("win_x64_clang_dbg_win10", cq = None)
782win_try_job("win_compile_x64_clang_dbg")
783win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
784win_try_job("win_x64_clang_rel", cq = None)
785win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200786win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100787win_try_job("win_asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100788win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
789win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200790win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
791win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100792
793linux_try_job(
794 "presubmit",
795 recipe = "run_presubmit",
796 properties = {"repo_name": "webrtc", "runhooks": True},
797 priority = 28,
798 cq = {"disable_reuse": True},
799)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100800
801cron_builder(
802 "Auto-roll - WebRTC DEPS",
803 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200804 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100805)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200806
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100807cron_builder(
808 "WebRTC version update",
809 recipe = "update_webrtc_binary_version",
810 schedule = "0 4 * * *", # Every day at 4am.
811 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
812)
813
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200814lkgr_config = {
815 "project": "webrtc",
816 "source_url": WEBRTC_GIT,
817 "status_url": "https://webrtc-status.appspot.com",
Christoffer Jansson75938042021-10-21 16:56:34 +0200818 "allowed_lag": 150, # hours
819 "allowed_gap": 4, # commits behind
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200820 "error_recipients": WEBRTC_TROOPER_EMAIL,
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200821 "buckets": {
822 "webrtc/ci": {
823 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100824 "builders": [
825 b
826 for b in sorted(lkgr_builders)
827 if b not in skipped_lkgr_bots
828 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200829 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200830 "chromium/webrtc.fyi": {
831 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200832 "builders": [
833 "WebRTC Chromium FYI Android Builder (dbg)",
834 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
835 "WebRTC Chromium FYI Android Builder",
Mirko Bonadeidbda38f2022-01-24 13:16:58 +0100836 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
837 "WebRTC Chromium FYI Android Tests (dbg) (N Nexus5X)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200838 "WebRTC Chromium FYI Linux Builder (dbg)",
839 "WebRTC Chromium FYI Linux Builder",
Mirko Bonadeidbda38f2022-01-24 13:16:58 +0100840 "WebRTC Chromium FYI Linux Tester",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200841 "WebRTC Chromium FYI Mac Builder (dbg)",
842 "WebRTC Chromium FYI Mac Builder",
Mirko Bonadeidbda38f2022-01-24 13:16:58 +0100843 "WebRTC Chromium FYI Mac Tester",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200844 "WebRTC Chromium FYI Win Builder (dbg)",
Andrey Logvin7228ba12021-09-15 17:59:21 +0000845 "WebRTC Chromium FYI Win Builder",
Mirko Bonadeidbda38f2022-01-24 13:16:58 +0100846 "WebRTC Chromium FYI Win10 Tester",
847 "WebRTC Chromium FYI Win7 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100848 "WebRTC Chromium FYI ios-device",
Björn Tereliusc20ed6b2021-06-21 14:31:35 +0200849 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200850 ],
851 },
852 },
853}
854
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100855cron_builder(
856 "WebRTC lkgr finder",
857 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200858 properties = {
859 "project": "webrtc",
860 "repo": WEBRTC_GIT,
861 "ref": "refs/heads/lkgr",
Christoffer Janssone9fcc7b2021-06-29 13:02:15 +0200862 "src_ref": "refs/heads/main",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200863 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
864 "config": lkgr_config,
865 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100866 schedule = "*/10 * * * *", # Every 10 minutes.
867)