blob: 2e835abfb430aefc5a5a17e1f7b12b74f63399cf [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
Patrik Höglund69bed3e2019-11-26 10:40:01 +010012GOMA_BACKEND_RBE_PROD = {
13 "$build/goma": {
14 "server_host": "goma.chromium.org",
15 "rpc_extra_params": "?prod"
16 }
17}
18
Mirko Bonadei1e905342020-03-04 09:39:42 +010019GOMA_BACKEND_NON_CHROMIUM_RBE_PROD = {
20 "$build/goma": {
21 "server_host": "goma.chromium.org",
22 "use_luci_auth": True
23 }
24}
25
Patrik Höglund3916a972019-12-04 13:19:38 +010026GOMA_BACKEND_RBE_ATS_PROD = {
27 "$build/goma": {
28 "server_host": "goma.chromium.org",
29 "rpc_extra_params": "?prod",
30 "enable_ats": True
31 }
32}
33
Oleh Prypin1a0593f2019-03-11 09:43:28 +010034# Top-level configs:
35
36lucicfg.config(
37 config_dir = ".",
38 tracked_files = [
39 "commit-queue.cfg",
40 "cr-buildbucket.cfg",
41 "luci-logdog.cfg",
42 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010043 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020044 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010045 "luci-scheduler.cfg",
46 "project.cfg",
47 ],
48)
49
50luci.project(
51 name = "webrtc",
52 buildbucket = "cr-buildbucket.appspot.com",
53 logdog = "luci-logdog.appspot.com",
54 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010055 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010056 scheduler = "luci-scheduler.appspot.com",
57 swarming = "chromium-swarm.appspot.com",
58 acls = [
59 acl.entry(
60 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
61 groups = ["all"],
62 ),
63 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
64 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
65 ],
66)
67
68luci.logdog(
69 gs_bucket = "chromium-luci-logdog",
70)
71
72luci.milo(
73 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
74)
75
76luci.cq(
77 status_host = "chromium-cq-status.appspot.com",
78 submit_max_burst = 1,
79 submit_burst_delay = 1 * time.minute,
80)
81
82luci.gitiles_poller(
83 name = "webrtc-gitiles-trigger-master",
84 bucket = "ci",
85 repo = WEBRTC_GIT,
86)
87
88# Bucket definitions:
89
90luci.bucket(
91 name = "try",
92 acls = [
93 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
94 "service-account-cq",
95 "project-webrtc-tryjob-access",
96 ]),
97 ],
98)
99
100luci.bucket(
101 name = "ci",
102 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +0200103 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
104 "project-webrtc-ci-schedulers",
105 ], users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100106 "luci-scheduler@appspot.gserviceaccount.com",
107 ]),
108 ],
109)
110
111luci.bucket(
112 name = "perf",
113 acls = [
114 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
115 "luci-scheduler@appspot.gserviceaccount.com",
116 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
117 ]),
118 ],
119)
120
121luci.bucket(
122 name = "cron",
123 acls = [
124 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
125 "luci-scheduler@appspot.gserviceaccount.com",
126 ]),
127 ],
128)
129
130# Commit queue definitions:
131
132luci.cq_group(
133 name = "cq",
134 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100135 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100136 acls = [
137 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
138 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
139 ],
140 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200141 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100142)
143
144luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100145 name = "cq_branch",
146 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
147 acls = [
148 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
149 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
150 ],
151 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200152 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100153)
154
155luci.cq_group(
156 name = "cq_infra",
157 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100158 acls = [
159 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
160 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
161 ],
162 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200163 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100164)
165
166luci.cq_tryjob_verifier(
167 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100168 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100169)
170
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200171luci.cq_tryjob_verifier(
172 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
173 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
174 cq_group = "cq",
175)
176
Oleh Prypin71d17422019-03-28 08:43:16 +0100177# Notifier definitions:
178
179luci.notifier(
180 name = "ci_notifier",
181 on_failure = True,
182 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200183 template = luci.notifier_template(
184 name = "ci",
185 body = io.read_file("luci-notify/email-templates/ci.template"),
186 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100187)
188
189luci.notifier(
190 name = "cron_notifier",
191 on_failure = True,
192 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200193 template = luci.notifier_template(
194 name = "cron",
195 body = io.read_file("luci-notify/email-templates/cron.template"),
196 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100197)
198
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100199# Recipe definitions:
200
201def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
202 return luci.recipe(
203 name = recipe.split("/")[-1],
204 cipd_package = pkg,
205 cipd_version = "refs/heads/master",
206 recipe = recipe,
207 )
208
209recipe("chromium_trybot")
210recipe("run_presubmit")
211recipe("webrtc/auto_roll_webrtc_deps")
212recipe("webrtc/ios")
213recipe("webrtc/ios_api_framework")
214recipe("webrtc/libfuzzer")
215recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100216recipe("webrtc/standalone")
217recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
218
219# Console definitions:
220
221luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
222luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
223luci.list_view(name = "cron", title = "Cron")
224luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
225luci.list_view(name = "try", title = "Tryserver")
226
227def add_milo(builder, views):
228 """Add Milo console entries for the builder.
229
230 Args:
231 builder: builder name (str).
232 views: dict where keys are names of consoles and values are either a
233 category for the console (str, pipe-separated) or True, which means
234 adding to a list view rather than a console.
235 """
236 for view_name, category in views.items():
237 if category == None:
238 continue
239 elif type(category) == "string":
240 category, _, short_name = category.rpartition("|")
241 luci.console_view_entry(
242 console_view = view_name,
243 builder = builder,
244 category = category or None,
245 short_name = short_name or None,
246 )
247 elif category == True:
248 luci.list_view_entry(
249 list_view = view_name,
250 builder = builder,
251 )
252 else:
253 fail("Unexpected value for category: %r" % category)
254
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200255lkgr_builders = {}
256
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100257# Builder-defining functions:
258
Artem Titarenkof6588b72019-11-14 14:28:11 +0100259def webrtc_builder(
260 name,
261 recipe = "standalone",
262 dimensions = {},
263 priority = 30,
264 execution_timeout = 2 * time.hour,
265 **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100266 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
267
268 return luci.builder(
269 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200270 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100271 dimensions = {k: v for k, v in dimensions.items() if v != None},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100272 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100273 priority = priority,
274 build_numbers = True,
275 swarming_tags = ["vpython:native-python-wrapper"],
276 **kwargs
277 )
278
279def ci_builder(
280 name,
281 ci_cat,
282 perf_cat = None,
283 fyi_cat = None,
284 properties = {},
285 dimensions = {},
286 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100287 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100288 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200289 """Add a post-submit builder.
290
291 Args:
292 name: builder name (str).
293 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
294 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
295 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
296 properties: dict of properties to pass to the recipe (on top of the default ones).
297 dimensions: dict of Swarming dimensions (strings) to search machines by.
298 prioritized: True to make this builder have a higher priority and never batch builds.
299 enabled: False to exclude this builder from consoles and failure notifications.
300 **kwargs: Pass on to webrtc_builder / luci.builder.
301 Returns:
302 A luci.builder.
303
304 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
305 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100306 if prioritized:
307 kwargs["triggering_policy"] = scheduler.greedy_batching(
308 max_batch_size = 1,
309 max_concurrent_invocations = 3,
310 )
311 kwargs["priority"] = 29
312
Oleh Prypinf5432c52019-03-19 15:10:37 +0100313 if enabled:
314 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200315 if ci_cat:
316 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100317 return webrtc_builder(
318 name = name,
319 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
320 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
321 bucket = "ci",
322 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100323 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100324 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200325 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100326 **kwargs
327 )
328
329def try_builder(
330 name,
331 try_cat = True,
332 fyi_cat = None,
333 properties = {},
334 dimensions = {},
335 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100336 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100337 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200338 """Add a pre-submit builder.
339
340 Args:
341 name: builder name (str).
342 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
343 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
344 properties: dict of properties to pass to the recipe (on top of the default ones).
345 dimensions: dict of Swarming dimensions (strings) to search machines by.
346 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 +0100347 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200348 **kwargs: Pass on to webrtc_builder / luci.builder.
349 Returns:
350 A luci.builder.
351 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100352 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
353 if cq != None:
354 luci.cq_tryjob_verifier(
355 builder = name,
356 cq_group = "cq",
357 **cq
358 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100359 if branch_cq:
360 luci.cq_tryjob_verifier(
361 builder = name,
362 cq_group = "cq_branch",
363 **cq
364 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100365
366 return webrtc_builder(
367 name = name,
368 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
369 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
370 bucket = "try",
371 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
372 **kwargs
373 )
374
375def perf_builder(
376 name,
377 perf_cat,
378 recipe = "standalone",
379 properties = {},
380 dimensions = {},
381 **kwargs):
382 add_milo(name, {"perf": perf_cat})
383 return webrtc_builder(
384 name = name,
385 recipe = recipe,
386 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
387 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
388 bucket = "perf",
389 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
390 # log_base of 1.7 means:
391 # when there are P pending builds, LUCI will batch the first B builds.
392 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
393 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
394 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100395 execution_timeout = 3 * time.hour,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100396 **kwargs
397 )
398
399def cron_builder(name, dimensions = {}, **kwargs):
400 add_milo(name, {"cron": True})
401 return webrtc_builder(
402 name = name,
403 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
404 bucket = "cron",
405 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100406 repo = WEBRTC_GIT,
407 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100408 **kwargs
409 )
410
411# Helpers:
412
413def merge_dicts(a, b):
414 """Return the result of merging two dicts.
415
416 If matching values are both dicts or both lists, they will be merged (non-recursively).
417
418 Args:
419 a: first dict.
420 b: second dict (takes priority).
421 Returns:
422 Merged dict.
423 """
424 a = dict(a)
425 for k, bv in b.items():
426 av = a.get(k)
427 if type(av) == "dict" and type(bv) == "dict":
428 a[k] = dict(av)
429 a[k].update(bv)
430 elif type(av) == "list" and type(bv) == "list":
431 a[k] = av + bv
432 else:
433 a[k] = bv
434 return a
435
436def normal_builder_factory(**common_kwargs):
437 def builder(*args, **kwargs):
438 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
439
440 def try_job(*args, **kwargs):
441 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
442
443 return builder, try_job
444
445# Mixins:
446
447linux_builder, linux_try_job = normal_builder_factory(
448 dimensions = {"os": "Linux", "inside_docker": "0"},
Mirko Bonadei1e905342020-03-04 09:39:42 +0100449 properties = GOMA_BACKEND_NON_CHROMIUM_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100450)
451
452android_builder, android_try_job = normal_builder_factory(
453 dimensions = {"os": "Linux"},
Mirko Bonadei886ee642020-03-05 08:35:10 +0100454 properties = GOMA_BACKEND_NON_CHROMIUM_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100455)
456
457win_builder, win_try_job = normal_builder_factory(
458 dimensions = {"os": "Windows"},
Patrik Höglund3916a972019-12-04 13:19:38 +0100459 properties = GOMA_BACKEND_RBE_ATS_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100460)
461
462mac_builder, mac_try_job = normal_builder_factory(
463 dimensions = {"os": "Mac"},
Mirko Bonadei75d6eca2020-03-05 08:51:25 +0100464 properties = GOMA_BACKEND_NON_CHROMIUM_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100465)
466
467ios_builder, ios_try_job = normal_builder_factory(
Patrik Höglundd5dcd0e2020-02-19 21:50:39 +0100468 dimensions = {"os": "Mac-10.14"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100469 recipe = "ios",
Patrik Höglundb681c162020-02-21 07:34:53 +0100470 properties = {"$depot_tools/osx_sdk": {"sdk_version": "11c29"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100471 caches = [swarming.cache("osx_sdk")],
472)
473
474# Actual builder configuration:
475
476android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
477android_try_job("android_compile_arm_dbg", cq = None)
478android_try_job("android_arm_dbg")
479android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
480android_try_job("android_arm_rel")
481android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
482android_try_job("android_compile_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100483perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
Patrik Höglund471570c2019-12-04 13:14:33 +0100484perf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100485android_try_job("android_compile_arm64_dbg", cq = None)
486android_try_job("android_arm64_dbg", cq = None)
487android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
488android_try_job("android_arm64_rel")
489android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Patrik Höglund471570c2019-12-04 13:14:33 +0100490perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
491perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100492android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100493android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
494android_try_job("android_compile_x64_dbg")
495android_try_job("android_compile_x64_rel", cq = None)
496android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
497android_try_job("android_compile_x86_dbg")
498android_builder("Android32 Builder x86", "Android|x86|rel")
499android_try_job("android_compile_x86_rel")
500android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
501android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100502android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100503
504ios_builder("iOS32 Debug", "iOS|arm|dbg")
505ios_try_job("ios_compile_arm_dbg")
506ios_builder("iOS32 Release", "iOS|arm|rel")
507ios_try_job("ios_compile_arm_rel")
508ios_builder("iOS64 Debug", "iOS|arm64|dbg")
509ios_try_job("ios_compile_arm64_dbg")
510ios_builder("iOS64 Release", "iOS|arm64|rel")
511ios_try_job("ios_compile_arm64_rel")
512ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
Patrik Höglund17bed672020-02-20 13:31:36 +0000513ios_try_job("ios_sim_x64_dbg_ios10")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100514ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
Patrik Höglund17bed672020-02-20 13:31:36 +0000515ios_try_job("ios_sim_x64_dbg_ios11")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100516ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Patrik Höglund17bed672020-02-20 13:31:36 +0000517ios_try_job("ios_sim_x64_dbg_ios12")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100518ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
Patrik Höglund0ce124b2020-02-21 11:50:35 +0100519ios_try_job("ios_api_framework", recipe = "ios_api_framework", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100520
521linux_builder("Linux32 Debug", "Linux|x86|dbg")
522linux_try_job("linux_x86_dbg")
523linux_builder("Linux32 Release", "Linux|x86|rel")
524linux_try_job("linux_x86_rel")
525linux_builder("Linux64 Debug", "Linux|x64|dbg")
526linux_try_job("linux_dbg", cq = None)
527linux_try_job("linux_compile_dbg")
528linux_builder("Linux64 Release", "Linux|x64|rel")
529linux_try_job("linux_rel")
530linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
531linux_try_job("linux_compile_rel")
532perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200533perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100534linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
535linux_try_job("linux_compile_arm_dbg")
536linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
537linux_try_job("linux_compile_arm_rel")
538linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
539linux_try_job("linux_compile_arm64_dbg")
540linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
541linux_try_job("linux_compile_arm64_rel")
542linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
543linux_try_job("linux_compile_gcc_rel")
544linux_builder("Linux Asan", "Linux|x64|asan")
545linux_try_job("linux_asan")
546linux_builder("Linux MSan", "Linux|x64|msan")
547linux_try_job("linux_msan")
548linux_builder("Linux Tsan v2", "Linux|x64|tsan")
549linux_try_job("linux_tsan2")
550linux_builder("Linux UBSan", "Linux|x64|ubsan")
551linux_try_job("linux_ubsan")
552linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
553linux_try_job("linux_ubsan_vptr")
554linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
555linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
556linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
557linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100558linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100559linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100560
561mac_builder("Mac64 Debug", "Mac|x64|dbg")
562mac_try_job("mac_dbg", cq = None)
563mac_try_job("mac_compile_dbg")
564mac_builder("Mac64 Release", "Mac|x64|rel")
565mac_try_job("mac_rel")
566mac_try_job("mac_compile_rel", cq = None)
567mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
568perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
569mac_builder("Mac Asan", "Mac|x64|asan")
570mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100571mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100572
573win_builder("Win32 Debug", "Win MSVC|x86|dbg")
574win_try_job("win_x86_msvc_dbg")
575win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000576win_builder("Win32 Release", "Win MSVC|x86|rel")
577win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100578win_try_job("win_compile_x86_msvc_rel", cq = None)
579win_builder("Win64 Debug", "Win MSVC|x64|dbg")
580win_try_job("win_x64_msvc_dbg")
581win_try_job("win_compile_x64_msvc_dbg", cq = None)
582win_builder("Win64 Release", "Win MSVC|x64|rel")
583win_try_job("win_x64_msvc_rel")
584win_try_job("win_compile_x64_msvc_rel", cq = None)
585win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
586win_try_job("win_x86_clang_dbg", cq = None)
587win_try_job("win_compile_x86_clang_dbg")
588win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
589win_try_job("win_x86_clang_rel")
590win_try_job("win_compile_x86_clang_rel", cq = None)
591win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
592perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
593win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
594win_try_job("win_x64_clang_dbg", cq = None)
595win_try_job("win_x64_clang_dbg_win8", cq = None)
596win_try_job("win_x64_clang_dbg_win10", cq = None)
597win_try_job("win_compile_x64_clang_dbg")
598win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
599win_try_job("win_x64_clang_rel", cq = None)
600win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200601win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100602win_try_job("win_asan")
603win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
604win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
605win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
606win_try_job("win_x86_more_configs", recipe = "more_configs")
Patrik Höglund39534612019-12-09 14:46:41 +0100607win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Patrik Höglundfe350452019-12-10 11:33:53 +0100608win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100609
610linux_try_job(
611 "presubmit",
612 recipe = "run_presubmit",
613 properties = {"repo_name": "webrtc", "runhooks": True},
614 priority = 28,
615 cq = {"disable_reuse": True},
616)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100617
618cron_builder(
619 "Auto-roll - WebRTC DEPS",
620 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200621 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100622)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200623
624lkgr_config = {
625 "project": "webrtc",
626 "source_url": WEBRTC_GIT,
627 "status_url": "https://webrtc-status.appspot.com",
628 "allowed_lag": 300, # hours
629 "allowed_gap": 12, # commits behind
630 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200631 "buckets": {
632 "webrtc/ci": {
633 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200634 "builders": sorted(lkgr_builders),
635 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200636 "chromium/webrtc.fyi": {
637 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200638 "builders": [
639 "WebRTC Chromium FYI Android Builder (dbg)",
640 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
641 "WebRTC Chromium FYI Android Builder",
642 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
643 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
644 "WebRTC Chromium FYI Linux Builder (dbg)",
645 "WebRTC Chromium FYI Linux Builder",
646 "WebRTC Chromium FYI Linux Tester",
647 "WebRTC Chromium FYI Mac Builder (dbg)",
648 "WebRTC Chromium FYI Mac Builder",
649 "WebRTC Chromium FYI Mac Tester",
650 "WebRTC Chromium FYI Win Builder (dbg)",
651 "WebRTC Chromium FYI Win Builder",
652 "WebRTC Chromium FYI Win10 Tester",
653 "WebRTC Chromium FYI Win7 Tester",
654 "WebRTC Chromium FYI Win8 Tester",
655 "WebRTC Chromium FYI ios-device",
Mirko Bonadei37071f62020-02-15 10:42:49 +0100656 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200657 ],
658 },
659 },
660}
661
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100662cron_builder(
663 "WebRTC lkgr finder",
664 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200665 properties = {
666 "project": "webrtc",
667 "repo": WEBRTC_GIT,
668 "ref": "refs/heads/lkgr",
669 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
670 "config": lkgr_config,
671 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100672 schedule = "*/10 * * * *", # Every 10 minutes.
673)