blob: e33ef57d669daa2739974d39d98aea579f0c28b5 [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",
30 "rpc_extra_params": "?prod",
31 "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
400def cron_builder(name, dimensions = {}, **kwargs):
401 add_milo(name, {"cron": True})
402 return webrtc_builder(
403 name = name,
404 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
405 bucket = "cron",
406 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100407 repo = WEBRTC_GIT,
408 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100409 **kwargs
410 )
411
412# Helpers:
413
414def merge_dicts(a, b):
415 """Return the result of merging two dicts.
416
417 If matching values are both dicts or both lists, they will be merged (non-recursively).
418
419 Args:
420 a: first dict.
421 b: second dict (takes priority).
422 Returns:
423 Merged dict.
424 """
425 a = dict(a)
426 for k, bv in b.items():
427 av = a.get(k)
428 if type(av) == "dict" and type(bv) == "dict":
429 a[k] = dict(av)
430 a[k].update(bv)
431 elif type(av) == "list" and type(bv) == "list":
432 a[k] = av + bv
433 else:
434 a[k] = bv
435 return a
436
437def normal_builder_factory(**common_kwargs):
438 def builder(*args, **kwargs):
439 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
440
441 def try_job(*args, **kwargs):
442 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
443
444 return builder, try_job
445
446# Mixins:
447
448linux_builder, linux_try_job = normal_builder_factory(
449 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100450 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100451)
452
453android_builder, android_try_job = normal_builder_factory(
454 dimensions = {"os": "Linux"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100455 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100456)
457
458win_builder, win_try_job = normal_builder_factory(
459 dimensions = {"os": "Windows"},
Patrik Höglund3916a972019-12-04 13:19:38 +0100460 properties = GOMA_BACKEND_RBE_ATS_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100461)
462
463mac_builder, mac_try_job = normal_builder_factory(
464 dimensions = {"os": "Mac"},
Mirko Bonadei32ca4862020-03-11 10:39:45 +0100465 properties = GOMA_BACKEND_WEBRTC_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100466)
467
468ios_builder, ios_try_job = normal_builder_factory(
Patrik Höglundd5dcd0e2020-02-19 21:50:39 +0100469 dimensions = {"os": "Mac-10.14"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100470 recipe = "ios",
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100471 properties = GOMA_BACKEND_WEBRTC_IOS_RBE_PROD,
472 caches = [swarming.cache("osx_sdk")],
473)
474
475# Some iOS builders don't use goma because they build using
476# `use_xcode_clang=true` which is not supported by goma.
477# https://ci.chromium.org/p/webrtc/builders/ci/iOS%20API%20Framework%20Builder
478# https://ci.chromium.org/p/webrtc/builders/try/ios_api_framework
479ios_builder_no_goma, ios_try_job_no_goma = normal_builder_factory(
480 dimensions = {"os": "Mac-10.14"},
481 recipe = "ios",
Patrik Höglundb681c162020-02-21 07:34:53 +0100482 properties = {"$depot_tools/osx_sdk": {"sdk_version": "11c29"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100483 caches = [swarming.cache("osx_sdk")],
484)
485
486# Actual builder configuration:
487
488android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
489android_try_job("android_compile_arm_dbg", cq = None)
490android_try_job("android_arm_dbg")
491android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
492android_try_job("android_arm_rel")
493android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
494android_try_job("android_compile_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100495perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
Patrik Höglund471570c2019-12-04 13:14:33 +0100496perf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100497android_try_job("android_compile_arm64_dbg", cq = None)
498android_try_job("android_arm64_dbg", cq = None)
499android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
500android_try_job("android_arm64_rel")
501android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Patrik Höglund471570c2019-12-04 13:14:33 +0100502perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
503perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100504android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100505android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
506android_try_job("android_compile_x64_dbg")
507android_try_job("android_compile_x64_rel", cq = None)
508android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
509android_try_job("android_compile_x86_dbg")
510android_builder("Android32 Builder x86", "Android|x86|rel")
511android_try_job("android_compile_x86_rel")
512android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
513android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100514android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100515
516ios_builder("iOS32 Debug", "iOS|arm|dbg")
517ios_try_job("ios_compile_arm_dbg")
518ios_builder("iOS32 Release", "iOS|arm|rel")
519ios_try_job("ios_compile_arm_rel")
520ios_builder("iOS64 Debug", "iOS|arm64|dbg")
521ios_try_job("ios_compile_arm64_dbg")
522ios_builder("iOS64 Release", "iOS|arm64|rel")
523ios_try_job("ios_compile_arm64_rel")
524ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
Patrik Höglund17bed672020-02-20 13:31:36 +0000525ios_try_job("ios_sim_x64_dbg_ios10")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100526ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
Patrik Höglund17bed672020-02-20 13:31:36 +0000527ios_try_job("ios_sim_x64_dbg_ios11")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100528ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Patrik Höglund17bed672020-02-20 13:31:36 +0000529ios_try_job("ios_sim_x64_dbg_ios12")
Mirko Bonadei84360ca2020-03-12 08:35:48 +0100530ios_builder_no_goma("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
531ios_try_job_no_goma("ios_api_framework", recipe = "ios_api_framework", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100532
533linux_builder("Linux32 Debug", "Linux|x86|dbg")
534linux_try_job("linux_x86_dbg")
535linux_builder("Linux32 Release", "Linux|x86|rel")
536linux_try_job("linux_x86_rel")
537linux_builder("Linux64 Debug", "Linux|x64|dbg")
538linux_try_job("linux_dbg", cq = None)
539linux_try_job("linux_compile_dbg")
540linux_builder("Linux64 Release", "Linux|x64|rel")
541linux_try_job("linux_rel")
542linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
543linux_try_job("linux_compile_rel")
544perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200545perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100546linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
547linux_try_job("linux_compile_arm_dbg")
548linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
549linux_try_job("linux_compile_arm_rel")
550linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
551linux_try_job("linux_compile_arm64_dbg")
552linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
553linux_try_job("linux_compile_arm64_rel")
554linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
555linux_try_job("linux_compile_gcc_rel")
556linux_builder("Linux Asan", "Linux|x64|asan")
557linux_try_job("linux_asan")
558linux_builder("Linux MSan", "Linux|x64|msan")
559linux_try_job("linux_msan")
560linux_builder("Linux Tsan v2", "Linux|x64|tsan")
561linux_try_job("linux_tsan2")
562linux_builder("Linux UBSan", "Linux|x64|ubsan")
563linux_try_job("linux_ubsan")
564linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
565linux_try_job("linux_ubsan_vptr")
566linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
567linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
568linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
569linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100570linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100571linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100572
573mac_builder("Mac64 Debug", "Mac|x64|dbg")
574mac_try_job("mac_dbg", cq = None)
575mac_try_job("mac_compile_dbg")
576mac_builder("Mac64 Release", "Mac|x64|rel")
577mac_try_job("mac_rel")
578mac_try_job("mac_compile_rel", cq = None)
579mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
580perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
581mac_builder("Mac Asan", "Mac|x64|asan")
582mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100583mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100584
585win_builder("Win32 Debug", "Win MSVC|x86|dbg")
586win_try_job("win_x86_msvc_dbg")
587win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000588win_builder("Win32 Release", "Win MSVC|x86|rel")
589win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100590win_try_job("win_compile_x86_msvc_rel", cq = None)
591win_builder("Win64 Debug", "Win MSVC|x64|dbg")
592win_try_job("win_x64_msvc_dbg")
593win_try_job("win_compile_x64_msvc_dbg", cq = None)
594win_builder("Win64 Release", "Win MSVC|x64|rel")
595win_try_job("win_x64_msvc_rel")
596win_try_job("win_compile_x64_msvc_rel", cq = None)
597win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
598win_try_job("win_x86_clang_dbg", cq = None)
599win_try_job("win_compile_x86_clang_dbg")
600win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
601win_try_job("win_x86_clang_rel")
602win_try_job("win_compile_x86_clang_rel", cq = None)
603win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
604perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
605win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
606win_try_job("win_x64_clang_dbg", cq = None)
607win_try_job("win_x64_clang_dbg_win8", cq = None)
608win_try_job("win_x64_clang_dbg_win10", cq = None)
609win_try_job("win_compile_x64_clang_dbg")
610win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
611win_try_job("win_x64_clang_rel", cq = None)
612win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200613win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100614win_try_job("win_asan")
615win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
616win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
617win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
618win_try_job("win_x86_more_configs", recipe = "more_configs")
Patrik Höglund39534612019-12-09 14:46:41 +0100619win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Patrik Höglundfe350452019-12-10 11:33:53 +0100620win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100621
622linux_try_job(
623 "presubmit",
624 recipe = "run_presubmit",
625 properties = {"repo_name": "webrtc", "runhooks": True},
626 priority = 28,
627 cq = {"disable_reuse": True},
628)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100629
630cron_builder(
631 "Auto-roll - WebRTC DEPS",
632 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200633 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100634)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200635
636lkgr_config = {
637 "project": "webrtc",
638 "source_url": WEBRTC_GIT,
639 "status_url": "https://webrtc-status.appspot.com",
640 "allowed_lag": 300, # hours
641 "allowed_gap": 12, # commits behind
642 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200643 "buckets": {
644 "webrtc/ci": {
645 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200646 "builders": sorted(lkgr_builders),
647 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200648 "chromium/webrtc.fyi": {
649 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200650 "builders": [
651 "WebRTC Chromium FYI Android Builder (dbg)",
652 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
653 "WebRTC Chromium FYI Android Builder",
654 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
655 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
656 "WebRTC Chromium FYI Linux Builder (dbg)",
657 "WebRTC Chromium FYI Linux Builder",
658 "WebRTC Chromium FYI Linux Tester",
659 "WebRTC Chromium FYI Mac Builder (dbg)",
660 "WebRTC Chromium FYI Mac Builder",
661 "WebRTC Chromium FYI Mac Tester",
662 "WebRTC Chromium FYI Win Builder (dbg)",
663 "WebRTC Chromium FYI Win Builder",
664 "WebRTC Chromium FYI Win10 Tester",
665 "WebRTC Chromium FYI Win7 Tester",
666 "WebRTC Chromium FYI Win8 Tester",
667 "WebRTC Chromium FYI ios-device",
Mirko Bonadei37071f62020-02-15 10:42:49 +0100668 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200669 ],
670 },
671 },
672}
673
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100674cron_builder(
675 "WebRTC lkgr finder",
676 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200677 properties = {
678 "project": "webrtc",
679 "repo": WEBRTC_GIT,
680 "ref": "refs/heads/lkgr",
681 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
682 "config": lkgr_config,
683 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100684 schedule = "*/10 * * * *", # Every 10 minutes.
685)