blob: 628cf8deb54bbb11dd5ac0605624bc54034398fa [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
Patrik Höglund3916a972019-12-04 13:19:38 +010019GOMA_BACKEND_RBE_ATS_PROD = {
20 "$build/goma": {
21 "server_host": "goma.chromium.org",
22 "rpc_extra_params": "?prod",
23 "enable_ats": True
24 }
25}
26
Oleh Prypin1a0593f2019-03-11 09:43:28 +010027# Top-level configs:
28
29lucicfg.config(
30 config_dir = ".",
31 tracked_files = [
32 "commit-queue.cfg",
33 "cr-buildbucket.cfg",
34 "luci-logdog.cfg",
35 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010036 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020037 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010038 "luci-scheduler.cfg",
39 "project.cfg",
40 ],
41)
42
43luci.project(
44 name = "webrtc",
45 buildbucket = "cr-buildbucket.appspot.com",
46 logdog = "luci-logdog.appspot.com",
47 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010048 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010049 scheduler = "luci-scheduler.appspot.com",
50 swarming = "chromium-swarm.appspot.com",
51 acls = [
52 acl.entry(
53 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
54 groups = ["all"],
55 ),
56 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
57 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
58 ],
59)
60
61luci.logdog(
62 gs_bucket = "chromium-luci-logdog",
63)
64
65luci.milo(
66 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
67)
68
69luci.cq(
70 status_host = "chromium-cq-status.appspot.com",
71 submit_max_burst = 1,
72 submit_burst_delay = 1 * time.minute,
73)
74
75luci.gitiles_poller(
76 name = "webrtc-gitiles-trigger-master",
77 bucket = "ci",
78 repo = WEBRTC_GIT,
79)
80
81# Bucket definitions:
82
83luci.bucket(
84 name = "try",
85 acls = [
86 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
87 "service-account-cq",
88 "project-webrtc-tryjob-access",
89 ]),
90 ],
91)
92
93luci.bucket(
94 name = "ci",
95 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +020096 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
97 "project-webrtc-ci-schedulers",
98 ], users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +010099 "luci-scheduler@appspot.gserviceaccount.com",
100 ]),
101 ],
102)
103
104luci.bucket(
105 name = "perf",
106 acls = [
107 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
108 "luci-scheduler@appspot.gserviceaccount.com",
109 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
110 ]),
111 ],
112)
113
114luci.bucket(
115 name = "cron",
116 acls = [
117 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
118 "luci-scheduler@appspot.gserviceaccount.com",
119 ]),
120 ],
121)
122
123# Commit queue definitions:
124
125luci.cq_group(
126 name = "cq",
127 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100128 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100129 acls = [
130 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
131 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
132 ],
133 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200134 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100135)
136
137luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100138 name = "cq_branch",
139 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
140 acls = [
141 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
142 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
143 ],
144 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200145 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100146)
147
148luci.cq_group(
149 name = "cq_infra",
150 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100151 acls = [
152 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
153 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
154 ],
155 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200156 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100157)
158
159luci.cq_tryjob_verifier(
160 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100161 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100162)
163
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200164luci.cq_tryjob_verifier(
165 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
166 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
167 cq_group = "cq",
168)
169
Oleh Prypin71d17422019-03-28 08:43:16 +0100170# Notifier definitions:
171
172luci.notifier(
173 name = "ci_notifier",
174 on_failure = True,
175 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200176 template = luci.notifier_template(
177 name = "ci",
178 body = io.read_file("luci-notify/email-templates/ci.template"),
179 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100180)
181
182luci.notifier(
183 name = "cron_notifier",
184 on_failure = True,
185 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200186 template = luci.notifier_template(
187 name = "cron",
188 body = io.read_file("luci-notify/email-templates/cron.template"),
189 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100190)
191
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100192# Recipe definitions:
193
194def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
195 return luci.recipe(
196 name = recipe.split("/")[-1],
197 cipd_package = pkg,
198 cipd_version = "refs/heads/master",
199 recipe = recipe,
200 )
201
202recipe("chromium_trybot")
203recipe("run_presubmit")
204recipe("webrtc/auto_roll_webrtc_deps")
205recipe("webrtc/ios")
206recipe("webrtc/ios_api_framework")
207recipe("webrtc/libfuzzer")
208recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100209recipe("webrtc/standalone")
210recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
211
212# Console definitions:
213
214luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
215luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
216luci.list_view(name = "cron", title = "Cron")
217luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
218luci.list_view(name = "try", title = "Tryserver")
219
220def add_milo(builder, views):
221 """Add Milo console entries for the builder.
222
223 Args:
224 builder: builder name (str).
225 views: dict where keys are names of consoles and values are either a
226 category for the console (str, pipe-separated) or True, which means
227 adding to a list view rather than a console.
228 """
229 for view_name, category in views.items():
230 if category == None:
231 continue
232 elif type(category) == "string":
233 category, _, short_name = category.rpartition("|")
234 luci.console_view_entry(
235 console_view = view_name,
236 builder = builder,
237 category = category or None,
238 short_name = short_name or None,
239 )
240 elif category == True:
241 luci.list_view_entry(
242 list_view = view_name,
243 builder = builder,
244 )
245 else:
246 fail("Unexpected value for category: %r" % category)
247
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200248lkgr_builders = {}
249
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100250# Builder-defining functions:
251
Artem Titarenkof6588b72019-11-14 14:28:11 +0100252def webrtc_builder(
253 name,
254 recipe = "standalone",
255 dimensions = {},
256 priority = 30,
257 execution_timeout = 2 * time.hour,
258 **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100259 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
260
261 return luci.builder(
262 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200263 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100264 dimensions = {k: v for k, v in dimensions.items() if v != None},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100265 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100266 priority = priority,
267 build_numbers = True,
268 swarming_tags = ["vpython:native-python-wrapper"],
269 **kwargs
270 )
271
272def ci_builder(
273 name,
274 ci_cat,
275 perf_cat = None,
276 fyi_cat = None,
277 properties = {},
278 dimensions = {},
279 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100280 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100281 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200282 """Add a post-submit builder.
283
284 Args:
285 name: builder name (str).
286 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
287 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
288 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
289 properties: dict of properties to pass to the recipe (on top of the default ones).
290 dimensions: dict of Swarming dimensions (strings) to search machines by.
291 prioritized: True to make this builder have a higher priority and never batch builds.
292 enabled: False to exclude this builder from consoles and failure notifications.
293 **kwargs: Pass on to webrtc_builder / luci.builder.
294 Returns:
295 A luci.builder.
296
297 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
298 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100299 if prioritized:
300 kwargs["triggering_policy"] = scheduler.greedy_batching(
301 max_batch_size = 1,
302 max_concurrent_invocations = 3,
303 )
304 kwargs["priority"] = 29
305
Oleh Prypinf5432c52019-03-19 15:10:37 +0100306 if enabled:
307 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200308 if ci_cat:
309 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100310 return webrtc_builder(
311 name = name,
312 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
313 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
314 bucket = "ci",
315 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100316 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100317 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200318 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100319 **kwargs
320 )
321
322def try_builder(
323 name,
324 try_cat = True,
325 fyi_cat = None,
326 properties = {},
327 dimensions = {},
328 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100329 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100330 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200331 """Add a pre-submit builder.
332
333 Args:
334 name: builder name (str).
335 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
336 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
337 properties: dict of properties to pass to the recipe (on top of the default ones).
338 dimensions: dict of Swarming dimensions (strings) to search machines by.
339 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 +0100340 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200341 **kwargs: Pass on to webrtc_builder / luci.builder.
342 Returns:
343 A luci.builder.
344 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100345 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
346 if cq != None:
347 luci.cq_tryjob_verifier(
348 builder = name,
349 cq_group = "cq",
350 **cq
351 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100352 if branch_cq:
353 luci.cq_tryjob_verifier(
354 builder = name,
355 cq_group = "cq_branch",
356 **cq
357 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100358
359 return webrtc_builder(
360 name = name,
361 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
362 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
363 bucket = "try",
364 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
365 **kwargs
366 )
367
368def perf_builder(
369 name,
370 perf_cat,
371 recipe = "standalone",
372 properties = {},
373 dimensions = {},
374 **kwargs):
375 add_milo(name, {"perf": perf_cat})
376 return webrtc_builder(
377 name = name,
378 recipe = recipe,
379 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
380 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
381 bucket = "perf",
382 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
383 # log_base of 1.7 means:
384 # when there are P pending builds, LUCI will batch the first B builds.
385 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
386 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
387 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100388 execution_timeout = 3 * time.hour,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100389 **kwargs
390 )
391
392def cron_builder(name, dimensions = {}, **kwargs):
393 add_milo(name, {"cron": True})
394 return webrtc_builder(
395 name = name,
396 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
397 bucket = "cron",
398 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100399 repo = WEBRTC_GIT,
400 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100401 **kwargs
402 )
403
404# Helpers:
405
406def merge_dicts(a, b):
407 """Return the result of merging two dicts.
408
409 If matching values are both dicts or both lists, they will be merged (non-recursively).
410
411 Args:
412 a: first dict.
413 b: second dict (takes priority).
414 Returns:
415 Merged dict.
416 """
417 a = dict(a)
418 for k, bv in b.items():
419 av = a.get(k)
420 if type(av) == "dict" and type(bv) == "dict":
421 a[k] = dict(av)
422 a[k].update(bv)
423 elif type(av) == "list" and type(bv) == "list":
424 a[k] = av + bv
425 else:
426 a[k] = bv
427 return a
428
429def normal_builder_factory(**common_kwargs):
430 def builder(*args, **kwargs):
431 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
432
433 def try_job(*args, **kwargs):
434 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
435
436 return builder, try_job
437
438# Mixins:
439
440linux_builder, linux_try_job = normal_builder_factory(
441 dimensions = {"os": "Linux", "inside_docker": "0"},
Patrik Höglund90f77b92019-11-27 11:52:40 +0100442 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100443)
444
445android_builder, android_try_job = normal_builder_factory(
446 dimensions = {"os": "Linux"},
Patrik Höglund90f77b92019-11-27 11:52:40 +0100447 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100448)
449
450win_builder, win_try_job = normal_builder_factory(
451 dimensions = {"os": "Windows"},
Patrik Höglund3916a972019-12-04 13:19:38 +0100452 properties = GOMA_BACKEND_RBE_ATS_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100453)
454
455mac_builder, mac_try_job = normal_builder_factory(
456 dimensions = {"os": "Mac"},
Patrik Höglund69bed3e2019-11-26 10:40:01 +0100457 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100458)
459
460ios_builder, ios_try_job = normal_builder_factory(
Patrik Höglundd5dcd0e2020-02-19 21:50:39 +0100461 dimensions = {"os": "Mac-10.14"},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100462 recipe = "ios",
Artem Titov13813942019-12-02 18:26:17 +0100463 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10b61"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100464 caches = [swarming.cache("osx_sdk")],
465)
466
467# Actual builder configuration:
468
469android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
470android_try_job("android_compile_arm_dbg", cq = None)
471android_try_job("android_arm_dbg")
472android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
473android_try_job("android_arm_rel")
474android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
475android_try_job("android_compile_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100476perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
Patrik Höglund471570c2019-12-04 13:14:33 +0100477perf_builder("Perf Android32 (M AOSP Nexus6)", "Android|arm|Tester|M AOSP Nexus6", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100478android_try_job("android_compile_arm64_dbg", cq = None)
479android_try_job("android_arm64_dbg", cq = None)
480android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
481android_try_job("android_arm64_rel")
482android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
Patrik Höglund471570c2019-12-04 13:14:33 +0100483perf_builder("Perf Android64 (M Nexus5X)", "Android|arm64|Tester|M Nexus5X", triggered_by = ["Android64 Builder arm64"])
484perf_builder("Perf Android64 (O Pixel2)", "Android|arm64|Tester|O Pixel2", triggered_by = ["Android64 Builder arm64"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100485android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100486android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
487android_try_job("android_compile_x64_dbg")
488android_try_job("android_compile_x64_rel", cq = None)
489android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
490android_try_job("android_compile_x86_dbg")
491android_builder("Android32 Builder x86", "Android|x86|rel")
492android_try_job("android_compile_x86_rel")
493android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
494android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100495android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100496
497ios_builder("iOS32 Debug", "iOS|arm|dbg")
498ios_try_job("ios_compile_arm_dbg")
499ios_builder("iOS32 Release", "iOS|arm|rel")
500ios_try_job("ios_compile_arm_rel")
501ios_builder("iOS64 Debug", "iOS|arm64|dbg")
502ios_try_job("ios_compile_arm64_dbg")
503ios_builder("iOS64 Release", "iOS|arm64|rel")
504ios_try_job("ios_compile_arm64_rel")
505ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
Patrik Höglund1d262402020-02-20 07:34:14 +0100506ios_try_job("ios_sim_x64_dbg_ios10", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100507ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
Patrik Höglund1d262402020-02-20 07:34:14 +0100508ios_try_job("ios_sim_x64_dbg_ios11", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100509ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
Patrik Höglund1d262402020-02-20 07:34:14 +0100510ios_try_job("ios_sim_x64_dbg_ios12", cq=None)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100511ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
512ios_try_job("ios_api_framework", recipe = "ios_api_framework")
513
514linux_builder("Linux32 Debug", "Linux|x86|dbg")
515linux_try_job("linux_x86_dbg")
516linux_builder("Linux32 Release", "Linux|x86|rel")
517linux_try_job("linux_x86_rel")
518linux_builder("Linux64 Debug", "Linux|x64|dbg")
519linux_try_job("linux_dbg", cq = None)
520linux_try_job("linux_compile_dbg")
521linux_builder("Linux64 Release", "Linux|x64|rel")
522linux_try_job("linux_rel")
523linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
524linux_try_job("linux_compile_rel")
525perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200526perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100527linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
528linux_try_job("linux_compile_arm_dbg")
529linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
530linux_try_job("linux_compile_arm_rel")
531linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
532linux_try_job("linux_compile_arm64_dbg")
533linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
534linux_try_job("linux_compile_arm64_rel")
535linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
536linux_try_job("linux_compile_gcc_rel")
537linux_builder("Linux Asan", "Linux|x64|asan")
538linux_try_job("linux_asan")
539linux_builder("Linux MSan", "Linux|x64|msan")
540linux_try_job("linux_msan")
541linux_builder("Linux Tsan v2", "Linux|x64|tsan")
542linux_try_job("linux_tsan2")
543linux_builder("Linux UBSan", "Linux|x64|ubsan")
544linux_try_job("linux_ubsan")
545linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
546linux_try_job("linux_ubsan_vptr")
547linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
548linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
549linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
550linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100551linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100552linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100553
554mac_builder("Mac64 Debug", "Mac|x64|dbg")
555mac_try_job("mac_dbg", cq = None)
556mac_try_job("mac_compile_dbg")
557mac_builder("Mac64 Release", "Mac|x64|rel")
558mac_try_job("mac_rel")
559mac_try_job("mac_compile_rel", cq = None)
560mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
561perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
562mac_builder("Mac Asan", "Mac|x64|asan")
563mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100564mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100565
566win_builder("Win32 Debug", "Win MSVC|x86|dbg")
567win_try_job("win_x86_msvc_dbg")
568win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000569win_builder("Win32 Release", "Win MSVC|x86|rel")
570win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100571win_try_job("win_compile_x86_msvc_rel", cq = None)
572win_builder("Win64 Debug", "Win MSVC|x64|dbg")
573win_try_job("win_x64_msvc_dbg")
574win_try_job("win_compile_x64_msvc_dbg", cq = None)
575win_builder("Win64 Release", "Win MSVC|x64|rel")
576win_try_job("win_x64_msvc_rel")
577win_try_job("win_compile_x64_msvc_rel", cq = None)
578win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
579win_try_job("win_x86_clang_dbg", cq = None)
580win_try_job("win_compile_x86_clang_dbg")
581win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
582win_try_job("win_x86_clang_rel")
583win_try_job("win_compile_x86_clang_rel", cq = None)
584win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
585perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
586win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
587win_try_job("win_x64_clang_dbg", cq = None)
588win_try_job("win_x64_clang_dbg_win8", cq = None)
589win_try_job("win_x64_clang_dbg_win10", cq = None)
590win_try_job("win_compile_x64_clang_dbg")
591win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
592win_try_job("win_x64_clang_rel", cq = None)
593win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200594win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100595win_try_job("win_asan")
596win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
597win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
598win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
599win_try_job("win_x86_more_configs", recipe = "more_configs")
Patrik Höglund39534612019-12-09 14:46:41 +0100600win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Patrik Höglundfe350452019-12-10 11:33:53 +0100601win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100602
603linux_try_job(
604 "presubmit",
605 recipe = "run_presubmit",
606 properties = {"repo_name": "webrtc", "runhooks": True},
607 priority = 28,
608 cq = {"disable_reuse": True},
609)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100610
611cron_builder(
612 "Auto-roll - WebRTC DEPS",
613 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200614 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100615)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200616
617lkgr_config = {
618 "project": "webrtc",
619 "source_url": WEBRTC_GIT,
620 "status_url": "https://webrtc-status.appspot.com",
621 "allowed_lag": 300, # hours
622 "allowed_gap": 12, # commits behind
623 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200624 "buckets": {
625 "webrtc/ci": {
626 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200627 "builders": sorted(lkgr_builders),
628 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200629 "chromium/webrtc.fyi": {
630 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200631 "builders": [
632 "WebRTC Chromium FYI Android Builder (dbg)",
633 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
634 "WebRTC Chromium FYI Android Builder",
635 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
636 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
637 "WebRTC Chromium FYI Linux Builder (dbg)",
638 "WebRTC Chromium FYI Linux Builder",
639 "WebRTC Chromium FYI Linux Tester",
640 "WebRTC Chromium FYI Mac Builder (dbg)",
641 "WebRTC Chromium FYI Mac Builder",
642 "WebRTC Chromium FYI Mac Tester",
643 "WebRTC Chromium FYI Win Builder (dbg)",
644 "WebRTC Chromium FYI Win Builder",
645 "WebRTC Chromium FYI Win10 Tester",
646 "WebRTC Chromium FYI Win7 Tester",
647 "WebRTC Chromium FYI Win8 Tester",
648 "WebRTC Chromium FYI ios-device",
Mirko Bonadei37071f62020-02-15 10:42:49 +0100649 "WebRTC Chromium FYI ios-simulator",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200650 ],
651 },
652 },
653}
654
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100655cron_builder(
656 "WebRTC lkgr finder",
657 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200658 properties = {
659 "project": "webrtc",
660 "repo": WEBRTC_GIT,
661 "ref": "refs/heads/lkgr",
662 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
663 "config": lkgr_config,
664 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100665 schedule = "*/10 * * * *", # Every 10 minutes.
666)