blob: d0c2a1d42e14218c46c4e78dd791296395f105a7 [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
12# Top-level configs:
13
14lucicfg.config(
15 config_dir = ".",
16 tracked_files = [
17 "commit-queue.cfg",
18 "cr-buildbucket.cfg",
19 "luci-logdog.cfg",
20 "luci-milo.cfg",
Oleh Prypin71d17422019-03-28 08:43:16 +010021 "luci-notify.cfg",
Oleh Prypin705b6a62019-04-03 23:10:51 +020022 "luci-notify/**/*",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010023 "luci-scheduler.cfg",
24 "project.cfg",
25 ],
26)
27
28luci.project(
29 name = "webrtc",
30 buildbucket = "cr-buildbucket.appspot.com",
31 logdog = "luci-logdog.appspot.com",
32 milo = "luci-milo.appspot.com",
Oleh Prypin71d17422019-03-28 08:43:16 +010033 notify = "luci-notify.appspot.com",
Oleh Prypin1a0593f2019-03-11 09:43:28 +010034 scheduler = "luci-scheduler.appspot.com",
35 swarming = "chromium-swarm.appspot.com",
36 acls = [
37 acl.entry(
38 [acl.BUILDBUCKET_READER, acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, acl.SCHEDULER_READER],
39 groups = ["all"],
40 ),
41 acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
42 acl.entry(acl.SCHEDULER_OWNER, groups = ["project-webrtc-admins"]),
43 ],
44)
45
46luci.logdog(
47 gs_bucket = "chromium-luci-logdog",
48)
49
50luci.milo(
51 logo = "https://storage.googleapis.com/chrome-infra/webrtc-logo-vert-retro-255x305.png",
52)
53
54luci.cq(
55 status_host = "chromium-cq-status.appspot.com",
56 submit_max_burst = 1,
57 submit_burst_delay = 1 * time.minute,
58)
59
60luci.gitiles_poller(
61 name = "webrtc-gitiles-trigger-master",
62 bucket = "ci",
63 repo = WEBRTC_GIT,
64)
65
66# Bucket definitions:
67
68luci.bucket(
69 name = "try",
70 acls = [
71 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
72 "service-account-cq",
73 "project-webrtc-tryjob-access",
74 ]),
75 ],
76)
77
78luci.bucket(
79 name = "ci",
80 acls = [
Oleh Prypinf35939d2019-05-03 20:42:38 +020081 acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
82 "project-webrtc-ci-schedulers",
83 ], users = [
Oleh Prypin1a0593f2019-03-11 09:43:28 +010084 "luci-scheduler@appspot.gserviceaccount.com",
85 ]),
86 ],
87)
88
89luci.bucket(
90 name = "perf",
91 acls = [
92 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
93 "luci-scheduler@appspot.gserviceaccount.com",
94 "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
95 ]),
96 ],
97)
98
99luci.bucket(
100 name = "cron",
101 acls = [
102 acl.entry(acl.BUILDBUCKET_TRIGGERER, users = [
103 "luci-scheduler@appspot.gserviceaccount.com",
104 ]),
105 ],
106)
107
108# Commit queue definitions:
109
110luci.cq_group(
111 name = "cq",
112 tree_status_host = "webrtc-status.appspot.com",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100113 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/master"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100114 acls = [
115 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
116 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
117 ],
118 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200119 cancel_stale_tryjobs = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100120)
121
122luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100123 name = "cq_branch",
124 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
125 acls = [
126 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
127 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
128 ],
129 retry_config = cq.RETRY_ALL_FAILURES,
Oleh Prypin5416f2d2019-08-02 09:43:15 +0200130 cancel_stale_tryjobs = True,
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100131)
132
133luci.cq_group(
134 name = "cq_infra",
135 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100136 acls = [
137 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
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_tryjob_verifier(
145 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100146 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100147)
148
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200149luci.cq_tryjob_verifier(
150 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
151 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
152 cq_group = "cq",
153)
154
Oleh Prypin71d17422019-03-28 08:43:16 +0100155# Notifier definitions:
156
157luci.notifier(
158 name = "ci_notifier",
159 on_failure = True,
160 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200161 template = luci.notifier_template(
162 name = "ci",
163 body = io.read_file("luci-notify/email-templates/ci.template"),
164 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100165)
166
167luci.notifier(
168 name = "cron_notifier",
169 on_failure = True,
170 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200171 template = luci.notifier_template(
172 name = "cron",
173 body = io.read_file("luci-notify/email-templates/cron.template"),
174 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100175)
176
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100177# Recipe definitions:
178
179def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
180 return luci.recipe(
181 name = recipe.split("/")[-1],
182 cipd_package = pkg,
183 cipd_version = "refs/heads/master",
184 recipe = recipe,
185 )
186
187recipe("chromium_trybot")
188recipe("run_presubmit")
189recipe("webrtc/auto_roll_webrtc_deps")
190recipe("webrtc/ios")
191recipe("webrtc/ios_api_framework")
192recipe("webrtc/libfuzzer")
193recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100194recipe("webrtc/standalone")
195recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
196
197# Console definitions:
198
199luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
200luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
201luci.list_view(name = "cron", title = "Cron")
202luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
203luci.list_view(name = "try", title = "Tryserver")
204
205def add_milo(builder, views):
206 """Add Milo console entries for the builder.
207
208 Args:
209 builder: builder name (str).
210 views: dict where keys are names of consoles and values are either a
211 category for the console (str, pipe-separated) or True, which means
212 adding to a list view rather than a console.
213 """
214 for view_name, category in views.items():
215 if category == None:
216 continue
217 elif type(category) == "string":
218 category, _, short_name = category.rpartition("|")
219 luci.console_view_entry(
220 console_view = view_name,
221 builder = builder,
222 category = category or None,
223 short_name = short_name or None,
224 )
225 elif category == True:
226 luci.list_view_entry(
227 list_view = view_name,
228 builder = builder,
229 )
230 else:
231 fail("Unexpected value for category: %r" % category)
232
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200233lkgr_builders = {}
234
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100235# Builder-defining functions:
236
237def webrtc_builder(name, recipe = "standalone", dimensions = {}, priority = 30, **kwargs):
238 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
239
240 return luci.builder(
241 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200242 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100243 dimensions = {k: v for k, v in dimensions.items() if v != None},
244 execution_timeout = 2 * time.hour,
245 priority = priority,
246 build_numbers = True,
247 swarming_tags = ["vpython:native-python-wrapper"],
248 **kwargs
249 )
250
251def ci_builder(
252 name,
253 ci_cat,
254 perf_cat = None,
255 fyi_cat = None,
256 properties = {},
257 dimensions = {},
258 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100259 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100260 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200261 """Add a post-submit builder.
262
263 Args:
264 name: builder name (str).
265 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
266 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
267 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
268 properties: dict of properties to pass to the recipe (on top of the default ones).
269 dimensions: dict of Swarming dimensions (strings) to search machines by.
270 prioritized: True to make this builder have a higher priority and never batch builds.
271 enabled: False to exclude this builder from consoles and failure notifications.
272 **kwargs: Pass on to webrtc_builder / luci.builder.
273 Returns:
274 A luci.builder.
275
276 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
277 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100278 if prioritized:
279 kwargs["triggering_policy"] = scheduler.greedy_batching(
280 max_batch_size = 1,
281 max_concurrent_invocations = 3,
282 )
283 kwargs["priority"] = 29
284
Oleh Prypinf5432c52019-03-19 15:10:37 +0100285 if enabled:
286 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200287 if ci_cat:
288 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100289 return webrtc_builder(
290 name = name,
291 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
292 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
293 bucket = "ci",
294 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100295 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100296 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200297 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100298 **kwargs
299 )
300
301def try_builder(
302 name,
303 try_cat = True,
304 fyi_cat = None,
305 properties = {},
306 dimensions = {},
307 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100308 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100309 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200310 """Add a pre-submit builder.
311
312 Args:
313 name: builder name (str).
314 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
315 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
316 properties: dict of properties to pass to the recipe (on top of the default ones).
317 dimensions: dict of Swarming dimensions (strings) to search machines by.
318 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 +0100319 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200320 **kwargs: Pass on to webrtc_builder / luci.builder.
321 Returns:
322 A luci.builder.
323 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100324 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
325 if cq != None:
326 luci.cq_tryjob_verifier(
327 builder = name,
328 cq_group = "cq",
329 **cq
330 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100331 if branch_cq:
332 luci.cq_tryjob_verifier(
333 builder = name,
334 cq_group = "cq_branch",
335 **cq
336 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100337
338 return webrtc_builder(
339 name = name,
340 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
341 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
342 bucket = "try",
343 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
344 **kwargs
345 )
346
347def perf_builder(
348 name,
349 perf_cat,
350 recipe = "standalone",
351 properties = {},
352 dimensions = {},
353 **kwargs):
354 add_milo(name, {"perf": perf_cat})
355 return webrtc_builder(
356 name = name,
357 recipe = recipe,
358 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
359 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
360 bucket = "perf",
361 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
362 # log_base of 1.7 means:
363 # when there are P pending builds, LUCI will batch the first B builds.
364 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
365 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
366 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
367 **kwargs
368 )
369
370def cron_builder(name, dimensions = {}, **kwargs):
371 add_milo(name, {"cron": True})
372 return webrtc_builder(
373 name = name,
374 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
375 bucket = "cron",
376 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100377 repo = WEBRTC_GIT,
378 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100379 **kwargs
380 )
381
382# Helpers:
383
384def merge_dicts(a, b):
385 """Return the result of merging two dicts.
386
387 If matching values are both dicts or both lists, they will be merged (non-recursively).
388
389 Args:
390 a: first dict.
391 b: second dict (takes priority).
392 Returns:
393 Merged dict.
394 """
395 a = dict(a)
396 for k, bv in b.items():
397 av = a.get(k)
398 if type(av) == "dict" and type(bv) == "dict":
399 a[k] = dict(av)
400 a[k].update(bv)
401 elif type(av) == "list" and type(bv) == "list":
402 a[k] = av + bv
403 else:
404 a[k] = bv
405 return a
406
407def normal_builder_factory(**common_kwargs):
408 def builder(*args, **kwargs):
409 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
410
411 def try_job(*args, **kwargs):
412 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
413
414 return builder, try_job
415
416# Mixins:
417
418linux_builder, linux_try_job = normal_builder_factory(
419 dimensions = {"os": "Linux", "inside_docker": "0"},
420)
421
422android_builder, android_try_job = normal_builder_factory(
423 dimensions = {"os": "Linux"},
424)
425
426win_builder, win_try_job = normal_builder_factory(
427 dimensions = {"os": "Windows"},
428)
429
430mac_builder, mac_try_job = normal_builder_factory(
431 dimensions = {"os": "Mac"},
432)
433
434ios_builder, ios_try_job = normal_builder_factory(
435 dimensions = {"os": "Mac-10.13"},
436 recipe = "ios",
437 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10l232m"}},
438 caches = [swarming.cache("osx_sdk")],
439)
440
441# Actual builder configuration:
442
443android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
444android_try_job("android_compile_arm_dbg", cq = None)
445android_try_job("android_arm_dbg")
446android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
447android_try_job("android_arm_rel")
448android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
449android_try_job("android_compile_arm_rel")
450perf_builder("Perf Android32 (L Nexus4)", "Android|arm|Tester|L Nexus4", triggered_by = ["Android32 Builder arm"])
451perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
452perf_builder("Perf Android32 (L Nexus5)", "Android|arm|Tester|L Nexus5", triggered_by = ["Android32 Builder arm"])
453perf_builder("Perf Android32 (L Nexus6)", "Android|arm|Tester|L Nexus6", triggered_by = ["Android32 Builder arm"])
454perf_builder("Perf Android32 (L Nexus7.2)", "Android|arm|Tester|L Nexus7.2", triggered_by = ["Android32 Builder arm"])
455perf_builder("Perf Android32 (N Nexus6)", "Android|arm|Tester|N Nexus6", triggered_by = ["Android32 Builder arm"])
456android_builder("Android64 (M Nexus5X)(dbg)", "Android|arm64|dbg")
457android_try_job("android_compile_arm64_dbg", cq = None)
458android_try_job("android_arm64_dbg", cq = None)
459android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
460android_try_job("android_arm64_rel")
461android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
462android_try_job("android_compile_arm64_rel")
463perf_builder("Perf Android64 (L Nexus9)", "Android|arm64|Tester|L Nexus9", triggered_by = ["Android64 Builder arm64"])
464perf_builder("Perf Android64 (N Pixel)", "Android|arm64|Tester|N Pixel", triggered_by = ["Android64 Builder arm64"])
465android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
466android_try_job("android_compile_x64_dbg")
467android_try_job("android_compile_x64_rel", cq = None)
468android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
469android_try_job("android_compile_x86_dbg")
470android_builder("Android32 Builder x86", "Android|x86|rel")
471android_try_job("android_compile_x86_rel")
472android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
473android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100474android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100475
476ios_builder("iOS32 Debug", "iOS|arm|dbg")
477ios_try_job("ios_compile_arm_dbg")
478ios_builder("iOS32 Release", "iOS|arm|rel")
479ios_try_job("ios_compile_arm_rel")
480ios_builder("iOS64 Debug", "iOS|arm64|dbg")
481ios_try_job("ios_compile_arm64_dbg")
482ios_builder("iOS64 Release", "iOS|arm64|rel")
483ios_try_job("ios_compile_arm64_rel")
484ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
485ios_try_job("ios_sim_x64_dbg_ios10")
486ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
487ios_try_job("ios_sim_x64_dbg_ios11")
488ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
489ios_try_job("ios_sim_x64_dbg_ios12")
490ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
491ios_try_job("ios_api_framework", recipe = "ios_api_framework")
492
493linux_builder("Linux32 Debug", "Linux|x86|dbg")
494linux_try_job("linux_x86_dbg")
495linux_builder("Linux32 Release", "Linux|x86|rel")
496linux_try_job("linux_x86_rel")
497linux_builder("Linux64 Debug", "Linux|x64|dbg")
498linux_try_job("linux_dbg", cq = None)
499linux_try_job("linux_compile_dbg")
500linux_builder("Linux64 Release", "Linux|x64|rel")
501linux_try_job("linux_rel")
502linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
503linux_try_job("linux_compile_rel")
504perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200505perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100506linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
507linux_try_job("linux_compile_arm_dbg")
508linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
509linux_try_job("linux_compile_arm_rel")
510linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
511linux_try_job("linux_compile_arm64_dbg")
512linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
513linux_try_job("linux_compile_arm64_rel")
514linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
515linux_try_job("linux_compile_gcc_rel")
516linux_builder("Linux Asan", "Linux|x64|asan")
517linux_try_job("linux_asan")
518linux_builder("Linux MSan", "Linux|x64|msan")
519linux_try_job("linux_msan")
520linux_builder("Linux Tsan v2", "Linux|x64|tsan")
521linux_try_job("linux_tsan2")
522linux_builder("Linux UBSan", "Linux|x64|ubsan")
523linux_try_job("linux_ubsan")
524linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
525linux_try_job("linux_ubsan_vptr")
526linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
527linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
528linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
529linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100530linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100531
532mac_builder("Mac64 Debug", "Mac|x64|dbg")
533mac_try_job("mac_dbg", cq = None)
534mac_try_job("mac_compile_dbg")
535mac_builder("Mac64 Release", "Mac|x64|rel")
536mac_try_job("mac_rel")
537mac_try_job("mac_compile_rel", cq = None)
538mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
539perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
540mac_builder("Mac Asan", "Mac|x64|asan")
541mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100542mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100543
544win_builder("Win32 Debug", "Win MSVC|x86|dbg")
545win_try_job("win_x86_msvc_dbg")
546win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000547win_builder("Win32 Release", "Win MSVC|x86|rel")
548win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100549win_try_job("win_compile_x86_msvc_rel", cq = None)
550win_builder("Win64 Debug", "Win MSVC|x64|dbg")
551win_try_job("win_x64_msvc_dbg")
552win_try_job("win_compile_x64_msvc_dbg", cq = None)
553win_builder("Win64 Release", "Win MSVC|x64|rel")
554win_try_job("win_x64_msvc_rel")
555win_try_job("win_compile_x64_msvc_rel", cq = None)
556win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
557win_try_job("win_x86_clang_dbg", cq = None)
558win_try_job("win_compile_x86_clang_dbg")
559win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
560win_try_job("win_x86_clang_rel")
561win_try_job("win_compile_x86_clang_rel", cq = None)
562win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
563perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
564win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
565win_try_job("win_x64_clang_dbg", cq = None)
566win_try_job("win_x64_clang_dbg_win8", cq = None)
567win_try_job("win_x64_clang_dbg_win10", cq = None)
568win_try_job("win_compile_x64_clang_dbg")
569win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
570win_try_job("win_x64_clang_rel", cq = None)
571win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200572win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100573win_try_job("win_asan")
574win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
575win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
576win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
577win_try_job("win_x86_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100578win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100579
580linux_try_job(
581 "presubmit",
582 recipe = "run_presubmit",
583 properties = {"repo_name": "webrtc", "runhooks": True},
584 priority = 28,
585 cq = {"disable_reuse": True},
586)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100587
588cron_builder(
589 "Auto-roll - WebRTC DEPS",
590 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200591 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100592)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200593
594lkgr_config = {
595 "project": "webrtc",
596 "source_url": WEBRTC_GIT,
597 "status_url": "https://webrtc-status.appspot.com",
598 "allowed_lag": 300, # hours
599 "allowed_gap": 12, # commits behind
600 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200601 "buckets": {
602 "webrtc/ci": {
603 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200604 "builders": sorted(lkgr_builders),
605 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200606 "chromium/webrtc.fyi": {
607 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200608 "builders": [
609 "WebRTC Chromium FYI Android Builder (dbg)",
610 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
611 "WebRTC Chromium FYI Android Builder",
612 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
613 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
614 "WebRTC Chromium FYI Linux Builder (dbg)",
615 "WebRTC Chromium FYI Linux Builder",
616 "WebRTC Chromium FYI Linux Tester",
617 "WebRTC Chromium FYI Mac Builder (dbg)",
618 "WebRTC Chromium FYI Mac Builder",
619 "WebRTC Chromium FYI Mac Tester",
620 "WebRTC Chromium FYI Win Builder (dbg)",
621 "WebRTC Chromium FYI Win Builder",
622 "WebRTC Chromium FYI Win10 Tester",
623 "WebRTC Chromium FYI Win7 Tester",
624 "WebRTC Chromium FYI Win8 Tester",
625 "WebRTC Chromium FYI ios-device",
626 "WebRTC Chromium FYI ios-simulator",
627 ],
628 },
629 },
630}
631
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100632cron_builder(
633 "WebRTC lkgr finder",
634 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200635 properties = {
636 "project": "webrtc",
637 "repo": WEBRTC_GIT,
638 "ref": "refs/heads/lkgr",
639 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
640 "config": lkgr_config,
641 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100642 schedule = "*/10 * * * *", # Every 10 minutes.
643)