blob: 38064195944a0a2cbcbdee06d5180656204622c2 [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
7# https://chromium.googlesource.com/infra/luci/luci-go/+/master/lucicfg/doc/
8
9WEBRTC_GIT = "https://webrtc.googlesource.com/src"
10WEBRTC_GERRIT = "https://webrtc-review.googlesource.com/src"
11
Mirko Bonadei32ca4862020-03-11 10:39:45 +010012GOMA_BACKEND_WEBRTC_RBE_PROD = {
Mirko Bonadei1e905342020-03-04 09:39:42 +010013 "$build/goma": {
14 "server_host": "goma.chromium.org",
15 "use_luci_auth": True
16 }
17}
18
Mirko Bonadei84360ca2020-03-12 08:35:48 +010019GOMA_BACKEND_WEBRTC_IOS_RBE_PROD = {
20 "$build/goma": {
21 "server_host": "goma.chromium.org",
22 "use_luci_auth": True
23 },
24 "$depot_tools/osx_sdk": {"sdk_version": "11c29"},
25}
26
Patrik Höglund3916a972019-12-04 13:19:38 +010027GOMA_BACKEND_RBE_ATS_PROD = {
28 "$build/goma": {
29 "server_host": "goma.chromium.org",
Mirko Bonadei2688eca2020-03-25 09:15:54 +010030 "use_luci_auth": True,
Patrik Höglund3916a972019-12-04 13:19:38 +010031 "enable_ats": True
32 }
33}
34
Oleh Prypin1a0593f2019-03-11 09:43:28 +010035# Top-level configs:
36
37lucicfg.config(
38 config_dir = ".",
39 tracked_files = [
40 "commit-queue.cfg",
41 "cr-buildbucket.cfg",
42 "luci-logdog.cfg",
43 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010044 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020045 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010046 "luci-scheduler.cfg",
47 "project.cfg",
48 ],
49)
50
51luci.project(
52 name = "webrtc",
53 buildbucket = "cr-buildbucket.appspot.com",
54 logdog = "luci-logdog.appspot.com",
55 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010056 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010057 scheduler = "luci-scheduler.appspot.com",
58 swarming = "chromium-swarm.appspot.com",
59 acls = [
60 acl.entry(
61 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
62 groups = ["all"],
63 ),
64 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
65 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
66 ],
67)
68
69luci.logdog(
70 gs_bucket = "chromium-luci-logdog",
71)
72
73luci.milo(
74 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
75)
76
77luci.cq(
78 status_host = "chromium-cq-status.appspot.com",
79 submit_max_burst = 1,
80 submit_burst_delay = 1 * time.minute,
81)
82
83luci.gitiles_poller(
84 name = "webrtc-gitiles-trigger-master",
85 bucket = "ci",
86 repo = WEBRTC_GIT,
87)
88
89# Bucket definitions:
90
91luci.bucket(
92 name = "try",
93 acls = [
94 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
95 "service-account-cq",
96 "project-webrtc-tryjob-access",
97 ]),
98 ],
99)
100
101luci.bucket(
102 name = "ci",
103 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200104 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
105 "project-webrtc-ci-schedulers",
106 ], users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100107 "luci-scheduler@appspot.gserviceaccount.com",
108 ]),
109 ],
110)
111
112luci.bucket(
113 name = "perf",
114 acls = [
115 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
116 "luci-scheduler@appspot.gserviceaccount.com",
117 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
118 ]),
119 ],
120)
121
122luci.bucket(
123 name = "cron",
124 acls = [
125 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
126 "luci-scheduler@appspot.gserviceaccount.com",
127 ]),
128 ],
129)
130
131# Commit queue definitions:
132
133luci.cq_group(
134 name = "cq",
135 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100136 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100137 acls = [
138 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
139 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
140 ],
141 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200142 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100143)
144
145luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100146 name = "cq_branch",
147 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
148 acls = [
149 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
150 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
151 ],
152 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200153 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100154)
155
156luci.cq_group(
157 name = "cq_infra",
158 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100159 acls = [
160 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
161 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
162 ],
163 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200164 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100165)
166
167luci.cq_tryjob_verifier(
168 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100169 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100170)
171
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200172luci.cq_tryjob_verifier(
173 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
174 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
175 cq_group = "cq",
176)
177
Oleh Prypin71d17422019-03-28 08:43:16 +0100178# Notifier definitions:
179
180luci.notifier(
181 name = "ci_notifier",
182 on_failure = True,
183 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200184 template = luci.notifier_template(
185 name = "ci",
186 body = io.read_file("luci-notify/email-templates/ci.template"),
187 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100188)
189
190luci.notifier(
191 name = "cron_notifier",
192 on_failure = True,
193 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200194 template = luci.notifier_template(
195 name = "cron",
196 body = io.read_file("luci-notify/email-templates/cron.template"),
197 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100198)
199
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100200# Recipe definitions:
201
202def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
203 return luci.recipe(
204 name = recipe.split("/")[-1],
205 cipd_package = pkg,
206 cipd_version = "refs/heads/master",
207 recipe = recipe,
208 )
209
210recipe("chromium_trybot")
211recipe("run_presubmit")
212recipe("webrtc/auto_roll_webrtc_deps")
213recipe("webrtc/ios")
214recipe("webrtc/ios_api_framework")
215recipe("webrtc/libfuzzer")
216recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100217recipe("webrtc/standalone")
218recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
219
220# Console definitions:
221
222luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
223luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
224luci.list_view(name = "cron", title = "Cron")
225luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
226luci.list_view(name = "try", title = "Tryserver")
227
228def add_milo(builder, views):
229 """Add Milo console entries for the builder.
230
231 Args:
232 builder: builder name (str).
233 views: dict where keys are names of consoles and values are either a
234 category for the console (str, pipe-separated) or True, which means
235 adding to a list view rather than a console.
236 """
237 for view_name, category in views.items():
238 if category == None:
239 continue
240 elif type(category) == "string":
241 category, _, short_name = category.rpartition("|")
242 luci.console_view_entry(
243 console_view = view_name,
244 builder = builder,
245 category = category or None,
246 short_name = short_name or None,
247 )
248 elif category == True:
249 luci.list_view_entry(
250 list_view = view_name,
251 builder = builder,
252 )
253 else:
254 fail("Unexpected value for category: %r" % category)
255
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200256lkgr_builders = {}
257
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100258# Builder-defining functions:
259
Artem Titarenkof6588b72019-11-14 14:28:11 +0100260def webrtc_builder(
261 name,
262 recipe = "standalone",
263 dimensions = {},
264 priority = 30,
265 execution_timeout = 2 * time.hour,
266 **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100267 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
268
269 return luci.builder(
270 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200271 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100272 dimensions = {k: v for k, v in dimensions.items() if v != None},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100273 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100274 priority = priority,
275 build_numbers = True,
276 swarming_tags = ["vpython:native-python-wrapper"],
277 **kwargs
278 )
279
280def ci_builder(
281 name,
282 ci_cat,
283 perf_cat = None,
284 fyi_cat = None,
285 properties = {},
286 dimensions = {},
287 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100288 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100289 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200290 """Add a post-submit builder.
291
292 Args:
293 name: builder name (str).
294 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
295 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
296 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
297 properties: dict of properties to pass to the recipe (on top of the default ones).
298 dimensions: dict of Swarming dimensions (strings) to search machines by.
299 prioritized: True to make this builder have a higher priority and never batch builds.
300 enabled: False to exclude this builder from consoles and failure notifications.
301 **kwargs: Pass on to webrtc_builder / luci.builder.
302 Returns:
303 A luci.builder.
304
305 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
306 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100307 if prioritized:
308 kwargs["triggering_policy"] = scheduler.greedy_batching(
309 max_batch_size = 1,
310 max_concurrent_invocations = 3,
311 )
312 kwargs["priority"] = 29
313
Oleh Prypinf5432c52019-03-19 15:10:37 +0100314 if enabled:
315 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200316 if ci_cat:
317 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100318 return webrtc_builder(
319 name = name,
320 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
321 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
322 bucket = "ci",
323 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100324 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100325 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200326 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100327 **kwargs
328 )
329
330def try_builder(
331 name,
332 try_cat = True,
333 fyi_cat = None,
334 properties = {},
335 dimensions = {},
336 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100337 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100338 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200339 """Add a pre-submit builder.
340
341 Args:
342 name: builder name (str).
343 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
344 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
345 properties: dict of properties to pass to the recipe (on top of the default ones).
346 dimensions: dict of Swarming dimensions (strings) to search machines by.
347 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 +0100348 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200349 **kwargs: Pass on to webrtc_builder / luci.builder.
350 Returns:
351 A luci.builder.
352 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100353 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
354 if cq != None:
355 luci.cq_tryjob_verifier(
356 builder = name,
357 cq_group = "cq",
358 **cq
359 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100360 if branch_cq:
361 luci.cq_tryjob_verifier(
362 builder = name,
363 cq_group = "cq_branch",
364 **cq
365 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100366
367 return webrtc_builder(
368 name = name,
369 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
370 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
371 bucket = "try",
372 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
373 **kwargs
374 )
375
376def perf_builder(
377 name,
378 perf_cat,
379 recipe = "standalone",
380 properties = {},
381 dimensions = {},
382 **kwargs):
383 add_milo(name, {"perf": perf_cat})
384 return webrtc_builder(
385 name = name,
386 recipe = recipe,
387 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
388 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
389 bucket = "perf",
390 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
391 # log_base of 1.7 means:
392 # when there are P pending builds, LUCI will batch the first B builds.
393 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
394 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
395 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100396 execution_timeout = 3 * time.hour,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100397 **kwargs
398 )
399
Mirko Bonadei12643772020-03-27 13:16:35 +0100400def android_perf_builder(
401 name,
402 perf_cat,
403 recipe = "standalone",
404 properties = {},
405 dimensions = {},
406 **kwargs):
407 return perf_builder(
408 name = name,
409 perf_cat = perf_cat,
410 recipe = recipe,
411 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
412 dimensions = dimensions,
413 **kwargs
414 )
415
416def linux_perf_builder(
417 name,
418 perf_cat,
419 recipe = "standalone",
420 properties = {},
421 dimensions = {},
422 **kwargs):
423 return perf_builder(
424 name = name,
425 perf_cat = perf_cat,
426 recipe = recipe,
427 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
428 dimensions = dimensions,
429 **kwargs
430 )
431
432def mac_perf_builder(
433 name,
434 perf_cat,
435 recipe = "standalone",
436 properties = {},
437 dimensions = {},
438 **kwargs):
439 return perf_builder(
440 name = name,
441 perf_cat = perf_cat,
442 recipe = recipe,
443 properties = merge_dicts(GOMA_BACKEND_WEBRTC_RBE_PROD, properties),
444 dimensions = dimensions,
445 **kwargs
446 )
447
448def win_perf_builder(
449 name,
450 perf_cat,
451 recipe = "standalone",
452 properties = {},
453 dimensions = {},
454 **kwargs):
455 return perf_builder(
456 name = name,
457 perf_cat = perf_cat,
458 recipe = recipe,
459 properties = merge_dicts(GOMA_BACKEND_RBE_ATS_PROD, properties),
460 dimensions = dimensions,
461 **kwargs
462 )
463
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100464def cron_builder(name, dimensions = {}, **kwargs):
465 add_milo(name, {"cron": True})
466 return webrtc_builder(
467 name = name,
468 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
469 bucket = "cron",
470 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100471 repo = WEBRTC_GIT,
472 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100473 **kwargs
474 )
475
476# Helpers:
477
478def merge_dicts(a, b):
479 """Return the result of merging two dicts.
480
481 If matching values are both dicts or both lists, they will be merged (non-recursively).
482
483 Args:
484 a: first dict.
485 b: second dict (takes priority).
486 Returns:
487 Merged dict.
488 """
489 a = dict(a)
490 for k, bv in b.items():
491 av = a.get(k)
492 if type(av) == "dict" and type(bv) == "dict":
493 a[k] = dict(av)
494 a[k].update(bv)
495 elif type(av) == "list" and type(bv) == "list":
496 a[k] = av + bv
497 else:
498 a[k] = bv
499 return a
500
501def normal_builder_factory(**common_kwargs):
502 def builder(*args, **kwargs):
503 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
504
505 def try_job(*args, **kwargs):
506 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
507
508 return builder, try_job
509
510# Mixins:
511
512linux_builder, linux_try_job = normal_builder_factory(
513 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100514 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100515)
516
517android_builder, android_try_job = normal_builder_factory(
518 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100519 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100520)
521
522win_builder, win_try_job = normal_builder_factory(
523 dimensions = {"os": "Windows"},
Patrik Höglund3916a972019-12-04 13:19:38 +0100524 properties = GOMA_BACKEND_RBE_ATS_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100525)
526
527mac_builder, mac_try_job = normal_builder_factory(
528 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100529 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100530)
531
532ios_builder, ios_try_job = normal_builder_factory(
Patrik Höglundd5dcd0e2020-02-19 21:50:39 +0100533 dimensions = {"os": "Mac-10.14"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100534 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100535 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
536 caches = [swarming.cache("osx_sdk")],
537)
538
539# Some iOS builders don't use goma because they build using
540# `use_xcode_clang=true` which is not supported by goma.
541# https://ci.chromium.org/p/webrtc/builders/ci/iOS%20API%20Framework%20Builder
542# https://ci.chromium.org/p/webrtc/builders/try/ios_api_framework
543ios_builder_no_goma, ios_try_job_no_goma = normal_builder_factory(
544 dimensions = {"os": "Mac-10.14"},
545 recipe = "ios",
Patrik Höglundb681c162020-02-21 07:34:53 +0100546 properties = {"$depot_tools/osx_sdk": {"sdk_version": "11c29"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100547 caches = [swarming.cache("osx_sdk")],
548)
549
550# Actual builder configuration:
551
552android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
553android_try_job("android_compile_arm_dbg", cq = None)
554android_try_job("android_arm_dbg")
555android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
556android_try_job("android_arm_rel")
557android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
558android_try_job("android_compile_arm_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100559android_perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
560android_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 +0100561android_try_job("android_compile_arm64_dbg", cq = None)
562android_try_job("android_arm64_dbg", cq = None)
563android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
564android_try_job("android_arm64_rel")
565android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Mirko Bonadei12643772020-03-27 13:16:35 +0100566android_perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
567android_perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100568android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100569android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
570android_try_job("android_compile_x64_dbg")
571android_try_job("android_compile_x64_rel", cq = None)
572android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
573android_try_job("android_compile_x86_dbg")
574android_builder("Android32 Builder x86", "Android|x86|rel")
575android_try_job("android_compile_x86_rel")
576android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
577android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100578android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100579
580ios_builder("iOS32 Debug", "iOS|arm|dbg")
581ios_try_job("ios_compile_arm_dbg")
582ios_builder("iOS32 Release", "iOS|arm|rel")
583ios_try_job("ios_compile_arm_rel")
584ios_builder("iOS64 Debug", "iOS|arm64|dbg")
585ios_try_job("ios_compile_arm64_dbg")
586ios_builder("iOS64 Release", "iOS|arm64|rel")
587ios_try_job("ios_compile_arm64_rel")
588ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
Patrik Höglund17bed672020-02-20 13:31:36 +0000589ios_try_job("ios_sim_x64_dbg_ios10")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100590ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
Patrik Höglund17bed672020-02-20 13:31:36 +0000591ios_try_job("ios_sim_x64_dbg_ios11")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100592ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Patrik Höglund17bed672020-02-20 13:31:36 +0000593ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100594ios_builder_no_goma("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
595ios_try_job_no_goma("ios_api_framework", recipe = "ios_api_framework", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100596
597linux_builder("Linux32 Debug", "Linux|x86|dbg")
598linux_try_job("linux_x86_dbg")
599linux_builder("Linux32 Release", "Linux|x86|rel")
600linux_try_job("linux_x86_rel")
601linux_builder("Linux64 Debug", "Linux|x64|dbg")
602linux_try_job("linux_dbg", cq = None)
603linux_try_job("linux_compile_dbg")
604linux_builder("Linux64 Release", "Linux|x64|rel")
605linux_try_job("linux_rel")
606linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
607linux_try_job("linux_compile_rel")
Mirko Bonadei12643772020-03-27 13:16:35 +0100608linux_perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
609linux_perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100610linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
611linux_try_job("linux_compile_arm_dbg")
612linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
613linux_try_job("linux_compile_arm_rel")
614linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
615linux_try_job("linux_compile_arm64_dbg")
616linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
617linux_try_job("linux_compile_arm64_rel")
618linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
619linux_try_job("linux_compile_gcc_rel")
620linux_builder("Linux Asan", "Linux|x64|asan")
621linux_try_job("linux_asan")
622linux_builder("Linux MSan", "Linux|x64|msan")
623linux_try_job("linux_msan")
624linux_builder("Linux Tsan v2", "Linux|x64|tsan")
625linux_try_job("linux_tsan2")
626linux_builder("Linux UBSan", "Linux|x64|ubsan")
627linux_try_job("linux_ubsan")
628linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
629linux_try_job("linux_ubsan_vptr")
630linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
631linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
632linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
633linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100634linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100635linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100636
637mac_builder("Mac64 Debug", "Mac|x64|dbg")
638mac_try_job("mac_dbg", cq = None)
639mac_try_job("mac_compile_dbg")
640mac_builder("Mac64 Release", "Mac|x64|rel")
641mac_try_job("mac_rel")
642mac_try_job("mac_compile_rel", cq = None)
643mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100644mac_perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100645mac_builder("Mac Asan", "Mac|x64|asan")
646mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100647mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100648
649win_builder("Win32 Debug", "Win MSVC|x86|dbg")
650win_try_job("win_x86_msvc_dbg")
651win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000652win_builder("Win32 Release", "Win MSVC|x86|rel")
653win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100654win_try_job("win_compile_x86_msvc_rel", cq = None)
655win_builder("Win64 Debug", "Win MSVC|x64|dbg")
656win_try_job("win_x64_msvc_dbg")
657win_try_job("win_compile_x64_msvc_dbg", cq = None)
658win_builder("Win64 Release", "Win MSVC|x64|rel")
659win_try_job("win_x64_msvc_rel")
660win_try_job("win_compile_x64_msvc_rel", cq = None)
661win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
662win_try_job("win_x86_clang_dbg", cq = None)
663win_try_job("win_compile_x86_clang_dbg")
664win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
665win_try_job("win_x86_clang_rel")
666win_try_job("win_compile_x86_clang_rel", cq = None)
667win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
Mirko Bonadei12643772020-03-27 13:16:35 +0100668win_perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100669win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
670win_try_job("win_x64_clang_dbg", cq = None)
671win_try_job("win_x64_clang_dbg_win8", cq = None)
672win_try_job("win_x64_clang_dbg_win10", cq = None)
673win_try_job("win_compile_x64_clang_dbg")
674win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
675win_try_job("win_x64_clang_rel", cq = None)
676win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200677win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100678win_try_job("win_asan")
679win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
680win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
681win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
682win_try_job("win_x86_more_configs", recipe = "more_configs")
Patrik Höglund39534612019-12-09 14:46:41 +0100683win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Patrik Höglundfe350452019-12-10 11:33:53 +0100684win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100685
686linux_try_job(
687 "presubmit",
688 recipe = "run_presubmit",
689 properties = {"repo_name": "webrtc", "runhooks": True},
690 priority = 28,
691 cq = {"disable_reuse": True},
692)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100693
694cron_builder(
695 "Auto-roll - WebRTC DEPS",
696 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200697 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100698)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200699
700lkgr_config = {
701 "project": "webrtc",
702 "source_url": WEBRTC_GIT,
703 "status_url": "https://webrtc-status.appspot.com",
704 "allowed_lag": 300, # hours
705 "allowed_gap": 12, # commits behind
706 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200707 "buckets": {
708 "webrtc/ci": {
709 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200710 "builders": sorted(lkgr_builders),
711 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200712 "chromium/webrtc.fyi": {
713 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200714 "builders": [
715 "WebRTC Chromium FYI Android Builder (dbg)",
716 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
717 "WebRTC Chromium FYI Android Builder",
Mirko Bonadei04fe32f2020-05-01 00:45:58 +0200718 "WebRTC Chromium FYI Android Tests (dbg) (L Nexus5)",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200719 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
720 "WebRTC Chromium FYI Linux Builder (dbg)",
721 "WebRTC Chromium FYI Linux Builder",
722 "WebRTC Chromium FYI Linux Tester",
723 "WebRTC Chromium FYI Mac Builder (dbg)",
724 "WebRTC Chromium FYI Mac Builder",
725 "WebRTC Chromium FYI Mac Tester",
726 "WebRTC Chromium FYI Win Builder (dbg)",
727 "WebRTC Chromium FYI Win Builder",
728 "WebRTC Chromium FYI Win10 Tester",
729 "WebRTC Chromium FYI Win7 Tester",
730 "WebRTC Chromium FYI Win8 Tester",
731 "WebRTC Chromium FYI ios-device",
Mirko Bonadei37071f62020-02-15 10:42:49 +0100732 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200733 ],
734 },
735 },
736}
737
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100738cron_builder(
739 "WebRTC lkgr finder",
740 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200741 properties = {
742 "project": "webrtc",
743 "repo": WEBRTC_GIT,
744 "ref": "refs/heads/lkgr",
745 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
746 "config": lkgr_config,
747 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100748 schedule = "*/10 * * * *", # Every 10 minutes.
749)