blob: 7c859c60e0513e31816f9a4061cd61bfd950b3e6 [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 Prypin71d17422019-03-28 08:43:16 +0100146# Notifier definitions:
147
148luci.notifier(
149 name = "ci_notifier",
150 on_failure = True,
151 notify_emails = ["webrtc-sheriffs-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200152 template = luci.notifier_template(
153 name = "ci",
154 body = io.read_file("luci-notify/email-templates/ci.template"),
155 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100156)
157
158luci.notifier(
159 name = "cron_notifier",
160 on_failure = True,
161 notify_emails = ["webrtc-troopers-robots@google.com"],
Oleh Prypin705b6a62019-04-03 23:10:51 +0200162 template = luci.notifier_template(
163 name = "cron",
164 body = io.read_file("luci-notify/email-templates/cron.template"),
165 ),
Oleh Prypin71d17422019-03-28 08:43:16 +0100166)
167
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100168# Recipe definitions:
169
170def recipe(recipe, pkg = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"):
171 return luci.recipe(
172 name = recipe.split("/")[-1],
173 cipd_package = pkg,
174 cipd_version = "refs/heads/master",
175 recipe = recipe,
176 )
177
178recipe("chromium_trybot")
179recipe("run_presubmit")
180recipe("webrtc/auto_roll_webrtc_deps")
181recipe("webrtc/ios")
182recipe("webrtc/ios_api_framework")
183recipe("webrtc/libfuzzer")
184recipe("webrtc/more_configs")
185recipe("webrtc/noop")
186recipe("webrtc/standalone")
187recipe("lkgr_finder", pkg = "infra/recipe_bundles/chromium.googlesource.com/infra/infra")
188
189# Console definitions:
190
191luci.console_view(name = "ci", title = "Main", repo = WEBRTC_GIT, header = "console-header.textpb")
192luci.console_view(name = "perf", title = "Perf", repo = WEBRTC_GIT, header = "console-header.textpb")
193luci.list_view(name = "cron", title = "Cron")
194luci.console_view(name = "fyi", title = "FYI", repo = WEBRTC_GIT, header = "console-header.textpb")
195luci.list_view(name = "try", title = "Tryserver")
196
197def add_milo(builder, views):
198 """Add Milo console entries for the builder.
199
200 Args:
201 builder: builder name (str).
202 views: dict where keys are names of consoles and values are either a
203 category for the console (str, pipe-separated) or True, which means
204 adding to a list view rather than a console.
205 """
206 for view_name, category in views.items():
207 if category == None:
208 continue
209 elif type(category) == "string":
210 category, _, short_name = category.rpartition("|")
211 luci.console_view_entry(
212 console_view = view_name,
213 builder = builder,
214 category = category or None,
215 short_name = short_name or None,
216 )
217 elif category == True:
218 luci.list_view_entry(
219 list_view = view_name,
220 builder = builder,
221 )
222 else:
223 fail("Unexpected value for category: %r" % category)
224
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200225lkgr_builders = {}
226
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100227# Builder-defining functions:
228
229def webrtc_builder(name, recipe = "standalone", dimensions = {}, priority = 30, **kwargs):
230 dimensions = merge_dicts({"cpu": "x86-64"}, dimensions)
231
232 return luci.builder(
233 name = name,
Oleh Prypin705b6a62019-04-03 23:10:51 +0200234 executable = recipe,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100235 dimensions = {k: v for k, v in dimensions.items() if v != None},
236 execution_timeout = 2 * time.hour,
237 priority = priority,
238 build_numbers = True,
239 swarming_tags = ["vpython:native-python-wrapper"],
240 **kwargs
241 )
242
243def ci_builder(
244 name,
245 ci_cat,
246 perf_cat = None,
247 fyi_cat = None,
248 properties = {},
249 dimensions = {},
250 prioritized = False,
Oleh Prypinf5432c52019-03-19 15:10:37 +0100251 enabled = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100252 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200253 """Add a post-submit builder.
254
255 Args:
256 name: builder name (str).
257 ci_cat: the category + name for the /ci/ console, or None to omit from the console.
258 perf_cat: the category + name for the /perf/ console, or None to omit from the console.
259 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
260 properties: dict of properties to pass to the recipe (on top of the default ones).
261 dimensions: dict of Swarming dimensions (strings) to search machines by.
262 prioritized: True to make this builder have a higher priority and never batch builds.
263 enabled: False to exclude this builder from consoles and failure notifications.
264 **kwargs: Pass on to webrtc_builder / luci.builder.
265 Returns:
266 A luci.builder.
267
268 Notifications are also disabled if a builder is not on either of /ci/ or /perf/ consoles.
269 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100270 if prioritized:
271 kwargs["triggering_policy"] = scheduler.greedy_batching(
272 max_batch_size = 1,
273 max_concurrent_invocations = 3,
274 )
275 kwargs["priority"] = 29
276
Oleh Prypinf5432c52019-03-19 15:10:37 +0100277 if enabled:
278 add_milo(name, {"ci": ci_cat, "perf": perf_cat, "fyi": fyi_cat})
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200279 if ci_cat:
280 lkgr_builders[name] = True
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100281 return webrtc_builder(
282 name = name,
283 properties = merge_dicts({"mastername": "client.webrtc"}, properties),
284 dimensions = merge_dicts({"pool": "luci.webrtc.ci"}, dimensions),
285 bucket = "ci",
286 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
Oleh Prypinf5432c52019-03-19 15:10:37 +0100287 triggered_by = ["webrtc-gitiles-trigger-master"] if enabled else None,
Oleh Prypin71d17422019-03-28 08:43:16 +0100288 repo = WEBRTC_GIT,
Oleh Prypinae12e172019-04-05 14:51:52 +0200289 notifies = ["ci_notifier"] if enabled and (ci_cat or perf_cat) else None,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100290 **kwargs
291 )
292
293def try_builder(
294 name,
295 try_cat = True,
296 fyi_cat = None,
297 properties = {},
298 dimensions = {},
299 cq = {},
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100300 branch_cq = True,
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100301 **kwargs):
Oleh Prypine5677672019-04-25 12:21:35 +0200302 """Add a pre-submit builder.
303
304 Args:
305 name: builder name (str).
306 try_cat: boolean, whether to include this builder in the /try/ console. See also: `add_milo`.
307 fyi_cat: the category + name for the /fyi/ console, or None to omit from the console.
308 properties: dict of properties to pass to the recipe (on top of the default ones).
309 dimensions: dict of Swarming dimensions (strings) to search machines by.
310 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 +0100311 branch_cq: False to exclude this builder just from the release-branch CQ.
Oleh Prypine5677672019-04-25 12:21:35 +0200312 **kwargs: Pass on to webrtc_builder / luci.builder.
313 Returns:
314 A luci.builder.
315 """
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100316 add_milo(name, {"try": try_cat, "fyi": fyi_cat})
317 if cq != None:
318 luci.cq_tryjob_verifier(
319 builder = name,
320 cq_group = "cq",
321 **cq
322 )
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100323 if branch_cq:
324 luci.cq_tryjob_verifier(
325 builder = name,
326 cq_group = "cq_branch",
327 **cq
328 )
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100329
330 return webrtc_builder(
331 name = name,
332 properties = merge_dicts({"mastername": "tryserver.webrtc"}, properties),
333 dimensions = merge_dicts({"pool": "luci.webrtc.try"}, dimensions),
334 bucket = "try",
335 service_account = "webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com",
336 **kwargs
337 )
338
339def perf_builder(
340 name,
341 perf_cat,
342 recipe = "standalone",
343 properties = {},
344 dimensions = {},
345 **kwargs):
346 add_milo(name, {"perf": perf_cat})
347 return webrtc_builder(
348 name = name,
349 recipe = recipe,
350 properties = merge_dicts({"mastername": "client.webrtc.perf"}, properties),
351 dimensions = merge_dicts({"pool": "luci.webrtc.perf", "os": "Linux", "cpu": None}, dimensions),
352 bucket = "perf",
353 service_account = "webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
354 # log_base of 1.7 means:
355 # when there are P pending builds, LUCI will batch the first B builds.
356 # P: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
357 # B: 1 1 2 2 3 3 3 3 4 4 4 4 4 4 5 ...
358 triggering_policy = scheduler.logarithmic_batching(log_base = 17 / 10),
359 **kwargs
360 )
361
362def cron_builder(name, dimensions = {}, **kwargs):
363 add_milo(name, {"cron": True})
364 return webrtc_builder(
365 name = name,
366 dimensions = merge_dicts({"pool": "luci.webrtc.cron", "os": "Linux"}, dimensions),
367 bucket = "cron",
368 service_account = "chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com",
Oleh Prypin71d17422019-03-28 08:43:16 +0100369 repo = WEBRTC_GIT,
370 notifies = ["cron_notifier"],
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100371 **kwargs
372 )
373
374# Helpers:
375
376def merge_dicts(a, b):
377 """Return the result of merging two dicts.
378
379 If matching values are both dicts or both lists, they will be merged (non-recursively).
380
381 Args:
382 a: first dict.
383 b: second dict (takes priority).
384 Returns:
385 Merged dict.
386 """
387 a = dict(a)
388 for k, bv in b.items():
389 av = a.get(k)
390 if type(av) == "dict" and type(bv) == "dict":
391 a[k] = dict(av)
392 a[k].update(bv)
393 elif type(av) == "list" and type(bv) == "list":
394 a[k] = av + bv
395 else:
396 a[k] = bv
397 return a
398
399def normal_builder_factory(**common_kwargs):
400 def builder(*args, **kwargs):
401 return ci_builder(*args, **merge_dicts(common_kwargs, kwargs))
402
403 def try_job(*args, **kwargs):
404 return try_builder(*args, **merge_dicts(common_kwargs, kwargs))
405
406 return builder, try_job
407
408# Mixins:
409
410linux_builder, linux_try_job = normal_builder_factory(
411 dimensions = {"os": "Linux", "inside_docker": "0"},
412)
413
414android_builder, android_try_job = normal_builder_factory(
415 dimensions = {"os": "Linux"},
416)
417
418win_builder, win_try_job = normal_builder_factory(
419 dimensions = {"os": "Windows"},
420)
421
422mac_builder, mac_try_job = normal_builder_factory(
423 dimensions = {"os": "Mac"},
424)
425
426ios_builder, ios_try_job = normal_builder_factory(
427 dimensions = {"os": "Mac-10.13"},
428 recipe = "ios",
429 properties = {"$depot_tools/osx_sdk": {"sdk_version": "10l232m"}},
430 caches = [swarming.cache("osx_sdk")],
431)
432
433# Actual builder configuration:
434
435android_builder("Android32 (M Nexus5X)(dbg)", "Android|arm|dbg")
436android_try_job("android_compile_arm_dbg", cq = None)
437android_try_job("android_arm_dbg")
438android_builder("Android32 (M Nexus5X)", "Android|arm|rel")
439android_try_job("android_arm_rel")
440android_builder("Android32 Builder arm", "Android|arm|size", perf_cat = "Android|arm|Builder|", prioritized = True)
441android_try_job("android_compile_arm_rel")
442perf_builder("Perf Android32 (L Nexus4)", "Android|arm|Tester|L Nexus4", triggered_by = ["Android32 Builder arm"])
443perf_builder("Perf Android32 (K Nexus5)", "Android|arm|Tester|K Nexus5", triggered_by = ["Android32 Builder arm"])
444perf_builder("Perf Android32 (L Nexus5)", "Android|arm|Tester|L Nexus5", triggered_by = ["Android32 Builder arm"])
445perf_builder("Perf Android32 (L Nexus6)", "Android|arm|Tester|L Nexus6", triggered_by = ["Android32 Builder arm"])
446perf_builder("Perf Android32 (L Nexus7.2)", "Android|arm|Tester|L Nexus7.2", triggered_by = ["Android32 Builder arm"])
447perf_builder("Perf Android32 (N Nexus6)", "Android|arm|Tester|N Nexus6", triggered_by = ["Android32 Builder arm"])
448android_builder("Android64 (M Nexus5X)(dbg)", "Android|arm64|dbg")
449android_try_job("android_compile_arm64_dbg", cq = None)
450android_try_job("android_arm64_dbg", cq = None)
451android_builder("Android64 (M Nexus5X)", "Android|arm64|rel")
452android_try_job("android_arm64_rel")
453android_builder("Android64 Builder arm64", "Android|arm64|size", perf_cat = "Android|arm64|Builder|", prioritized = True)
454android_try_job("android_compile_arm64_rel")
455perf_builder("Perf Android64 (L Nexus9)", "Android|arm64|Tester|L Nexus9", triggered_by = ["Android64 Builder arm64"])
456perf_builder("Perf Android64 (N Pixel)", "Android|arm64|Tester|N Pixel", triggered_by = ["Android64 Builder arm64"])
457android_builder("Android64 Builder x64 (dbg)", "Android|x64|dbg")
458android_try_job("android_compile_x64_dbg")
459android_try_job("android_compile_x64_rel", cq = None)
460android_builder("Android32 Builder x86 (dbg)", "Android|x86|dbg")
461android_try_job("android_compile_x86_dbg")
462android_builder("Android32 Builder x86", "Android|x86|rel")
463android_try_job("android_compile_x86_rel")
464android_builder("Android32 (more configs)", "Android|arm|more", recipe = "more_configs")
465android_try_job("android_arm_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100466android_try_job("android_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100467
468ios_builder("iOS32 Debug", "iOS|arm|dbg")
469ios_try_job("ios_compile_arm_dbg")
470ios_builder("iOS32 Release", "iOS|arm|rel")
471ios_try_job("ios_compile_arm_rel")
472ios_builder("iOS64 Debug", "iOS|arm64|dbg")
473ios_try_job("ios_compile_arm64_dbg")
474ios_builder("iOS64 Release", "iOS|arm64|rel")
475ios_try_job("ios_compile_arm64_rel")
476ios_builder("iOS64 Sim Debug (iOS 10.0)", "iOS|x64|10")
477ios_try_job("ios_sim_x64_dbg_ios10")
478ios_builder("iOS64 Sim Debug (iOS 11)", "iOS|x64|11")
479ios_try_job("ios_sim_x64_dbg_ios11")
480ios_builder("iOS64 Sim Debug (iOS 12)", "iOS|x64|12")
481ios_try_job("ios_sim_x64_dbg_ios12")
482ios_builder("iOS API Framework Builder", "iOS|fat|size", recipe = "ios_api_framework", prioritized = True)
483ios_try_job("ios_api_framework", recipe = "ios_api_framework")
484
485linux_builder("Linux32 Debug", "Linux|x86|dbg")
486linux_try_job("linux_x86_dbg")
487linux_builder("Linux32 Release", "Linux|x86|rel")
488linux_try_job("linux_x86_rel")
489linux_builder("Linux64 Debug", "Linux|x64|dbg")
490linux_try_job("linux_dbg", cq = None)
491linux_try_job("linux_compile_dbg")
492linux_builder("Linux64 Release", "Linux|x64|rel")
493linux_try_job("linux_rel")
494linux_builder("Linux64 Builder", "Linux|x64|size", perf_cat = "Linux|x64|Builder|", prioritized = True)
495linux_try_job("linux_compile_rel")
496perf_builder("Perf Linux Trusty", "Linux|x64|Tester|Trusty", triggered_by = ["Linux64 Builder"])
497linux_builder("Linux32 Debug (ARM)", "Linux|arm|dbg")
498linux_try_job("linux_compile_arm_dbg")
499linux_builder("Linux32 Release (ARM)", "Linux|arm|rel")
500linux_try_job("linux_compile_arm_rel")
501linux_builder("Linux64 Debug (ARM)", "Linux|arm64|dbg")
502linux_try_job("linux_compile_arm64_dbg")
503linux_builder("Linux64 Release (ARM)", "Linux|arm64|rel")
504linux_try_job("linux_compile_arm64_rel")
505linux_builder("Linux64 Release (GCC)", "Linux|x64|gcc")
506linux_try_job("linux_compile_gcc_rel")
507linux_builder("Linux Asan", "Linux|x64|asan")
508linux_try_job("linux_asan")
509linux_builder("Linux MSan", "Linux|x64|msan")
510linux_try_job("linux_msan")
511linux_builder("Linux Tsan v2", "Linux|x64|tsan")
512linux_try_job("linux_tsan2")
513linux_builder("Linux UBSan", "Linux|x64|ubsan")
514linux_try_job("linux_ubsan")
515linux_builder("Linux UBSan vptr", "Linux|x64|ubsan")
516linux_try_job("linux_ubsan_vptr")
517linux_builder("Linux64 Release (Libfuzzer)", "Linux|x64|fuzz", recipe = "libfuzzer")
518linux_try_job("linux_libfuzzer_rel", recipe = "libfuzzer")
519linux_builder("Linux (more configs)", "Linux|x64|more", recipe = "more_configs")
520linux_try_job("linux_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100521linux_try_job("linux_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100522
523mac_builder("Mac64 Debug", "Mac|x64|dbg")
524mac_try_job("mac_dbg", cq = None)
525mac_try_job("mac_compile_dbg")
526mac_builder("Mac64 Release", "Mac|x64|rel")
527mac_try_job("mac_rel")
528mac_try_job("mac_compile_rel", cq = None)
529mac_builder("Mac64 Builder", ci_cat = None, perf_cat = "Mac|x64|Builder|")
530perf_builder("Perf Mac 10.11", "Mac|x64|Tester|10.11", triggered_by = ["Mac64 Builder"])
531mac_builder("Mac Asan", "Mac|x64|asan")
532mac_try_job("mac_asan")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100533mac_try_job("mac_chromium_compile", recipe = "chromium_trybot", dimensions = {"cores": "8"}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100534
535win_builder("Win32 Debug", "Win MSVC|x86|dbg")
536win_try_job("win_x86_msvc_dbg")
537win_try_job("win_compile_x86_msvc_dbg", cq = None)
Oleh Prypin63041b82019-03-19 22:56:01 +0000538win_builder("Win32 Release", "Win MSVC|x86|rel")
539win_try_job("win_x86_msvc_rel")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100540win_try_job("win_compile_x86_msvc_rel", cq = None)
541win_builder("Win64 Debug", "Win MSVC|x64|dbg")
542win_try_job("win_x64_msvc_dbg")
543win_try_job("win_compile_x64_msvc_dbg", cq = None)
544win_builder("Win64 Release", "Win MSVC|x64|rel")
545win_try_job("win_x64_msvc_rel")
546win_try_job("win_compile_x64_msvc_rel", cq = None)
547win_builder("Win32 Debug (Clang)", "Win Clang|x86|dbg")
548win_try_job("win_x86_clang_dbg", cq = None)
549win_try_job("win_compile_x86_clang_dbg")
550win_builder("Win32 Release (Clang)", "Win Clang|x86|rel")
551win_try_job("win_x86_clang_rel")
552win_try_job("win_compile_x86_clang_rel", cq = None)
553win_builder("Win32 Builder (Clang)", ci_cat = None, perf_cat = "Win|x86|Builder|")
554perf_builder("Perf Win7", "Win|x86|Tester|7", triggered_by = ["Win32 Builder (Clang)"])
555win_builder("Win64 Debug (Clang)", "Win Clang|x64|dbg")
556win_try_job("win_x64_clang_dbg", cq = None)
557win_try_job("win_x64_clang_dbg_win8", cq = None)
558win_try_job("win_x64_clang_dbg_win10", cq = None)
559win_try_job("win_compile_x64_clang_dbg")
560win_builder("Win64 Release (Clang)", "Win Clang|x64|rel")
561win_try_job("win_x64_clang_rel", cq = None)
562win_try_job("win_compile_x64_clang_rel")
Mirko Bonadeiafbe33d2019-05-31 09:27:54 +0200563win_builder("Win64 ASan", "Win Clang|x64|asan")
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100564win_try_job("win_asan")
565win_builder("Win64 UWP", ci_cat = None, fyi_cat = "")
566win_try_job("win_x64_uwp", cq = None, try_cat = None, fyi_cat = "")
567win_builder("Win (more configs)", "Win Clang|x86|more", recipe = "more_configs")
568win_try_job("win_x86_more_configs", recipe = "more_configs")
Oleh Prypin7d1cabe2019-03-14 15:10:30 +0100569win_try_job("win_chromium_compile", recipe = "chromium_trybot", branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100570
571linux_try_job(
572 "presubmit",
573 recipe = "run_presubmit",
574 properties = {"repo_name": "webrtc", "runhooks": True},
575 priority = 28,
576 cq = {"disable_reuse": True},
577)
Oleh Prypin23fa98f2019-06-17 09:19:23 +0000578linux_try_job("noop", recipe = "noop", cq = {
579 "equivalent_builder": "webrtc-internal:g3.webrtc-internal.try/internal_compile_lite",
580 "equivalent_builder_percentage": 100,
581 "equivalent_builder_whitelist": "project-webrtc-internal-tryjob-access",
582}, branch_cq = False)
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100583
584cron_builder(
585 "Auto-roll - WebRTC DEPS",
586 recipe = "auto_roll_webrtc_deps",
587 schedule = "0 */1 * * *", # Hourly.
588)
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200589
590lkgr_config = {
591 "project": "webrtc",
592 "source_url": WEBRTC_GIT,
593 "status_url": "https://webrtc-status.appspot.com",
594 "allowed_lag": 300, # hours
595 "allowed_gap": 12, # commits behind
596 "error_recipients": "webrtc-troopers-robots@google.com",
597 "masters": {
598 "client.webrtc": {
599 "base_url": "https://build.chromium.org/p/client.webrtc",
600 "builders": sorted(lkgr_builders),
601 },
602 "chromium.webrtc.fyi": {
603 "base_url": "https://build.chromium.org/p/chromium.webrtc.fyi",
604 "builders": [
605 "WebRTC Chromium FYI Android Builder (dbg)",
606 "WebRTC Chromium FYI Android Builder ARM64 (dbg)",
607 "WebRTC Chromium FYI Android Builder",
608 "WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)",
609 "WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)",
610 "WebRTC Chromium FYI Linux Builder (dbg)",
611 "WebRTC Chromium FYI Linux Builder",
612 "WebRTC Chromium FYI Linux Tester",
613 "WebRTC Chromium FYI Mac Builder (dbg)",
614 "WebRTC Chromium FYI Mac Builder",
615 "WebRTC Chromium FYI Mac Tester",
616 "WebRTC Chromium FYI Win Builder (dbg)",
617 "WebRTC Chromium FYI Win Builder",
618 "WebRTC Chromium FYI Win10 Tester",
619 "WebRTC Chromium FYI Win7 Tester",
620 "WebRTC Chromium FYI Win8 Tester",
621 "WebRTC Chromium FYI ios-device",
622 "WebRTC Chromium FYI ios-simulator",
623 ],
624 },
625 },
626}
627
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100628cron_builder(
629 "WebRTC lkgr finder",
630 recipe = "lkgr_finder",
Oleh Prypin8f0dc312019-05-31 15:54:35 +0200631 properties = {
632 "project": "webrtc",
633 "repo": WEBRTC_GIT,
634 "ref": "refs/heads/lkgr",
635 "lkgr_status_gs_path": "chromium-webrtc/lkgr-status",
636 "config": lkgr_config,
637 },
Oleh Prypin1a0593f2019-03-11 09:43:28 +0100638 schedule = "*/10 * * * *", # Every 10 minutes.
639)