blob: 58733d0e3fdff27c80f0ad41f322f8bc423e2333 [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 = [
Artem Titov70d45af2021-10-11 13:25:18 +020053]
54
Oleh Prypin1a0593f2019-03-11 09:43:28 +010055# Top-level configs:
56
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020057# Enable LUCI Realms support.
58lucicfg.enable_experiment("crbug.com/1085650")
59
Andrii Shyshkalov32515d42021-04-29 14:39:42 +020060# Launch all builds in "realms-aware mode", crbug.com/1177975.
61luci.builder.defaults.experiments.set({"luci.use_realms": 100})
Andrii Shyshkalov20b21872021-04-28 15:10:53 +020062
Oleh Prypin1a0593f2019-03-11 09:43:28 +010063lucicfg.config(
64 config_dir = ".",
65 tracked_files = [
66 "commit-queue.cfg",
67 "cr-buildbucket.cfg",
68 "luci-logdog.cfg",
69 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010070 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020071 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010072 "luci-scheduler.cfg",
73 "project.cfg",
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020074 "realms.cfg",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010075 ],
Jeremy Leconteea2016b2020-07-01 09:47:22 +020076 lint_checks = ["default"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +010077)
78
79luci.project(
80 name = "webrtc",
81 buildbucket = "cr-buildbucket.appspot.com",
82 logdog = "luci-logdog.appspot.com",
83 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010084 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010085 scheduler = "luci-scheduler.appspot.com",
86 swarming = "chromium-swarm.appspot.com",
87 acls = [
88 acl.entry(
89 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
90 groups = ["all"],
91 ),
92 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
93 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
94 ],
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +020095 bindings = [
96 luci.binding(
97 roles = "role/swarming.poolOwner",
98 groups = "project-webrtc-admins",
99 ),
100 luci.binding(
101 roles = "role/swarming.poolViewer",
102 groups = "all",
103 ),
Andrii Shyshkalov2961b642021-04-29 14:01:53 +0200104 # Allow any WebRTC build to trigger a test ran under chromium-tester@
105 # task service account.
106 luci.binding(
107 roles = "role/swarming.taskServiceAccount",
108 users = [
109 "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
110 ],
111 ),
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200112 ],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100113)
114
115luci.logdog(
116 gs_bucket = "chromium-luci-logdog",
117)
118
119luci.milo(
120 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
121)
122
Owen Rodleya55c38e2020-06-15 11:16:10 +1000123luci.notify(tree_closing_enabled = True)
124
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100125luci.cq(
126 status_host = "chromium-cq-status.appspot.com",
127 submit_max_burst = 1,
128 submit_burst_delay = 1 * time.minute,
129)
130
131luci.gitiles_poller(
Christoffer Janssonfa646892021-06-28 17:34:20 +0200132 name = "webrtc-gitiles-trigger-main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100133 bucket = "ci",
134 repo = WEBRTC_GIT,
Christoffer Janssonfa646892021-06-28 17:34:20 +0200135 refs = ["refs/heads/main"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100136)
137
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200138# Swarming permissions:
139
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200140luci.realm(name = "pools/cron", bindings = [
141 # Unlike WebRTC's own builders, other projects need an explicit grant to use this pool.
142 luci.binding(
143 roles = "role/swarming.poolUser",
144 projects = "libyuv",
145 ),
146])
147
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200148luci.realm(name = "pools/ci")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200149luci.realm(name = "pools/ci-tests", bindings = [
150 # Allow task service accounts of .ci pool/bucket to trigger tasks here.
151 luci.binding(
152 roles = "role/swarming.poolUser",
153 groups = "project-webrtc-ci-task-accounts",
154 ),
155 # Allow tasks here to use .ci task service accounts.
156 luci.binding(
157 roles = "role/swarming.taskServiceAccount",
158 groups = "project-webrtc-ci-task-accounts",
159 ),
160])
161
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200162luci.realm(name = "pools/try")
Andrii Shyshkalovc26aaad2021-04-27 16:47:26 +0200163luci.realm(name = "pools/try-tests", bindings = [
164 # Allow task service accounts of .try pool/bucket to trigger tasks here.
165 luci.binding(
166 roles = "role/swarming.poolUser",
167 groups = "project-webrtc-try-task-accounts",
168 ),
169 # Allow tasks here to use .try task service accounts.
170 luci.binding(
171 roles = "role/swarming.taskServiceAccount",
172 groups = "project-webrtc-try-task-accounts",
173 ),
174])
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200175
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200176# Allow to use LED & Swarming "Debug" feature to a larger group but only on perf bots / builders.
177luci.realm(name = "pools/perf", bindings = [
178 luci.binding(
179 roles = "role/swarming.poolUser",
180 groups = "project-webrtc-led-users",
181 ),
182])
183luci.binding(
184 realm = "perf",
185 roles = "role/swarming.taskTriggerer",
186 groups = "project-webrtc-led-users",
187)
188
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200189# Allow admins to use LED & Swarming "Debug" feature on all WebRTC bots.
190luci.binding(
191 realm = "@root",
192 roles = "role/swarming.poolUser",
193 groups = "project-webrtc-admins",
194)
195luci.binding(
196 realm = "@root",
197 roles = "role/swarming.taskTriggerer",
198 groups = "project-webrtc-admins",
199)
200
Mirko Bonadei4cf0fc72021-08-31 17:38:10 +0200201# Allow to use LED & Swarming "Debug" feature to a larger group but only on try bots / builders.
Andrii Shyshkalov0efa6da2021-04-26 20:40:33 +0200202luci.binding(
203 realm = "pools/try",
204 roles = "role/swarming.poolUser",
205 groups = "project-webrtc-led-users",
206)
207luci.binding(
208 realm = "try",
209 roles = "role/swarming.taskTriggerer",
210 groups = "project-webrtc-led-users",
211)
212
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100213# Bucket definitions:
214
215luci.bucket(
216 name = "try",
217 acls = [
218 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
219 "service-account-cq",
220 "project-webrtc-tryjob-access",
221 ]),
222 ],
223)
224
225luci.bucket(
226 name = "ci",
227 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200228 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
229 "project-webrtc-ci-schedulers",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100230 ]),
Jeremy Leconte2e25bb52020-07-16 09:38:56 +0200231 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
232 # Allow Pinpoint to trigger builds for bisection
233 "service-account-chromeperf",
234 ]),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100235 ],
236)
237
238luci.bucket(
239 name = "perf",
240 acls = [
241 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100242 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
243 ]),
244 ],
245)
246
247luci.bucket(
248 name = "cron",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100249)
250
251# Commit queue definitions:
252
253luci.cq_group(
254 name = "cq",
255 tree_status_host = "webrtc-status.appspot.com",
Christoffer Jansson1746b252021-05-31 16:03:55 +0200256 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master", "refs/heads/main"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100257 acls = [
258 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
259 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
260 ],
261 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200262 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100263)
264
265luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100266 name = "cq_branch",
267 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
268 acls = [
269 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
270 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
271 ],
272 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200273 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100274)
275
276luci.cq_group(
277 name = "cq_infra",
278 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100279 acls = [
280 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
281 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
282 ],
283 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200284 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100285)
286
287luci.cq_tryjob_verifier(
288 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100289 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100290)
291
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200292luci.cq_tryjob_verifier(
293 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
294 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
295 cq_group = "cq",
296)
297
Oleh Prypin71d17422019-03-28 08:43:16 +0100298# Notifier definitions:
299
300luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200301 name = "post_submit_failure_notifier",
302 on_new_status = ["FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200303 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200304 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200305 name = "build_failure",
306 body = io.read_file("luci-notify/email-templates/build_failure.template"),
Oleh Prypin705b6a62019-04-03 23:10:51 +0200307 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100308)
309
310luci.notifier(
311 name = "cron_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200312 on_new_status = ["FAILURE", "INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200313 notify_emails = [WEBRTC_TROOPER_EMAIL],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200314 template = luci.notifier_template(
315 name = "cron",
316 body = io.read_file("luci-notify/email-templates/cron.template"),
317 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100318)
319
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200320luci.notifier(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200321 name = "infra_failure_notifier",
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200322 on_new_status = ["INFRA_FAILURE"],
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200323 notify_emails = [WEBRTC_TROOPER_EMAIL],
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200324 template = luci.notifier_template(
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200325 name = "infra_failure",
326 body = io.read_file("luci-notify/email-templates/infra_failure.template"),
Jeremy Leconte67a904e2020-07-08 11:48:18 +0200327 ),
328)
329
Owen Rodley6b721ba2020-05-26 10:04:20 +1000330# Tree closer definitions:
331
332luci.tree_closer(
333 name = "webrtc_tree_closer",
334 tree_status_host = "webrtc-status.appspot.com",
Owen Rodley6b721ba2020-05-26 10:04:20 +1000335 # TODO: These step filters are copied verbatim from Gatekeeper, for testing
336 # that LUCI-Notify would take the exact same actions. Once we've switched
337 # over, this should be updated - several of these steps don't exist in
338 # WebRTC recipes.
339 failed_step_regexp = [
340 "bot_update",
341 "compile",
342 "gclient runhooks",
343 "runhooks",
344 "update",
345 "extract build",
346 "cleanup_temp",
347 "taskkill",
348 "compile",
349 "gn",
350 ],
351 failed_step_regexp_exclude = ".*\\(experimental\\).*",
352)
353
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100354# Recipe definitions:
355
356def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
357 return luci.recipe(
358 name = recipe.split("/")[-1],
359 cipd_package = pkg,
Christoffer Janssona814c562021-09-09 13:44:54 +0200360 cipd_version = "refs/heads/main",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100361 recipe = recipe,
362 )
363
364recipe("chromium_trybot")
365recipe("run_presubmit")
366recipe("webrtc/auto_roll_webrtc_deps")
367recipe("webrtc/ios")
368recipe("webrtc/ios_api_framework")
369recipe("webrtc/libfuzzer")
370recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100371recipe("webrtc/standalone")
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100372recipe("webrtc/update_webrtc_binary_version")
Jeff Yoonf421c682020-12-17 00:16:22 -0800373recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100374
375# Console definitions:
376
Josip Sokcevic5a906ed2021-06-28 08:55:46 -0700377luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb", refs = ["refs/heads/master", "refs/heads/main"])
378luci.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 +0100379luci.list_view(name = "cron", title = "Cron")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100380luci.list_view(name = "try", title = "Tryserver")
381
382def add_milo(builder, views):
383 """Add Milo console entries for the builder.
384
385 Args:
386 builder: builder name (str).
387 views: dict where keys are names of consoles and values are either a
388 category for the console (str, pipe-separated) or True, which means
389 adding to a list view rather than a console.
390 """
391 for view_name, category in views.items():
392 if category == None:
393 continue
394 elif type(category) == "string":
395 category, _, short_name = category.rpartition("|")
396 luci.console_view_entry(
397 console_view = view_name,
398 builder = builder,
399 category = category or None,
400 short_name = short_name or None,
401 )
402 elif category == True:
403 luci.list_view_entry(
404 list_view = view_name,
405 builder = builder,
406 )
407 else:
408 fail("Unexpected value for category: %r" % category)
409
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200410lkgr_builders = {}
411
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100412# Builder-defining functions:
413
Artem Titarenkof6588b72019-11-14 14:28:11 +0100414def webrtc_builder(
415 name,
416 recipe = "standalone",
417 dimensions = {},
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200418 properties = {},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100419 priority = 30,
420 execution_timeout = 2 * time.hour,
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200421 goma_jobs = None,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100422 **kwargs):
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200423 """WebRTC specific wrapper around luci.builder.
424
425 Args:
426 name: builder name (str).
427 recipe: string with the name of the recipe to run.
428 dimensions: dict of Swarming dimensions (strings) to search machines by.
429 properties: dict of properties to pass to the recipe (on top of the default ones).
430 priority: int [1-255] or None, indicating swarming task priority, lower is
431 more important. If None, defer the decision to Buildbucket service.
432 execution_timeout: int or None, how long to wait for a running build to finish before
433 forcefully aborting it and marking the build as timed out. If None,
434 defer the decision to Buildbucket service.
435 goma_jobs: int or None, number of jobs to be used by the builder. If None, defer the
436 decition to the goma module.
437 **kwargs: Pass on to webrtc_builder / luci.builder.
438 Returns:
439 A luci.builder.
440 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100441 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
442
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200443 if goma_jobs != None:
444 goma_additional_params = {"$build/goma": {"jobs": goma_jobs}}
445 properties = merge_dicts(properties, goma_additional_params)
Ye Kuang8df20492020-10-15 14:54:17 +0900446 properties = merge_dicts(properties, {
447 "$recipe_engine/isolated": {
448 "server": "https://isolateserver.appspot.com",
449 },
450 })
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100451 return luci.builder(
452 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200453 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100454 dimensions = {k: v for k, v in dimensions.items() if v != None},
Mirko Bonadeib7ef4602020-07-01 13:28:26 +0200455 properties = properties,
Artem Titarenkof6588b72019-11-14 14:28:11 +0100456 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100457 priority = priority,
458 build_numbers = True,
459 swarming_tags = ["vpython:native-python-wrapper"],
460 **kwargs
461 )
462
463def ci_builder(
464 name,
465 ci_cat,
466 perf_cat = None,
467 fyi_cat = None,
468 properties = {},
469 dimensions = {},
470 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100471 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100472 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200473 """Add a post-submit builder.
474
475 Args:
476 name: builder name (str).
477 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
478 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
479 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
480 properties: dict of properties to pass to the recipe (on top of the default ones).
481 dimensions: dict of Swarming dimensions (strings) to search machines by.
482 prioritized: True to make this builder have a higher priority and never batch builds.
483 enabled: False to exclude this builder from consoles and failure notifications.
484 **kwargs: Pass on to webrtc_builder / luci.builder.
485 Returns:
486 A luci.builder.
487
488 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
489 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100490 if prioritized:
491 kwargs["triggering_policy"] = scheduler.greedy_batching(
492 max_batch_size = 1,
493 max_concurrent_invocations = 3,
494 )
495 kwargs["priority"] = 29
496
Oleh Prypinf5432c52019-03-19 15:10:37 +0100497 if enabled:
498 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200499 if ci_cat:
500 lkgr_builders[name] = True
Artem Titov70d45af2021-10-11 13:25:18 +0200501 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"] if enabled and (ci_cat or perf_cat) else None
502 if notifies and name not in skipped_lkgr_bots:
503 notifies.append("webrtc_tree_closer")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100504 return webrtc_builder(
505 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700506 properties = merge_dicts({"builder_group": "client.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100507 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
508 bucket = "ci",
509 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Christoffer Janssonfa646892021-06-28 17:34:20 +0200510 triggered_by = ["webrtc-gitiles-trigger-main"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100511 repo = WEBRTC_GIT,
Artem Titov70d45af2021-10-11 13:25:18 +0200512 notifies = notifies,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100513 **kwargs
514 )
515
516def try_builder(
517 name,
518 try_cat = True,
519 fyi_cat = None,
520 properties = {},
521 dimensions = {},
522 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100523 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100524 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200525 """Add a pre-submit builder.
526
527 Args:
528 name: builder name (str).
529 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
530 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
531 properties: dict of properties to pass to the recipe (on top of the default ones).
532 dimensions: dict of Swarming dimensions (strings) to search machines by.
533 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 +0100534 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200535 **kwargs: Pass on to webrtc_builder / luci.builder.
536 Returns:
537 A luci.builder.
538 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100539 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
540 if cq != None:
541 luci.cq_tryjob_verifier(
542 builder = name,
543 cq_group = "cq",
544 **cq
545 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100546 if branch_cq:
547 luci.cq_tryjob_verifier(
548 builder = name,
549 cq_group = "cq_branch",
550 **cq
551 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100552
553 return webrtc_builder(
554 name = name,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700555 properties = merge_dicts({"builder_group": "tryserver.webrtc"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100556 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
557 bucket = "try",
558 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200559 notifies = ["infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100560 **kwargs
561 )
562
563def perf_builder(
564 name,
565 perf_cat,
566 recipe = "standalone",
567 properties = {},
568 dimensions = {},
569 **kwargs):
570 add_milo(name, {"perf": perf_cat})
571 return webrtc_builder(
572 name = name,
573 recipe = recipe,
Garrett Beaty4a106ce2020-09-09 14:51:23 -0700574 properties = merge_dicts({"builder_group": "client.webrtc.perf"}, properties),
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100575 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
576 bucket = "perf",
577 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
578 # log_base of 1.7 means:
579 # when there are P pending builds, LUCI will batch the first B builds.
580 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
581 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
Jeremy Leconteea2016b2020-07-01 09:47:22 +0200582 triggering_policy = scheduler.logarithmic_batching(log_base = 1.7),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100583 execution_timeout = 3 * time.hour,
Mirko Bonadei875a27a2020-07-11 15:04:58 +0200584 notifies = ["post_submit_failure_notifier", "infra_failure_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100585 **kwargs
586 )
587
Mirko Bonadei12643772020-03-27 13:16:35 +0100588def android_perf_builder(
589 name,
590 perf_cat,
591 recipe = "standalone",
592 properties = {},
593 dimensions = {},
594 **kwargs):
595 return perf_builder(
596 name = name,
597 perf_cat = perf_cat,
598 recipe = recipe,
599 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
600 dimensions = dimensions,
601 **kwargs
602 )
603
604def linux_perf_builder(
605 name,
606 perf_cat,
607 recipe = "standalone",
608 properties = {},
609 dimensions = {},
610 **kwargs):
611 return perf_builder(
612 name = name,
613 perf_cat = perf_cat,
614 recipe = recipe,
615 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
616 dimensions = dimensions,
617 **kwargs
618 )
619
620def mac_perf_builder(
621 name,
622 perf_cat,
623 recipe = "standalone",
624 properties = {},
625 dimensions = {},
626 **kwargs):
627 return perf_builder(
628 name = name,
629 perf_cat = perf_cat,
630 recipe = recipe,
631 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
632 dimensions = dimensions,
633 **kwargs
634 )
635
636def win_perf_builder(
637 name,
638 perf_cat,
639 recipe = "standalone",
640 properties = {},
641 dimensions = {},
642 **kwargs):
643 return perf_builder(
644 name = name,
645 perf_cat = perf_cat,
646 recipe = recipe,
647 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
648 dimensions = dimensions,
649 **kwargs
650 )
651
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100652def cron_builder(name, dimensions = {}, service_account = None, **kwargs):
653 if service_account == None:
654 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100655 add_milo(name, {"cron": True})
656 return webrtc_builder(
657 name = name,
658 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
659 bucket = "cron",
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100660 service_account = service_account,
Oleh Prypin71d17422019-03-28 08:43:16 +0100661 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100662 **kwargs
663 )
664
665# Helpers:
666
667def merge_dicts(a, b):
668 """Return the result of merging two dicts.
669
670 If matching values are both dicts or both lists, they will be merged (non-recursively).
671
672 Args:
673 a: first dict.
674 b: second dict (takes priority).
675 Returns:
676 Merged dict.
677 """
678 a = dict(a)
679 for k, bv in b.items():
680 av = a.get(k)
681 if type(av) == "dict" and type(bv) == "dict":
682 a[k] = dict(av)
683 a[k].update(bv)
684 elif type(av) == "list" and type(bv) == "list":
685 a[k] = av + bv
686 else:
687 a[k] = bv
688 return a
689
690def normal_builder_factory(**common_kwargs):
691 def builder(*args, **kwargs):
692 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
693
694 def try_job(*args, **kwargs):
695 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
696
697 return builder, try_job
698
699# Mixins:
700
701linux_builder, linux_try_job = normal_builder_factory(
702 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100703 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100704)
705
706android_builder, android_try_job = normal_builder_factory(
707 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100708 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100709)
710
Mirko Bonadei5aafd472021-04-21 10:42:00 +0200711def win_builder(*args, **kwargs):
712 return ci_builder(
713 *args,
714 **merge_dicts({
715 "dimensions": {"os": "Windows"},
716 "properties": GOMA_BACKEND_RBE_ATS_PROD,
717 }, kwargs)
718 )
719
720def win_try_job(*args, **kwargs):
721 return try_builder(
722 *args,
723 **merge_dicts({
724 "dimensions": {"os": "Windows"},
725 "properties": GOMA_BACKEND_RBE_NO_ATS_PROD,
726 }, kwargs)
727 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100728
729mac_builder, mac_try_job = normal_builder_factory(
730 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100731 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100732)
733
734ios_builder, ios_try_job = normal_builder_factory(
Mirko Bonadei8096c232020-08-26 21:44:42 +0200735 dimensions = {"os": "Mac-10.15"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100736 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100737 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
738 caches = [swarming.cache("osx_sdk")],
739)
740
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200741ios_builder_macos11, ios_try_job_macos11 = normal_builder_factory(
Mirko Bonadeie680bce2021-10-03 12:05:13 +0200742 dimensions = {"os": "Mac-11"},
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100743 recipe = "ios",
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200744 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100745 caches = [swarming.cache("osx_sdk")],
746)
747
748# Actual builder configuration:
749
750android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
751android_try_job("android_compile_arm_dbg", cq = None)
752android_try_job("android_arm_dbg")
753android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
Andrey Logvin849978d2021-09-14 10:20:19 +0000754android_try_job("android_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100755android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
756android_try_job("android_compile_arm_rel")
Mirko Bonadei86b4f2d2020-07-08 14:24:48 +0200757android_perf_builder("Perf Android32 (M Nexus5)", "Android|arm|Tester|M Nexus5", triggered_by = ["Android32 Builder arm"])
Mirko Bonadei12643772020-03-27 13:16:35 +0100758android_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 +0100759android_try_job("android_compile_arm64_dbg", cq = None)
760android_try_job("android_arm64_dbg", cq = None)
761android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
762android_try_job("android_arm64_rel")
763android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100764android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
765android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100766android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100767android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
768android_try_job("android_compile_x64_dbg")
769android_try_job("android_compile_x64_rel", cq = None)
770android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
771android_try_job("android_compile_x86_dbg")
772android_builder("Android32 Builder x86", "Android|x86|rel")
773android_try_job("android_compile_x86_rel")
774android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
775android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100776android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100777
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100778ios_builder("iOS64 Debug", "iOS|arm64|dbg")
779ios_try_job("ios_compile_arm64_dbg")
780ios_builder("iOS64 Release", "iOS|arm64|rel")
781ios_try_job("ios_compile_arm64_rel")
Artem Titov1d47d312020-11-03 14:45:52 +0100782ios_builder("iOS64 Sim Debug (iOS 14.0)", "iOS|x64|14")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000783ios_try_job("ios_sim_x64_dbg_ios14")
Artem Titov1d47d312020-11-03 14:45:52 +0100784ios_builder("iOS64 Sim Debug (iOS 13)", "iOS|x64|13")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000785ios_try_job("ios_sim_x64_dbg_ios13")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100786ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Andrey Logvin81320ad2021-06-02 16:45:09 +0000787ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadeia7677a32021-10-05 08:31:36 +0200788ios_builder_macos11("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
789ios_try_job_macos11("ios_api_framework", recipe = "ios_api_framework")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100790
791linux_builder("Linux32 Debug", "Linux|x86|dbg")
792linux_try_job("linux_x86_dbg")
793linux_builder("Linux32 Release", "Linux|x86|rel")
794linux_try_job("linux_x86_rel")
795linux_builder("Linux64 Debug", "Linux|x64|dbg")
796linux_try_job("linux_dbg", cq = None)
797linux_try_job("linux_compile_dbg")
798linux_builder("Linux64 Release", "Linux|x64|rel")
799linux_try_job("linux_rel")
800linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
801linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100802linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Christoffer Jansson627cb052021-06-29 12:34:58 +0200803linux_perf_builder("Perf Linux Bionic", "Linux|x64|Tester|Bionic", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100804linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
805linux_try_job("linux_compile_arm_dbg")
806linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
807linux_try_job("linux_compile_arm_rel")
808linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
809linux_try_job("linux_compile_arm64_dbg")
810linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
811linux_try_job("linux_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100812linux_builder("Linux Asan", "Linux|x64|asan")
813linux_try_job("linux_asan")
814linux_builder("Linux MSan", "Linux|x64|msan")
815linux_try_job("linux_msan")
816linux_builder("Linux Tsan v2", "Linux|x64|tsan")
817linux_try_job("linux_tsan2")
818linux_builder("Linux UBSan", "Linux|x64|ubsan")
819linux_try_job("linux_ubsan")
820linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
821linux_try_job("linux_ubsan_vptr")
822linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
823linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
824linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
825linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100826linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100827linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100828
829mac_builder("Mac64 Debug", "Mac|x64|dbg")
Mirko Bonadei36a79c52021-10-15 19:52:52 +0200830mac_try_job("mac_dbg", cq = None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100831mac_try_job("mac_compile_dbg")
832mac_builder("Mac64 Release", "Mac|x64|rel")
Mirko Bonadei624568e2021-10-15 15:31:57 +0200833mac_try_job("mac_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100834mac_try_job("mac_compile_rel", cq = None)
835mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100836mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100837mac_builder("Mac Asan", "Mac|x64|asan")
Andrey Logvina9501222021-04-27 18:08:39 +0000838mac_try_job("mac_asan")
Mirko Bonadei2f407ea2021-08-31 07:27:22 +0000839mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Christoffer Janssonb21c9502021-06-09 16:15:39 +0200840mac_builder("MacARM64 M1 Release", "Mac|arm64M1|rel", dimensions = {"cpu": "arm64-64-Apple_M1"})
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100841
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100842win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
843win_try_job("win_x86_clang_dbg", cq = None)
844win_try_job("win_compile_x86_clang_dbg")
845win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
846win_try_job("win_x86_clang_rel")
847win_try_job("win_compile_x86_clang_rel", cq = None)
848win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100849win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100850win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
851win_try_job("win_x64_clang_dbg", cq = None)
852win_try_job("win_x64_clang_dbg_win8", cq = None)
853win_try_job("win_x64_clang_dbg_win10", cq = None)
854win_try_job("win_compile_x64_clang_dbg")
855win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
856win_try_job("win_x64_clang_rel", cq = None)
857win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200858win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100859win_try_job("win_asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100860win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
861win_try_job("win_x86_more_configs", recipe = "more_configs")
Mirko Bonadei825f9c22020-07-01 11:52:39 +0200862win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
863win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False, goma_jobs = 150)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100864
865linux_try_job(
866 "presubmit",
867 recipe = "run_presubmit",
868 properties = {"repo_name": "webrtc", "runhooks": True},
869 priority = 28,
870 cq = {"disable_reuse": True},
871)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100872
873cron_builder(
874 "Auto-roll - WebRTC DEPS",
875 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200876 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100877)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200878
Mirko Bonadei54bbd1c2020-12-14 15:54:46 +0100879cron_builder(
880 "WebRTC version update",
881 recipe = "update_webrtc_binary_version",
882 schedule = "0 4 * * *", # Every day at 4am.
883 service_account = "webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com",
884)
885
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200886lkgr_config = {
887 "project": "webrtc",
888 "source_url": WEBRTC_GIT,
889 "status_url": "https://webrtc-status.appspot.com",
Christoffer Jansson75938042021-10-21 16:56:34 +0200890 "allowed_lag": 150, # hours
891 "allowed_gap": 4, # commits behind
Mirko Bonadeif4b78bf2021-04-29 11:23:41 +0200892 "error_recipients": WEBRTC_TROOPER_EMAIL,
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200893 "buckets": {
894 "webrtc/ci": {
895 # bucket alias: luci.webrtc.ci
Mirko Bonadeiab3ff262020-12-18 10:17:43 +0100896 "builders": [
897 b
898 for b in sorted(lkgr_builders)
899 if b not in skipped_lkgr_bots
900 ],
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200901 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200902 "chromium/webrtc.fyi": {
903 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200904 "builders": [
905 "WebRTC Chromium FYI Android Builder (dbg)",
906 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
907 "WebRTC Chromium FYI Android Builder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200908 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
landrey3f323922021-10-21 07:30:03 +0000909 "WebRTC Chromium FYI Android Tests (dbg) (N Nexus5X)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200910 "WebRTC Chromium FYI Linux Builder (dbg)",
911 "WebRTC Chromium FYI Linux Builder",
912 "WebRTC Chromium FYI Linux Tester",
913 "WebRTC Chromium FYI Mac Builder (dbg)",
914 "WebRTC Chromium FYI Mac Builder",
915 "WebRTC Chromium FYI Mac Tester",
916 "WebRTC Chromium FYI Win Builder (dbg)",
Andrey Logvin7228ba12021-09-15 17:59:21 +0000917 "WebRTC Chromium FYI Win Builder",
Andrey Logvin7484d1b82021-09-15 17:32:39 +0000918 "WebRTC Chromium FYI Win10 Tester",
919 "WebRTC Chromium FYI Win7 Tester",
920 "WebRTC Chromium FYI Win8 Tester",
Mirko Bonadei2f05cfe2020-11-25 10:41:58 +0100921 "WebRTC Chromium FYI ios-device",
Björn Tereliusc20ed6b2021-06-21 14:31:35 +0200922 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200923 ],
924 },
925 },
926}
927
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100928cron_builder(
929 "WebRTC lkgr finder",
930 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200931 properties = {
932 "project": "webrtc",
933 "repo": WEBRTC_GIT,
934 "ref": "refs/heads/lkgr",
Christoffer Janssone9fcc7b2021-06-29 13:02:15 +0200935 "src_ref": "refs/heads/main",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200936 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
937 "config": lkgr_config,
938 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100939 schedule = "*/10 * * * *", # Every 10 minutes.
940)