blob: 2e2542429fdfae53bb1f3ed1cf410afda70389b3 [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,
119)
120
121luci.cq_group(
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100122 name = "cq_branch",
123 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/branch-heads/.+"])],
124 acls = [
125 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-committers"]),
126 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
127 ],
128 retry_config = cq.RETRY_ALL_FAILURES,
129)
130
131luci.cq_group(
132 name = "cq_infra",
133 watch = [cq.refset(repo = WEBRTC_GERRIT, refs = ["refs/heads/infra/config"])],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100134 acls = [
135 acl.entry(acl.CQ_COMMITTER, groups = ["project-webrtc-admins"]),
136 acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-webrtc-tryjob-access"]),
137 ],
138 retry_config = cq.RETRY_ALL_FAILURES,
139)
140
141luci.cq_tryjob_verifier(
142 builder = "presubmit",
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100143 cq_group = "cq_infra",
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100144)
145
Oleh Prypine56cd9b2019-05-29 21:14:31 +0200146luci.cq_tryjob_verifier(
147 builder = "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
148 owner_whitelist = ["project-webrtc-internal-tryjob-access"],
149 cq_group = "cq",
150)
151
Oleh Prypin71d17422019-03-28 08:43:16 +0100152# Notifier definitions:
153
154luci.notifier(
155 name = "ci_notifier",
156 on_failure = True,
157 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200158 template = luci.notifier_template(
159 name = "ci",
160 body = io.read_file("luci-notify/email-templates/ci.template"),
161 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100162)
163
164luci.notifier(
165 name = "cron_notifier",
166 on_failure = True,
167 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200168 template = luci.notifier_template(
169 name = "cron",
170 body = io.read_file("luci-notify/email-templates/cron.template"),
171 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100172)
173
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100174# Recipe definitions:
175
176def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
177 return luci.recipe(
178 name = recipe.split("/")[-1],
179 cipd_package = pkg,
180 cipd_version = "refs/heads/master",
181 recipe = recipe,
182 )
183
184recipe("chromium_trybot")
185recipe("run_presubmit")
186recipe("webrtc/auto_roll_webrtc_deps")
187recipe("webrtc/ios")
188recipe("webrtc/ios_api_framework")
189recipe("webrtc/libfuzzer")
190recipe("webrtc/more_configs")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100191recipe("webrtc/standalone")
192recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
193
194# Console definitions:
195
196luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
197luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
198luci.list_view(name = "cron", title = "Cron")
199luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
200luci.list_view(name = "try", title = "Tryserver")
201
202def add_milo(builder, views):
203 """Add Milo console entries for the builder.
204
205 Args:
206 builder: builder name (str).
207 views: dict where keys are names of consoles and values are either a
208 category for the console (str, pipe-separated) or True, which means
209 adding to a list view rather than a console.
210 """
211 for view_name, category in views.items():
212 if category == None:
213 continue
214 elif type(category) == "string":
215 category, _, short_name = category.rpartition("|")
216 luci.console_view_entry(
217 console_view = view_name,
218 builder = builder,
219 category = category or None,
220 short_name = short_name or None,
221 )
222 elif category == True:
223 luci.list_view_entry(
224 list_view = view_name,
225 builder = builder,
226 )
227 else:
228 fail("Unexpected value for category: %r" % category)
229
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200230lkgr_builders = {}
231
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100232# Builder-defining functions:
233
234def webrtc_builder(name, recipe = "standalone", dimensions = {}, priority = 30, **kwargs):
235 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
236
237 return luci.builder(
238 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200239 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100240 dimensions = {k: v for k, v in dimensions.items() if v != None},
241 execution_timeout = 2 * time.hour,
242 priority = priority,
243 build_numbers = True,
244 swarming_tags = ["vpython:native-python-wrapper"],
245 **kwargs
246 )
247
248def ci_builder(
249 name,
250 ci_cat,
251 perf_cat = None,
252 fyi_cat = None,
253 properties = {},
254 dimensions = {},
255 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100256 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100257 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200258 """Add a post-submit builder.
259
260 Args:
261 name: builder name (str).
262 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
263 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
264 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
265 properties: dict of properties to pass to the recipe (on top of the default ones).
266 dimensions: dict of Swarming dimensions (strings) to search machines by.
267 prioritized: True to make this builder have a higher priority and never batch builds.
268 enabled: False to exclude this builder from consoles and failure notifications.
269 **kwargs: Pass on to webrtc_builder / luci.builder.
270 Returns:
271 A luci.builder.
272
273 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
274 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100275 if prioritized:
276 kwargs["triggering_policy"] = scheduler.greedy_batching(
277 max_batch_size = 1,
278 max_concurrent_invocations = 3,
279 )
280 kwargs["priority"] = 29
281
Oleh Prypinf5432c52019-03-19 15:10:37 +0100282 if enabled:
283 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200284 if ci_cat:
285 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100286 return webrtc_builder(
287 name = name,
288 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
289 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
290 bucket = "ci",
291 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100292 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100293 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200294 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100295 **kwargs
296 )
297
298def try_builder(
299 name,
300 try_cat = True,
301 fyi_cat = None,
302 properties = {},
303 dimensions = {},
304 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100305 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100306 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200307 """Add a pre-submit builder.
308
309 Args:
310 name: builder name (str).
311 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
312 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
313 properties: dict of properties to pass to the recipe (on top of the default ones).
314 dimensions: dict of Swarming dimensions (strings) to search machines by.
315 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 +0100316 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200317 **kwargs: Pass on to webrtc_builder / luci.builder.
318 Returns:
319 A luci.builder.
320 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100321 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
322 if cq != None:
323 luci.cq_tryjob_verifier(
324 builder = name,
325 cq_group = "cq",
326 **cq
327 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100328 if branch_cq:
329 luci.cq_tryjob_verifier(
330 builder = name,
331 cq_group = "cq_branch",
332 **cq
333 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100334
335 return webrtc_builder(
336 name = name,
337 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
338 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
339 bucket = "try",
340 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
341 **kwargs
342 )
343
344def perf_builder(
345 name,
346 perf_cat,
347 recipe = "standalone",
348 properties = {},
349 dimensions = {},
350 **kwargs):
351 add_milo(name, {"perf": perf_cat})
352 return webrtc_builder(
353 name = name,
354 recipe = recipe,
355 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
356 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
357 bucket = "perf",
358 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
359 # log_base of 1.7 means:
360 # when there are P pending builds, LUCI will batch the first B builds.
361 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
362 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
363 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
364 **kwargs
365 )
366
367def cron_builder(name, dimensions = {}, **kwargs):
368 add_milo(name, {"cron": True})
369 return webrtc_builder(
370 name = name,
371 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
372 bucket = "cron",
373 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100374 repo = WEBRTC_GIT,
375 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100376 **kwargs
377 )
378
379# Helpers:
380
381def merge_dicts(a, b):
382 """Return the result of merging two dicts.
383
384 If matching values are both dicts or both lists, they will be merged (non-recursively).
385
386 Args:
387 a: first dict.
388 b: second dict (takes priority).
389 Returns:
390 Merged dict.
391 """
392 a = dict(a)
393 for k, bv in b.items():
394 av = a.get(k)
395 if type(av) == "dict" and type(bv) == "dict":
396 a[k] = dict(av)
397 a[k].update(bv)
398 elif type(av) == "list" and type(bv) == "list":
399 a[k] = av + bv
400 else:
401 a[k] = bv
402 return a
403
404def normal_builder_factory(**common_kwargs):
405 def builder(*args, **kwargs):
406 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
407
408 def try_job(*args, **kwargs):
409 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
410
411 return builder, try_job
412
413# Mixins:
414
415linux_builder, linux_try_job = normal_builder_factory(
416 dimensions = {"os": "Linux", "inside_docker": "0"},
417)
418
419android_builder, android_try_job = normal_builder_factory(
420 dimensions = {"os": "Linux"},
421)
422
423win_builder, win_try_job = normal_builder_factory(
424 dimensions = {"os": "Windows"},
425)
426
427mac_builder, mac_try_job = normal_builder_factory(
428 dimensions = {"os": "Mac"},
429)
430
431ios_builder, ios_try_job = normal_builder_factory(
432 dimensions = {"os": "Mac-10.13"},
433 recipe = "ios",
434 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10l232m"}},
435 caches = [swarming.cache("osx_sdk")],
436)
437
438# Actual builder configuration:
439
440android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
441android_try_job("android_compile_arm_dbg", cq = None)
442android_try_job("android_arm_dbg")
443android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
444android_try_job("android_arm_rel")
445android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
446android_try_job("android_compile_arm_rel")
447perf_builder("Perf Android32 (L Nexus4)", "Android|arm|Tester|L Nexus4", triggered_by = ["Android32 Builder arm"])
448perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
449perf_builder("Perf Android32 (L Nexus5)", "Android|arm|Tester|L Nexus5", triggered_by = ["Android32 Builder arm"])
450perf_builder("Perf Android32 (L Nexus6)", "Android|arm|Tester|L Nexus6", triggered_by = ["Android32 Builder arm"])
451perf_builder("Perf Android32 (L Nexus7.2)", "Android|arm|Tester|L Nexus7.2", triggered_by = ["Android32 Builder arm"])
452perf_builder("Perf Android32 (N Nexus6)", "Android|arm|Tester|N Nexus6", triggered_by = ["Android32 Builder arm"])
453android_builder("Android64 (M Nexus5X)(dbg)", "Android|arm64|dbg")
454android_try_job("android_compile_arm64_dbg", cq = None)
455android_try_job("android_arm64_dbg", cq = None)
456android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
457android_try_job("android_arm64_rel")
458android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
459android_try_job("android_compile_arm64_rel")
460perf_builder("Perf Android64 (L Nexus9)", "Android|arm64|Tester|L Nexus9", triggered_by = ["Android64 Builder arm64"])
461perf_builder("Perf Android64 (N Pixel)", "Android|arm64|Tester|N Pixel", triggered_by = ["Android64 Builder arm64"])
462android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
463android_try_job("android_compile_x64_dbg")
464android_try_job("android_compile_x64_rel", cq = None)
465android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
466android_try_job("android_compile_x86_dbg")
467android_builder("Android32 Builder x86", "Android|x86|rel")
468android_try_job("android_compile_x86_rel")
469android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
470android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100471android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100472
473ios_builder("iOS32 Debug", "iOS|arm|dbg")
474ios_try_job("ios_compile_arm_dbg")
475ios_builder("iOS32 Release", "iOS|arm|rel")
476ios_try_job("ios_compile_arm_rel")
477ios_builder("iOS64 Debug", "iOS|arm64|dbg")
478ios_try_job("ios_compile_arm64_dbg")
479ios_builder("iOS64 Release", "iOS|arm64|rel")
480ios_try_job("ios_compile_arm64_rel")
481ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
482ios_try_job("ios_sim_x64_dbg_ios10")
483ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
484ios_try_job("ios_sim_x64_dbg_ios11")
485ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
486ios_try_job("ios_sim_x64_dbg_ios12")
487ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
488ios_try_job("ios_api_framework", recipe = "ios_api_framework")
489
490linux_builder("Linux32 Debug", "Linux|x86|dbg")
491linux_try_job("linux_x86_dbg")
492linux_builder("Linux32 Release", "Linux|x86|rel")
493linux_try_job("linux_x86_rel")
494linux_builder("Linux64 Debug", "Linux|x64|dbg")
495linux_try_job("linux_dbg", cq = None)
496linux_try_job("linux_compile_dbg")
497linux_builder("Linux64 Release", "Linux|x64|rel")
498linux_try_job("linux_rel")
499linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
500linux_try_job("linux_compile_rel")
501perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Takuto Ikutaa58150e2019-04-23 22:07:08 +0900502perf_builder("Perf Linux Xenial", "Linux|x64|Tester|Xenial", triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100503linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
504linux_try_job("linux_compile_arm_dbg")
505linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
506linux_try_job("linux_compile_arm_rel")
507linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
508linux_try_job("linux_compile_arm64_dbg")
509linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
510linux_try_job("linux_compile_arm64_rel")
511linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
512linux_try_job("linux_compile_gcc_rel")
513linux_builder("Linux Asan", "Linux|x64|asan")
514linux_try_job("linux_asan")
515linux_builder("Linux MSan", "Linux|x64|msan")
516linux_try_job("linux_msan")
517linux_builder("Linux Tsan v2", "Linux|x64|tsan")
518linux_try_job("linux_tsan2")
519linux_builder("Linux UBSan", "Linux|x64|ubsan")
520linux_try_job("linux_ubsan")
521linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
522linux_try_job("linux_ubsan_vptr")
523linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
524linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
525linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
526linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100527linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100528
529mac_builder("Mac64 Debug", "Mac|x64|dbg")
530mac_try_job("mac_dbg", cq = None)
531mac_try_job("mac_compile_dbg")
532mac_builder("Mac64 Release", "Mac|x64|rel")
533mac_try_job("mac_rel")
534mac_try_job("mac_compile_rel", cq = None)
535mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
536perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
537mac_builder("Mac Asan", "Mac|x64|asan")
538mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100539mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100540
541win_builder("Win32 Debug", "Win MSVC|x86|dbg")
542win_try_job("win_x86_msvc_dbg")
543win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000544win_builder("Win32 Release", "Win MSVC|x86|rel")
545win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100546win_try_job("win_compile_x86_msvc_rel", cq = None)
547win_builder("Win64 Debug", "Win MSVC|x64|dbg")
548win_try_job("win_x64_msvc_dbg")
549win_try_job("win_compile_x64_msvc_dbg", cq = None)
550win_builder("Win64 Release", "Win MSVC|x64|rel")
551win_try_job("win_x64_msvc_rel")
552win_try_job("win_compile_x64_msvc_rel", cq = None)
553win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
554win_try_job("win_x86_clang_dbg", cq = None)
555win_try_job("win_compile_x86_clang_dbg")
556win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
557win_try_job("win_x86_clang_rel")
558win_try_job("win_compile_x86_clang_rel", cq = None)
559win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
560perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
561win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
562win_try_job("win_x64_clang_dbg", cq = None)
563win_try_job("win_x64_clang_dbg_win8", cq = None)
564win_try_job("win_x64_clang_dbg_win10", cq = None)
565win_try_job("win_compile_x64_clang_dbg")
566win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
567win_try_job("win_x64_clang_rel", cq = None)
568win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200569win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100570win_try_job("win_asan")
571win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
572win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
573win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
574win_try_job("win_x86_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100575win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100576
577linux_try_job(
578 "presubmit",
579 recipe = "run_presubmit",
580 properties = {"repo_name": "webrtc", "runhooks": True},
581 priority = 28,
582 cq = {"disable_reuse": True},
583)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100584
585cron_builder(
586 "Auto-roll - WebRTC DEPS",
587 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200588 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100589)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200590
591lkgr_config = {
592 "project": "webrtc",
593 "source_url": WEBRTC_GIT,
594 "status_url": "https://webrtc-status.appspot.com",
595 "allowed_lag": 300, # hours
596 "allowed_gap": 12, # commits behind
597 "error_recipients": "webrtc-troopers-robots@google.com",
598 "masters": {
599 "client.webrtc": {
600 "base_url": "https://build.chromium.org/p/client.webrtc",
601 "builders": sorted(lkgr_builders),
602 },
603 "chromium.webrtc.fyi": {
604 "base_url": "https://build.chromium.org/p/chromium.webrtc.fyi",
605 "builders": [
606 "WebRTC Chromium FYI Android Builder (dbg)",
607 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
608 "WebRTC Chromium FYI Android Builder",
609 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
610 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
611 "WebRTC Chromium FYI Linux Builder (dbg)",
612 "WebRTC Chromium FYI Linux Builder",
613 "WebRTC Chromium FYI Linux Tester",
614 "WebRTC Chromium FYI Mac Builder (dbg)",
615 "WebRTC Chromium FYI Mac Builder",
616 "WebRTC Chromium FYI Mac Tester",
617 "WebRTC Chromium FYI Win Builder (dbg)",
618 "WebRTC Chromium FYI Win Builder",
619 "WebRTC Chromium FYI Win10 Tester",
620 "WebRTC Chromium FYI Win7 Tester",
621 "WebRTC Chromium FYI Win8 Tester",
622 "WebRTC Chromium FYI ios-device",
623 "WebRTC Chromium FYI ios-simulator",
624 ],
625 },
626 },
627}
628
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100629cron_builder(
630 "WebRTC lkgr finder",
631 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200632 properties = {
633 "project": "webrtc",
634 "repo": WEBRTC_GIT,
635 "ref": "refs/heads/lkgr",
636 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
637 "config": lkgr_config,
638 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100639 schedule = "*/10 * * * *", # Every 10 minutes.
640)