blob: 358a883e61400fa904b19ed9158d4ca20a48678e [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
Oleh Prypin1a0593f2019-03-11 09:43:28 +010019# Top-level configs:
20
21lucicfg.config(
22 config_dir = ".",
23 tracked_files = [
24 "commit-queue.cfg",
25 "cr-buildbucket.cfg",
26 "luci-logdog.cfg",
27 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010028 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020029 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010030 "luci-scheduler.cfg",
31 "project.cfg",
32 ],
33)
34
35luci.project(
36 name = "webrtc",
37 buildbucket = "cr-buildbucket.appspot.com",
38 logdog = "luci-logdog.appspot.com",
39 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010040 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010041 scheduler = "luci-scheduler.appspot.com",
42 swarming = "chromium-swarm.appspot.com",
43 acls = [
44 acl.entry(
45 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
46 groups = ["all"],
47 ),
48 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
49 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
50 ],
51)
52
53luci.logdog(
54 gs_bucket = "chromium-luci-logdog",
55)
56
57luci.milo(
58 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
59)
60
61luci.cq(
62 status_host = "chromium-cq-status.appspot.com",
63 submit_max_burst = 1,
64 submit_burst_delay = 1 * time.minute,
65)
66
67luci.gitiles_poller(
68 name = "webrtc-gitiles-trigger-master",
69 bucket = "ci",
70 repo = WEBRTC_GIT,
71)
72
73# Bucket definitions:
74
75luci.bucket(
76 name = "try",
77 acls = [
78 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
79 "service-account-cq",
80 "project-webrtc-tryjob-access",
81 ]),
82 ],
83)
84
85luci.bucket(
86 name = "ci",
87 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +020088 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
89 "project-webrtc-ci-schedulers",
90 ], users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +010091 "luci-scheduler@appspot.gserviceaccount.com",
92 ]),
93 ],
94)
95
96luci.bucket(
97 name = "perf",
98 acls = [
99 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
100 "luci-scheduler@appspot.gserviceaccount.com",
101 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
102 ]),
103 ],
104)
105
106luci.bucket(
107 name = "cron",
108 acls = [
109 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
110 "luci-scheduler@appspot.gserviceaccount.com",
111 ]),
112 ],
113)
114
115# Commit queue definitions:
116
117luci.cq_group(
118 name = "cq",
119 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100120 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100121 acls = [
122 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
123 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
124 ],
125 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200126 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100127)
128
129luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100130 name = "cq_branch",
131 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
132 acls = [
133 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
134 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
135 ],
136 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200137 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100138)
139
140luci.cq_group(
141 name = "cq_infra",
142 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100143 acls = [
144 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
145 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
146 ],
147 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200148 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100149)
150
151luci.cq_tryjob_verifier(
152 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100153 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100154)
155
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200156luci.cq_tryjob_verifier(
157 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
158 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
159 cq_group = "cq",
160)
161
Oleh Prypin71d17422019-03-28 08:43:16 +0100162# Notifier definitions:
163
164luci.notifier(
165 name = "ci_notifier",
166 on_failure = True,
167 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200168 template = luci.notifier_template(
169 name = "ci",
170 body = io.read_file("luci-notify/email-templates/ci.template"),
171 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100172)
173
174luci.notifier(
175 name = "cron_notifier",
176 on_failure = True,
177 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200178 template = luci.notifier_template(
179 name = "cron",
180 body = io.read_file("luci-notify/email-templates/cron.template"),
181 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100182)
183
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100184# Recipe definitions:
185
186def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
187 return luci.recipe(
188 name = recipe.split("/")[-1],
189 cipd_package = pkg,
190 cipd_version = "refs/heads/master",
191 recipe = recipe,
192 )
193
194recipe("chromium_trybot")
195recipe("run_presubmit")
196recipe("webrtc/auto_roll_webrtc_deps")
197recipe("webrtc/ios")
198recipe("webrtc/ios_api_framework")
199recipe("webrtc/libfuzzer")
200recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100201recipe("webrtc/standalone")
202recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
203
204# Console definitions:
205
206luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
207luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
208luci.list_view(name = "cron", title = "Cron")
209luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
210luci.list_view(name = "try", title = "Tryserver")
211
212def add_milo(builder, views):
213 """Add Milo console entries for the builder.
214
215 Args:
216 builder: builder name (str).
217 views: dict where keys are names of consoles and values are either a
218 category for the console (str, pipe-separated) or True, which means
219 adding to a list view rather than a console.
220 """
221 for view_name, category in views.items():
222 if category == None:
223 continue
224 elif type(category) == "string":
225 category, _, short_name = category.rpartition("|")
226 luci.console_view_entry(
227 console_view = view_name,
228 builder = builder,
229 category = category or None,
230 short_name = short_name or None,
231 )
232 elif category == True:
233 luci.list_view_entry(
234 list_view = view_name,
235 builder = builder,
236 )
237 else:
238 fail("Unexpected value for category: %r" % category)
239
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200240lkgr_builders = {}
241
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100242# Builder-defining functions:
243
Artem Titarenkof6588b72019-11-14 14:28:11 +0100244def webrtc_builder(
245 name,
246 recipe = "standalone",
247 dimensions = {},
248 priority = 30,
249 execution_timeout = 2 * time.hour,
250 **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100251 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
252
253 return luci.builder(
254 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200255 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100256 dimensions = {k: v for k, v in dimensions.items() if v != None},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100257 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100258 priority = priority,
259 build_numbers = True,
260 swarming_tags = ["vpython:native-python-wrapper"],
261 **kwargs
262 )
263
264def ci_builder(
265 name,
266 ci_cat,
267 perf_cat = None,
268 fyi_cat = None,
269 properties = {},
270 dimensions = {},
271 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100272 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100273 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200274 """Add a post-submit builder.
275
276 Args:
277 name: builder name (str).
278 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
279 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
280 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
281 properties: dict of properties to pass to the recipe (on top of the default ones).
282 dimensions: dict of Swarming dimensions (strings) to search machines by.
283 prioritized: True to make this builder have a higher priority and never batch builds.
284 enabled: False to exclude this builder from consoles and failure notifications.
285 **kwargs: Pass on to webrtc_builder / luci.builder.
286 Returns:
287 A luci.builder.
288
289 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
290 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100291 if prioritized:
292 kwargs["triggering_policy"] = scheduler.greedy_batching(
293 max_batch_size = 1,
294 max_concurrent_invocations = 3,
295 )
296 kwargs["priority"] = 29
297
Oleh Prypinf5432c52019-03-19 15:10:37 +0100298 if enabled:
299 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200300 if ci_cat:
301 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100302 return webrtc_builder(
303 name = name,
304 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
305 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
306 bucket = "ci",
307 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100308 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100309 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200310 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100311 **kwargs
312 )
313
314def try_builder(
315 name,
316 try_cat = True,
317 fyi_cat = None,
318 properties = {},
319 dimensions = {},
320 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100321 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100322 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200323 """Add a pre-submit builder.
324
325 Args:
326 name: builder name (str).
327 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
328 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
329 properties: dict of properties to pass to the recipe (on top of the default ones).
330 dimensions: dict of Swarming dimensions (strings) to search machines by.
331 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 +0100332 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200333 **kwargs: Pass on to webrtc_builder / luci.builder.
334 Returns:
335 A luci.builder.
336 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100337 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
338 if cq != None:
339 luci.cq_tryjob_verifier(
340 builder = name,
341 cq_group = "cq",
342 **cq
343 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100344 if branch_cq:
345 luci.cq_tryjob_verifier(
346 builder = name,
347 cq_group = "cq_branch",
348 **cq
349 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100350
351 return webrtc_builder(
352 name = name,
353 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
354 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
355 bucket = "try",
356 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
357 **kwargs
358 )
359
360def perf_builder(
361 name,
362 perf_cat,
363 recipe = "standalone",
364 properties = {},
365 dimensions = {},
366 **kwargs):
367 add_milo(name, {"perf": perf_cat})
368 return webrtc_builder(
369 name = name,
370 recipe = recipe,
371 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
372 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
373 bucket = "perf",
374 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
375 # log_base of 1.7 means:
376 # when there are P pending builds, LUCI will batch the first B builds.
377 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
378 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
379 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100380 execution_timeout = 3 * time.hour,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100381 **kwargs
382 )
383
384def cron_builder(name, dimensions = {}, **kwargs):
385 add_milo(name, {"cron": True})
386 return webrtc_builder(
387 name = name,
388 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
389 bucket = "cron",
390 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100391 repo = WEBRTC_GIT,
392 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100393 **kwargs
394 )
395
396# Helpers:
397
398def merge_dicts(a, b):
399 """Return the result of merging two dicts.
400
401 If matching values are both dicts or both lists, they will be merged (non-recursively).
402
403 Args:
404 a: first dict.
405 b: second dict (takes priority).
406 Returns:
407 Merged dict.
408 """
409 a = dict(a)
410 for k, bv in b.items():
411 av = a.get(k)
412 if type(av) == "dict" and type(bv) == "dict":
413 a[k] = dict(av)
414 a[k].update(bv)
415 elif type(av) == "list" and type(bv) == "list":
416 a[k] = av + bv
417 else:
418 a[k] = bv
419 return a
420
421def normal_builder_factory(**common_kwargs):
422 def builder(*args, **kwargs):
423 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
424
425 def try_job(*args, **kwargs):
426 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
427
428 return builder, try_job
429
430# Mixins:
431
432linux_builder, linux_try_job = normal_builder_factory(
433 dimensions = {"os": "Linux", "inside_docker": "0"},
Patrik Höglund90f77b92019-11-27 11:52:40 +0100434 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100435)
436
437android_builder, android_try_job = normal_builder_factory(
438 dimensions = {"os": "Linux"},
Patrik Höglund90f77b92019-11-27 11:52:40 +0100439 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100440)
441
442win_builder, win_try_job = normal_builder_factory(
443 dimensions = {"os": "Windows"},
444)
445
446mac_builder, mac_try_job = normal_builder_factory(
447 dimensions = {"os": "Mac"},
Patrik Höglund69bed3e2019-11-26 10:40:01 +0100448 properties = GOMA_BACKEND_RBE_PROD,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100449)
450
451ios_builder, ios_try_job = normal_builder_factory(
452 dimensions = {"os": "Mac-10.13"},
453 recipe = "ios",
Artem Titov13813942019-12-02 18:26:17 +0100454 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10b61"}},
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100455 caches = [swarming.cache("osx_sdk")],
456)
457
458# Actual builder configuration:
459
460android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
461android_try_job("android_compile_arm_dbg", cq = None)
462android_try_job("android_arm_dbg")
463android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
464android_try_job("android_arm_rel")
465android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
466android_try_job("android_compile_arm_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100467perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
468perf_builder("Perf Android32 (L Nexus5)", "Android|arm|Tester|L Nexus5", triggered_by = ["Android32 Builder arm"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100469android_try_job("android_compile_arm64_dbg", cq = None)
470android_try_job("android_arm64_dbg", cq = None)
471android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
472android_try_job("android_arm64_rel")
473android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
474android_try_job("android_compile_arm64_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100475android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
476android_try_job("android_compile_x64_dbg")
477android_try_job("android_compile_x64_rel", cq = None)
478android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
479android_try_job("android_compile_x86_dbg")
480android_builder("Android32 Builder x86", "Android|x86|rel")
481android_try_job("android_compile_x86_rel")
482android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
483android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100484android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100485
486ios_builder("iOS32 Debug", "iOS|arm|dbg")
487ios_try_job("ios_compile_arm_dbg")
488ios_builder("iOS32 Release", "iOS|arm|rel")
489ios_try_job("ios_compile_arm_rel")
490ios_builder("iOS64 Debug", "iOS|arm64|dbg")
491ios_try_job("ios_compile_arm64_dbg")
492ios_builder("iOS64 Release", "iOS|arm64|rel")
493ios_try_job("ios_compile_arm64_rel")
494ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
495ios_try_job("ios_sim_x64_dbg_ios10")
496ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
497ios_try_job("ios_sim_x64_dbg_ios11")
498ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
499ios_try_job("ios_sim_x64_dbg_ios12")
500ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
501ios_try_job("ios_api_framework", recipe = "ios_api_framework")
502
503linux_builder("Linux32 Debug", "Linux|x86|dbg")
504linux_try_job("linux_x86_dbg")
505linux_builder("Linux32 Release", "Linux|x86|rel")
506linux_try_job("linux_x86_rel")
507linux_builder("Linux64 Debug", "Linux|x64|dbg")
508linux_try_job("linux_dbg", cq = None)
509linux_try_job("linux_compile_dbg")
510linux_builder("Linux64 Release", "Linux|x64|rel")
511linux_try_job("linux_rel")
512linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
513linux_try_job("linux_compile_rel")
514perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200515perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100516linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
517linux_try_job("linux_compile_arm_dbg")
518linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
519linux_try_job("linux_compile_arm_rel")
520linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
521linux_try_job("linux_compile_arm64_dbg")
522linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
523linux_try_job("linux_compile_arm64_rel")
524linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
525linux_try_job("linux_compile_gcc_rel")
526linux_builder("Linux Asan", "Linux|x64|asan")
527linux_try_job("linux_asan")
528linux_builder("Linux MSan", "Linux|x64|msan")
529linux_try_job("linux_msan")
530linux_builder("Linux Tsan v2", "Linux|x64|tsan")
531linux_try_job("linux_tsan2")
532linux_builder("Linux UBSan", "Linux|x64|ubsan")
533linux_try_job("linux_ubsan")
534linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
535linux_try_job("linux_ubsan_vptr")
536linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
537linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
538linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
539linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100540linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100541linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100542
543mac_builder("Mac64 Debug", "Mac|x64|dbg")
544mac_try_job("mac_dbg", cq = None)
545mac_try_job("mac_compile_dbg")
546mac_builder("Mac64 Release", "Mac|x64|rel")
547mac_try_job("mac_rel")
548mac_try_job("mac_compile_rel", cq = None)
549mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
550perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
551mac_builder("Mac Asan", "Mac|x64|asan")
552mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100553mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100554
555win_builder("Win32 Debug", "Win MSVC|x86|dbg")
556win_try_job("win_x86_msvc_dbg")
557win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000558win_builder("Win32 Release", "Win MSVC|x86|rel")
559win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100560win_try_job("win_compile_x86_msvc_rel", cq = None)
561win_builder("Win64 Debug", "Win MSVC|x64|dbg")
562win_try_job("win_x64_msvc_dbg")
563win_try_job("win_compile_x64_msvc_dbg", cq = None)
564win_builder("Win64 Release", "Win MSVC|x64|rel")
565win_try_job("win_x64_msvc_rel")
566win_try_job("win_compile_x64_msvc_rel", cq = None)
567win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
568win_try_job("win_x86_clang_dbg", cq = None)
569win_try_job("win_compile_x86_clang_dbg")
570win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
571win_try_job("win_x86_clang_rel")
572win_try_job("win_compile_x86_clang_rel", cq = None)
573win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
574perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
575win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
576win_try_job("win_x64_clang_dbg", cq = None)
577win_try_job("win_x64_clang_dbg_win8", cq = None)
578win_try_job("win_x64_clang_dbg_win10", cq = None)
579win_try_job("win_compile_x64_clang_dbg")
580win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
581win_try_job("win_x64_clang_rel", cq = None)
582win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200583win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100584win_try_job("win_asan")
585win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
586win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
587win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
588win_try_job("win_x86_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100589win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100590win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100591
592linux_try_job(
593 "presubmit",
594 recipe = "run_presubmit",
595 properties = {"repo_name": "webrtc", "runhooks": True},
596 priority = 28,
597 cq = {"disable_reuse": True},
598)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100599
600cron_builder(
601 "Auto-roll - WebRTC DEPS",
602 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200603 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100604)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200605
606lkgr_config = {
607 "project": "webrtc",
608 "source_url": WEBRTC_GIT,
609 "status_url": "https://webrtc-status.appspot.com",
610 "allowed_lag": 300, # hours
611 "allowed_gap": 12, # commits behind
612 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200613 "buckets": {
614 "webrtc/ci": {
615 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200616 "builders": sorted(lkgr_builders),
617 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200618 "chromium/webrtc.fyi": {
619 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200620 "builders": [
621 "WebRTC Chromium FYI Android Builder (dbg)",
622 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
623 "WebRTC Chromium FYI Android Builder",
624 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
625 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
626 "WebRTC Chromium FYI Linux Builder (dbg)",
627 "WebRTC Chromium FYI Linux Builder",
628 "WebRTC Chromium FYI Linux Tester",
629 "WebRTC Chromium FYI Mac Builder (dbg)",
630 "WebRTC Chromium FYI Mac Builder",
631 "WebRTC Chromium FYI Mac Tester",
632 "WebRTC Chromium FYI Win Builder (dbg)",
633 "WebRTC Chromium FYI Win Builder",
634 "WebRTC Chromium FYI Win10 Tester",
635 "WebRTC Chromium FYI Win7 Tester",
636 "WebRTC Chromium FYI Win8 Tester",
637 "WebRTC Chromium FYI ios-device",
638 "WebRTC Chromium FYI ios-simulator",
639 ],
640 },
641 },
642}
643
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100644cron_builder(
645 "WebRTC lkgr finder",
646 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200647 properties = {
648 "project": "webrtc",
649 "repo": WEBRTC_GIT,
650 "ref": "refs/heads/lkgr",
651 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
652 "config": lkgr_config,
653 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100654 schedule = "*/10 * * * *", # Every 10 minutes.
655)