blob: 471adc46666bdc6c557cd6ecfc181e0dcc0a5885 [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
Artem Titarenkof6588b72019-11-14 14:28:11 +0100237def webrtc_builder(
238 name,
239 recipe = "standalone",
240 dimensions = {},
241 priority = 30,
242 execution_timeout = 2 * time.hour,
243 **kwargs):
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100244 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
245
246 return luci.builder(
247 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200248 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100249 dimensions = {k: v for k, v in dimensions.items() if v != None},
Artem Titarenkof6588b72019-11-14 14:28:11 +0100250 execution_timeout = execution_timeout,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100251 priority = priority,
252 build_numbers = True,
253 swarming_tags = ["vpython:native-python-wrapper"],
254 **kwargs
255 )
256
257def ci_builder(
258 name,
259 ci_cat,
260 perf_cat = None,
261 fyi_cat = None,
262 properties = {},
263 dimensions = {},
264 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100265 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100266 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200267 """Add a post-submit builder.
268
269 Args:
270 name: builder name (str).
271 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
272 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
273 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
274 properties: dict of properties to pass to the recipe (on top of the default ones).
275 dimensions: dict of Swarming dimensions (strings) to search machines by.
276 prioritized: True to make this builder have a higher priority and never batch builds.
277 enabled: False to exclude this builder from consoles and failure notifications.
278 **kwargs: Pass on to webrtc_builder / luci.builder.
279 Returns:
280 A luci.builder.
281
282 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
283 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100284 if prioritized:
285 kwargs["triggering_policy"] = scheduler.greedy_batching(
286 max_batch_size = 1,
287 max_concurrent_invocations = 3,
288 )
289 kwargs["priority"] = 29
290
Oleh Prypinf5432c52019-03-19 15:10:37 +0100291 if enabled:
292 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200293 if ci_cat:
294 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100295 return webrtc_builder(
296 name = name,
297 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
298 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
299 bucket = "ci",
300 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100301 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100302 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200303 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100304 **kwargs
305 )
306
307def try_builder(
308 name,
309 try_cat = True,
310 fyi_cat = None,
311 properties = {},
312 dimensions = {},
313 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100314 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100315 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200316 """Add a pre-submit builder.
317
318 Args:
319 name: builder name (str).
320 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
321 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
322 properties: dict of properties to pass to the recipe (on top of the default ones).
323 dimensions: dict of Swarming dimensions (strings) to search machines by.
324 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 +0100325 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200326 **kwargs: Pass on to webrtc_builder / luci.builder.
327 Returns:
328 A luci.builder.
329 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100330 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
331 if cq != None:
332 luci.cq_tryjob_verifier(
333 builder = name,
334 cq_group = "cq",
335 **cq
336 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100337 if branch_cq:
338 luci.cq_tryjob_verifier(
339 builder = name,
340 cq_group = "cq_branch",
341 **cq
342 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100343
344 return webrtc_builder(
345 name = name,
346 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
347 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
348 bucket = "try",
349 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
350 **kwargs
351 )
352
353def perf_builder(
354 name,
355 perf_cat,
356 recipe = "standalone",
357 properties = {},
358 dimensions = {},
359 **kwargs):
360 add_milo(name, {"perf": perf_cat})
361 return webrtc_builder(
362 name = name,
363 recipe = recipe,
364 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
365 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
366 bucket = "perf",
367 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
368 # log_base of 1.7 means:
369 # when there are P pending builds, LUCI will batch the first B builds.
370 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
371 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
372 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
Artem Titarenkof6588b72019-11-14 14:28:11 +0100373 execution_timeout = 3 * time.hour,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100374 **kwargs
375 )
376
377def cron_builder(name, dimensions = {}, **kwargs):
378 add_milo(name, {"cron": True})
379 return webrtc_builder(
380 name = name,
381 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
382 bucket = "cron",
383 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100384 repo = WEBRTC_GIT,
385 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100386 **kwargs
387 )
388
389# Helpers:
390
391def merge_dicts(a, b):
392 """Return the result of merging two dicts.
393
394 If matching values are both dicts or both lists, they will be merged (non-recursively).
395
396 Args:
397 a: first dict.
398 b: second dict (takes priority).
399 Returns:
400 Merged dict.
401 """
402 a = dict(a)
403 for k, bv in b.items():
404 av = a.get(k)
405 if type(av) == "dict" and type(bv) == "dict":
406 a[k] = dict(av)
407 a[k].update(bv)
408 elif type(av) == "list" and type(bv) == "list":
409 a[k] = av + bv
410 else:
411 a[k] = bv
412 return a
413
414def normal_builder_factory(**common_kwargs):
415 def builder(*args, **kwargs):
416 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
417
418 def try_job(*args, **kwargs):
419 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
420
421 return builder, try_job
422
423# Mixins:
424
425linux_builder, linux_try_job = normal_builder_factory(
426 dimensions = {"os": "Linux", "inside_docker": "0"},
427)
428
429android_builder, android_try_job = normal_builder_factory(
430 dimensions = {"os": "Linux"},
431)
432
433win_builder, win_try_job = normal_builder_factory(
434 dimensions = {"os": "Windows"},
435)
436
437mac_builder, mac_try_job = normal_builder_factory(
438 dimensions = {"os": "Mac"},
439)
440
441ios_builder, ios_try_job = normal_builder_factory(
442 dimensions = {"os": "Mac-10.13"},
443 recipe = "ios",
444 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10l232m"}},
445 caches = [swarming.cache("osx_sdk")],
446)
447
448# Actual builder configuration:
449
450android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
451android_try_job("android_compile_arm_dbg", cq = None)
452android_try_job("android_arm_dbg")
453android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
454android_try_job("android_arm_rel")
455android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
456android_try_job("android_compile_arm_rel")
457perf_builder("Perf Android32 (L Nexus4)", "Android|arm|Tester|L Nexus4", triggered_by = ["Android32 Builder arm"])
458perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
459perf_builder("Perf Android32 (L Nexus5)", "Android|arm|Tester|L Nexus5", triggered_by = ["Android32 Builder arm"])
460perf_builder("Perf Android32 (L Nexus6)", "Android|arm|Tester|L Nexus6", triggered_by = ["Android32 Builder arm"])
461perf_builder("Perf Android32 (L Nexus7.2)", "Android|arm|Tester|L Nexus7.2", triggered_by = ["Android32 Builder arm"])
462perf_builder("Perf Android32 (N Nexus6)", "Android|arm|Tester|N Nexus6", triggered_by = ["Android32 Builder arm"])
463android_builder("Android64 (M Nexus5X)(dbg)", "Android|arm64|dbg")
464android_try_job("android_compile_arm64_dbg", cq = None)
465android_try_job("android_arm64_dbg", cq = None)
466android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
467android_try_job("android_arm64_rel")
468android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
469android_try_job("android_compile_arm64_rel")
470perf_builder("Perf Android64 (L Nexus9)", "Android|arm64|Tester|L Nexus9", triggered_by = ["Android64 Builder arm64"])
471perf_builder("Perf Android64 (N Pixel)", "Android|arm64|Tester|N Pixel", triggered_by = ["Android64 Builder arm64"])
472android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
473android_try_job("android_compile_x64_dbg")
474android_try_job("android_compile_x64_rel", cq = None)
475android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
476android_try_job("android_compile_x86_dbg")
477android_builder("Android32 Builder x86", "Android|x86|rel")
478android_try_job("android_compile_x86_rel")
479android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
480android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100481android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100482
483ios_builder("iOS32 Debug", "iOS|arm|dbg")
484ios_try_job("ios_compile_arm_dbg")
485ios_builder("iOS32 Release", "iOS|arm|rel")
486ios_try_job("ios_compile_arm_rel")
487ios_builder("iOS64 Debug", "iOS|arm64|dbg")
488ios_try_job("ios_compile_arm64_dbg")
489ios_builder("iOS64 Release", "iOS|arm64|rel")
490ios_try_job("ios_compile_arm64_rel")
491ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
492ios_try_job("ios_sim_x64_dbg_ios10")
493ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
494ios_try_job("ios_sim_x64_dbg_ios11")
495ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
496ios_try_job("ios_sim_x64_dbg_ios12")
497ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
498ios_try_job("ios_api_framework", recipe = "ios_api_framework")
499
500linux_builder("Linux32 Debug", "Linux|x86|dbg")
501linux_try_job("linux_x86_dbg")
502linux_builder("Linux32 Release", "Linux|x86|rel")
503linux_try_job("linux_x86_rel")
504linux_builder("Linux64 Debug", "Linux|x64|dbg")
505linux_try_job("linux_dbg", cq = None)
506linux_try_job("linux_compile_dbg")
507linux_builder("Linux64 Release", "Linux|x64|rel")
508linux_try_job("linux_rel")
509linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
510linux_try_job("linux_compile_rel")
511perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
Oleh Prypin10c2bdc2019-07-23 15:13:45 +0200512perf_builder("Perf Linux Xenial", None, triggered_by = ["Linux64 Builder"])
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100513linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
514linux_try_job("linux_compile_arm_dbg")
515linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
516linux_try_job("linux_compile_arm_rel")
517linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
518linux_try_job("linux_compile_arm64_dbg")
519linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
520linux_try_job("linux_compile_arm64_rel")
521linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
522linux_try_job("linux_compile_gcc_rel")
523linux_builder("Linux Asan", "Linux|x64|asan")
524linux_try_job("linux_asan")
525linux_builder("Linux MSan", "Linux|x64|msan")
526linux_try_job("linux_msan")
527linux_builder("Linux Tsan v2", "Linux|x64|tsan")
528linux_try_job("linux_tsan2")
529linux_builder("Linux UBSan", "Linux|x64|ubsan")
530linux_try_job("linux_ubsan")
531linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
532linux_try_job("linux_ubsan_vptr")
533linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
534linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
535linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
536linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100537linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100538linux_try_job("linux_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100539
540mac_builder("Mac64 Debug", "Mac|x64|dbg")
541mac_try_job("mac_dbg", cq = None)
542mac_try_job("mac_compile_dbg")
543mac_builder("Mac64 Release", "Mac|x64|rel")
544mac_try_job("mac_rel")
545mac_try_job("mac_compile_rel", cq = None)
546mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
547perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
548mac_builder("Mac Asan", "Mac|x64|asan")
549mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100550mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100551
552win_builder("Win32 Debug", "Win MSVC|x86|dbg")
553win_try_job("win_x86_msvc_dbg")
554win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000555win_builder("Win32 Release", "Win MSVC|x86|rel")
556win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100557win_try_job("win_compile_x86_msvc_rel", cq = None)
558win_builder("Win64 Debug", "Win MSVC|x64|dbg")
559win_try_job("win_x64_msvc_dbg")
560win_try_job("win_compile_x64_msvc_dbg", cq = None)
561win_builder("Win64 Release", "Win MSVC|x64|rel")
562win_try_job("win_x64_msvc_rel")
563win_try_job("win_compile_x64_msvc_rel", cq = None)
564win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
565win_try_job("win_x86_clang_dbg", cq = None)
566win_try_job("win_compile_x86_clang_dbg")
567win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
568win_try_job("win_x86_clang_rel")
569win_try_job("win_compile_x86_clang_rel", cq = None)
570win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
571perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
572win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
573win_try_job("win_x64_clang_dbg", cq = None)
574win_try_job("win_x64_clang_dbg_win8", cq = None)
575win_try_job("win_x64_clang_dbg_win10", cq = None)
576win_try_job("win_compile_x64_clang_dbg")
577win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
578win_try_job("win_x64_clang_rel", cq = None)
579win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200580win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100581win_try_job("win_asan")
582win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
583win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
584win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
585win_try_job("win_x86_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100586win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Mirko Bonadei40de50f2019-11-07 11:23:47 +0100587win_try_job("win_chromium_compile_dbg", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100588
589linux_try_job(
590 "presubmit",
591 recipe = "run_presubmit",
592 properties = {"repo_name": "webrtc", "runhooks": True},
593 priority = 28,
594 cq = {"disable_reuse": True},
595)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100596
597cron_builder(
598 "Auto-roll - WebRTC DEPS",
599 recipe = "auto_roll_webrtc_deps",
Oleh Prypindc68a722019-06-25 10:43:13 +0200600 schedule = "0 */2 * * *", # Every 2 hours.
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100601)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200602
603lkgr_config = {
604 "project": "webrtc",
605 "source_url": WEBRTC_GIT,
606 "status_url": "https://webrtc-status.appspot.com",
607 "allowed_lag": 300, # hours
608 "allowed_gap": 12, # commits behind
609 "error_recipients": "webrtc-troopers-robots@google.com",
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200610 "buckets": {
611 "webrtc/ci": {
612 # bucket alias: luci.webrtc.ci
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200613 "builders": sorted(lkgr_builders),
614 },
Michael Achenbach09dd7dc2019-07-26 15:26:11 +0200615 "chromium/webrtc.fyi": {
616 # bucket alias: luci.chromium.webrtc.fyi
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200617 "builders": [
618 "WebRTC Chromium FYI Android Builder (dbg)",
619 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
620 "WebRTC Chromium FYI Android Builder",
621 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
622 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
623 "WebRTC Chromium FYI Linux Builder (dbg)",
624 "WebRTC Chromium FYI Linux Builder",
625 "WebRTC Chromium FYI Linux Tester",
626 "WebRTC Chromium FYI Mac Builder (dbg)",
627 "WebRTC Chromium FYI Mac Builder",
628 "WebRTC Chromium FYI Mac Tester",
629 "WebRTC Chromium FYI Win Builder (dbg)",
630 "WebRTC Chromium FYI Win Builder",
631 "WebRTC Chromium FYI Win10 Tester",
632 "WebRTC Chromium FYI Win7 Tester",
633 "WebRTC Chromium FYI Win8 Tester",
634 "WebRTC Chromium FYI ios-device",
635 "WebRTC Chromium FYI ios-simulator",
636 ],
637 },
638 },
639}
640
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100641cron_builder(
642 "WebRTC lkgr finder",
643 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200644 properties = {
645 "project": "webrtc",
646 "repo": WEBRTC_GIT,
647 "ref": "refs/heads/lkgr",
648 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
649 "config": lkgr_config,
650 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100651 schedule = "*/10 * * * *", # Every 10 minutes.
652)