xref: /aosp_15_r20/external/libyuv/infra/config/main.star (revision 4e366538070a3a6c5c163c31b791eab742e1657a)
1*4e366538SXin Li#!/usr/bin/env lucicfg
2*4e366538SXin Li# https://chromium.googlesource.com/infra/luci/luci-go/+/master/lucicfg/doc/
3*4e366538SXin Li
4*4e366538SXin Li"""LUCI project configuration for libyuv CQ and CI."""
5*4e366538SXin Li
6*4e366538SXin Lilucicfg.check_version("1.30.9")
7*4e366538SXin Li
8*4e366538SXin LiLIBYUV_GIT = "https://chromium.googlesource.com/libyuv/libyuv"
9*4e366538SXin LiLIBYUV_GERRIT = "https://chromium-review.googlesource.com/libyuv/libyuv"
10*4e366538SXin Li
11*4e366538SXin LiRECLIENT_CI = {
12*4e366538SXin Li    "instance": "rbe-webrtc-trusted",
13*4e366538SXin Li    "metrics_project": "chromium-reclient-metrics",
14*4e366538SXin Li}
15*4e366538SXin Li
16*4e366538SXin LiRECLIENT_CQ = {
17*4e366538SXin Li    "instance": "rbe-webrtc-untrusted",
18*4e366538SXin Li    "metrics_project": "chromium-reclient-metrics",
19*4e366538SXin Li}
20*4e366538SXin Li
21*4e366538SXin Li# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
22*4e366538SXin Lilucicfg.enable_experiment("crbug.com/1182002")
23*4e366538SXin Li
24*4e366538SXin Liluci.builder.defaults.experiments.set(
25*4e366538SXin Li    {
26*4e366538SXin Li        "luci.recipes.use_python3": 100,
27*4e366538SXin Li    },
28*4e366538SXin Li)
29*4e366538SXin Li
30*4e366538SXin Lilucicfg.config(
31*4e366538SXin Li    lint_checks = ["default"],
32*4e366538SXin Li    config_dir = ".",
33*4e366538SXin Li    tracked_files = [
34*4e366538SXin Li        "commit-queue.cfg",
35*4e366538SXin Li        "cr-buildbucket.cfg",
36*4e366538SXin Li        "luci-logdog.cfg",
37*4e366538SXin Li        "luci-milo.cfg",
38*4e366538SXin Li        "luci-scheduler.cfg",
39*4e366538SXin Li        "project.cfg",
40*4e366538SXin Li        "realms.cfg",
41*4e366538SXin Li    ],
42*4e366538SXin Li)
43*4e366538SXin Li
44*4e366538SXin Li# Generates project.cfg
45*4e366538SXin Li
46*4e366538SXin Liluci.project(
47*4e366538SXin Li    name = "libyuv",
48*4e366538SXin Li    buildbucket = "cr-buildbucket.appspot.com",
49*4e366538SXin Li    logdog = "luci-logdog.appspot.com",
50*4e366538SXin Li    milo = "luci-milo.appspot.com",
51*4e366538SXin Li    notify = "luci-notify.appspot.com",
52*4e366538SXin Li    scheduler = "luci-scheduler.appspot.com",
53*4e366538SXin Li    swarming = "chromium-swarm.appspot.com",
54*4e366538SXin Li    acls = [
55*4e366538SXin Li        acl.entry(acl.PROJECT_CONFIGS_READER, groups = ["all"]),
56*4e366538SXin Li        acl.entry(acl.LOGDOG_READER, groups = ["all"]),
57*4e366538SXin Li        acl.entry(acl.LOGDOG_WRITER, groups = ["luci-logdog-chromium-writers"]),
58*4e366538SXin Li        acl.entry(acl.SCHEDULER_READER, groups = ["all"]),
59*4e366538SXin Li        acl.entry(acl.SCHEDULER_OWNER, groups = ["project-libyuv-admins"]),
60*4e366538SXin Li        acl.entry(acl.BUILDBUCKET_READER, groups = ["all"]),
61*4e366538SXin Li        acl.entry(acl.BUILDBUCKET_OWNER, groups = ["project-libyuv-admins"]),
62*4e366538SXin Li    ],
63*4e366538SXin Li    bindings = [
64*4e366538SXin Li        luci.binding(
65*4e366538SXin Li            roles = "role/swarming.taskTriggerer",  # for LED tasks.
66*4e366538SXin Li            groups = "project-libyuv-admins",
67*4e366538SXin Li        ),
68*4e366538SXin Li        luci.binding(
69*4e366538SXin Li            roles = "role/configs.validator",
70*4e366538SXin Li            users = "libyuv-try-builder@chops-service-accounts.iam.gserviceaccount.com",
71*4e366538SXin Li        ),
72*4e366538SXin Li    ],
73*4e366538SXin Li)
74*4e366538SXin Li
75*4e366538SXin Li# Generates luci-logdog.cfg
76*4e366538SXin Li
77*4e366538SXin Liluci.logdog(
78*4e366538SXin Li    gs_bucket = "chromium-luci-logdog",
79*4e366538SXin Li)
80*4e366538SXin Li
81*4e366538SXin Li# Generates luci-scheduler.cfg
82*4e366538SXin Li
83*4e366538SXin Liluci.gitiles_poller(
84*4e366538SXin Li    name = "master-gitiles-trigger",
85*4e366538SXin Li    bucket = "ci",
86*4e366538SXin Li    repo = LIBYUV_GIT,
87*4e366538SXin Li)
88*4e366538SXin Li
89*4e366538SXin Li# Generates luci-milo.cfg
90*4e366538SXin Li
91*4e366538SXin Liluci.milo(
92*4e366538SXin Li    logo = "https://storage.googleapis.com/chrome-infra-public/logo/libyuv-logo.png",
93*4e366538SXin Li)
94*4e366538SXin Li
95*4e366538SXin Lidef libyuv_ci_view(name, category, short_name):
96*4e366538SXin Li    return luci.console_view_entry(
97*4e366538SXin Li        console_view = "main",
98*4e366538SXin Li        builder = name,
99*4e366538SXin Li        category = category,
100*4e366538SXin Li        short_name = short_name,
101*4e366538SXin Li    )
102*4e366538SXin Li
103*4e366538SXin Lidef libyuv_try_view(name):
104*4e366538SXin Li    return luci.list_view_entry(
105*4e366538SXin Li        list_view = "try",
106*4e366538SXin Li        builder = name,
107*4e366538SXin Li    )
108*4e366538SXin Li
109*4e366538SXin Liluci.console_view(
110*4e366538SXin Li    name = "main",
111*4e366538SXin Li    title = "libyuv Main Console",
112*4e366538SXin Li    include_experimental_builds = True,
113*4e366538SXin Li    repo = LIBYUV_GIT,
114*4e366538SXin Li)
115*4e366538SXin Li
116*4e366538SXin Liluci.list_view(
117*4e366538SXin Li    name = "cron",
118*4e366538SXin Li    title = "Cron",
119*4e366538SXin Li    entries = ["DEPS Autoroller"],
120*4e366538SXin Li)
121*4e366538SXin Li
122*4e366538SXin Liluci.list_view(
123*4e366538SXin Li    name = "try",
124*4e366538SXin Li    title = "libyuv Try Builders",
125*4e366538SXin Li)
126*4e366538SXin Li
127*4e366538SXin Li# Generates commit-queue.cfg
128*4e366538SXin Li
129*4e366538SXin Lidef libyuv_try_job_verifier(name, cq_group, experiment_percentage):
130*4e366538SXin Li    return luci.cq_tryjob_verifier(
131*4e366538SXin Li        builder = name,
132*4e366538SXin Li        cq_group = cq_group,
133*4e366538SXin Li        experiment_percentage = experiment_percentage,
134*4e366538SXin Li    )
135*4e366538SXin Li
136*4e366538SXin Liluci.cq(
137*4e366538SXin Li    status_host = "chromium-cq-status.appspot.com",
138*4e366538SXin Li    submit_max_burst = 4,
139*4e366538SXin Li    submit_burst_delay = 8 * time.minute,
140*4e366538SXin Li)
141*4e366538SXin Li
142*4e366538SXin Liluci.cq_group(
143*4e366538SXin Li    name = "master",
144*4e366538SXin Li    watch = [
145*4e366538SXin Li        cq.refset(
146*4e366538SXin Li            repo = LIBYUV_GERRIT,
147*4e366538SXin Li            refs = ["refs/heads/main", "refs/heads/master"],
148*4e366538SXin Li        ),
149*4e366538SXin Li    ],
150*4e366538SXin Li    acls = [
151*4e366538SXin Li        acl.entry(acl.CQ_COMMITTER, groups = ["project-libyuv-committers"]),
152*4e366538SXin Li        acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-libyuv-tryjob-access"]),
153*4e366538SXin Li    ],
154*4e366538SXin Li    retry_config = cq.RETRY_ALL_FAILURES,
155*4e366538SXin Li    cancel_stale_tryjobs = True,
156*4e366538SXin Li)
157*4e366538SXin Li
158*4e366538SXin Liluci.cq_group(
159*4e366538SXin Li    name = "config",
160*4e366538SXin Li    watch = [
161*4e366538SXin Li        cq.refset(
162*4e366538SXin Li            repo = LIBYUV_GERRIT,
163*4e366538SXin Li            refs = ["refs/heads/infra/config"],
164*4e366538SXin Li        ),
165*4e366538SXin Li    ],
166*4e366538SXin Li    acls = [
167*4e366538SXin Li        acl.entry(acl.CQ_COMMITTER, groups = ["project-libyuv-committers"]),
168*4e366538SXin Li        acl.entry(acl.CQ_DRY_RUNNER, groups = ["project-libyuv-tryjob-access"]),
169*4e366538SXin Li    ],
170*4e366538SXin Li    retry_config = cq.RETRY_ALL_FAILURES,
171*4e366538SXin Li    cancel_stale_tryjobs = True,
172*4e366538SXin Li)
173*4e366538SXin Li
174*4e366538SXin Li# Generates cr-buildbucket.cfg
175*4e366538SXin Li
176*4e366538SXin Liluci.bucket(
177*4e366538SXin Li    name = "ci",
178*4e366538SXin Li)
179*4e366538SXin Liluci.bucket(
180*4e366538SXin Li    name = "try",
181*4e366538SXin Li    acls = [
182*4e366538SXin Li        acl.entry(acl.BUILDBUCKET_TRIGGERER, groups = [
183*4e366538SXin Li            "project-libyuv-tryjob-access",
184*4e366538SXin Li            "service-account-cq",
185*4e366538SXin Li        ]),
186*4e366538SXin Li    ],
187*4e366538SXin Li)
188*4e366538SXin Liluci.bucket(
189*4e366538SXin Li    name = "cron",
190*4e366538SXin Li)
191*4e366538SXin Li
192*4e366538SXin Lidef get_os_dimensions(os):
193*4e366538SXin Li    if os == "android":
194*4e366538SXin Li        return {"device_type": "walleye"}
195*4e366538SXin Li    if os == "ios" or os == "mac":
196*4e366538SXin Li        return {"os": "Mac-12", "cpu": "x86-64"}
197*4e366538SXin Li    elif os == "win":
198*4e366538SXin Li        return {"os": "Windows-10", "cores": "8", "cpu": "x86-64"}
199*4e366538SXin Li    elif os == "linux":
200*4e366538SXin Li        return {"os": "Ubuntu-18.04", "cores": "8", "cpu": "x86-64"}
201*4e366538SXin Li    return {}
202*4e366538SXin Li
203*4e366538SXin Lidef libyuv_ci_builder(name, dimensions, properties, triggered_by):
204*4e366538SXin Li    return luci.builder(
205*4e366538SXin Li        name = name,
206*4e366538SXin Li        dimensions = dimensions,
207*4e366538SXin Li        properties = properties,
208*4e366538SXin Li        bucket = "ci",
209*4e366538SXin Li        service_account = "[email protected]",
210*4e366538SXin Li        triggered_by = triggered_by,
211*4e366538SXin Li        swarming_tags = ["vpython:native-python-wrapper"],
212*4e366538SXin Li        execution_timeout = 180 * time.minute,
213*4e366538SXin Li        build_numbers = True,
214*4e366538SXin Li        executable = luci.recipe(
215*4e366538SXin Li            name = "libyuv/libyuv",
216*4e366538SXin Li            cipd_package = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",
217*4e366538SXin Li            use_python3 = True,
218*4e366538SXin Li        ),
219*4e366538SXin Li    )
220*4e366538SXin Li
221*4e366538SXin Lidef libyuv_try_builder(name, dimensions, properties, recipe_name = "libyuv/libyuv"):
222*4e366538SXin Li    return luci.builder(
223*4e366538SXin Li        name = name,
224*4e366538SXin Li        dimensions = dimensions,
225*4e366538SXin Li        properties = properties,
226*4e366538SXin Li        bucket = "try",
227*4e366538SXin Li        service_account = "libyuv-try-builder@chops-service-accounts.iam.gserviceaccount.com",
228*4e366538SXin Li        swarming_tags = ["vpython:native-python-wrapper"],
229*4e366538SXin Li        execution_timeout = 180 * time.minute,
230*4e366538SXin Li        build_numbers = True,
231*4e366538SXin Li        executable = luci.recipe(
232*4e366538SXin Li            name = recipe_name,
233*4e366538SXin Li            cipd_package = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",
234*4e366538SXin Li            use_python3 = True,
235*4e366538SXin Li        ),
236*4e366538SXin Li    )
237*4e366538SXin Li
238*4e366538SXin Lidef ci_builder(name, os, category, short_name = None):
239*4e366538SXin Li    dimensions = get_os_dimensions(os)
240*4e366538SXin Li    properties = {"$build/reclient": RECLIENT_CI}
241*4e366538SXin Li
242*4e366538SXin Li    dimensions["pool"] = "luci.flex.ci"
243*4e366538SXin Li    properties["builder_group"] = "client.libyuv"
244*4e366538SXin Li
245*4e366538SXin Li    triggered_by = ["master-gitiles-trigger" if os != "android" else "Android Debug"]
246*4e366538SXin Li    libyuv_ci_view(name, category, short_name)
247*4e366538SXin Li    return libyuv_ci_builder(name, dimensions, properties, triggered_by)
248*4e366538SXin Li
249*4e366538SXin Lidef try_builder(name, os, experiment_percentage = None):
250*4e366538SXin Li    dimensions = get_os_dimensions(os)
251*4e366538SXin Li    properties = {"$build/reclient": RECLIENT_CQ}
252*4e366538SXin Li
253*4e366538SXin Li    dimensions["pool"] = "luci.flex.try"
254*4e366538SXin Li    properties["builder_group"] = "tryserver.libyuv"
255*4e366538SXin Li
256*4e366538SXin Li    if name == "presubmit":
257*4e366538SXin Li        recipe_name = "run_presubmit"
258*4e366538SXin Li        properties["repo_name"] = "libyuv"
259*4e366538SXin Li        properties["runhooks"] = True
260*4e366538SXin Li        libyuv_try_job_verifier(name, "config", experiment_percentage)
261*4e366538SXin Li        return libyuv_try_builder(name, dimensions, properties, recipe_name)
262*4e366538SXin Li
263*4e366538SXin Li    libyuv_try_job_verifier(name, "master", experiment_percentage)
264*4e366538SXin Li    libyuv_try_view(name)
265*4e366538SXin Li    return libyuv_try_builder(name, dimensions, properties)
266*4e366538SXin Li
267*4e366538SXin Liluci.builder(
268*4e366538SXin Li    name = "DEPS Autoroller",
269*4e366538SXin Li    bucket = "cron",
270*4e366538SXin Li    service_account = "libyuv-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com",
271*4e366538SXin Li    dimensions = {
272*4e366538SXin Li        "pool": "luci.webrtc.cron",
273*4e366538SXin Li        "os": "Linux",
274*4e366538SXin Li        "cpu": "x86-64",
275*4e366538SXin Li    },
276*4e366538SXin Li    swarming_tags = ["vpython:native-python-wrapper"],
277*4e366538SXin Li    execution_timeout = 120 * time.minute,
278*4e366538SXin Li    build_numbers = True,
279*4e366538SXin Li    schedule = "0 14 * * *",  # Every 2 hours.
280*4e366538SXin Li    executable = luci.recipe(
281*4e366538SXin Li        name = "libyuv/roll_deps",
282*4e366538SXin Li        cipd_package = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",
283*4e366538SXin Li        use_python3 = True,
284*4e366538SXin Li    ),
285*4e366538SXin Li)
286*4e366538SXin Li
287*4e366538SXin Lici_builder("Android ARM64 Debug", "linux", "Android|Builder", "dbg")
288*4e366538SXin Lici_builder("Android Debug", "linux", "Android|Builder", "dbg")
289*4e366538SXin Lici_builder("Android Release", "linux", "Android|Builder", "rel")
290*4e366538SXin Lici_builder("Android32 x86 Debug", "linux", "Android|Builder|x86", "dbg")
291*4e366538SXin Lici_builder("Android64 x64 Debug", "linux", "Android|Builder|x64", "dbg")
292*4e366538SXin Lici_builder("Android Tester ARM32 Debug (Nexus 5X)", "android", "Android|Tester|ARM 32", "dbg")
293*4e366538SXin Lici_builder("Android Tester ARM32 Release (Nexus 5X)", "android", "Android|Tester|ARM 32", "rel")
294*4e366538SXin Lici_builder("Android Tester ARM64 Debug (Nexus 5X)", "android", "Android|Tester|ARM 64", "dbg")
295*4e366538SXin Lici_builder("Linux Asan", "linux", "Linux", "asan")
296*4e366538SXin Lici_builder("Linux MSan", "linux", "Linux", "msan")
297*4e366538SXin Lici_builder("Linux Tsan v2", "linux", "Linux", "tsan")
298*4e366538SXin Lici_builder("Linux UBSan", "linux", "Linux|UBSan")
299*4e366538SXin Lici_builder("Linux UBSan vptr", "linux", "Linux|UBSan", "vptr")
300*4e366538SXin Lici_builder("Linux32 Debug", "linux", "Linux|32", "dbg")
301*4e366538SXin Lici_builder("Linux32 Release", "linux", "Linux|32", "rel")
302*4e366538SXin Lici_builder("Linux64 Debug", "linux", "Linux|64", "dbg")
303*4e366538SXin Lici_builder("Linux64 Release", "linux", "Linux|64", "rel")
304*4e366538SXin Lici_builder("Mac Asan", "mac", "Mac", "asan")
305*4e366538SXin Lici_builder("Mac64 Debug", "mac", "Mac", "dbg")
306*4e366538SXin Lici_builder("Mac64 Release", "mac", "Mac", "rel")
307*4e366538SXin Lici_builder("Win32 Debug", "win", "Win|32|Debug")
308*4e366538SXin Lici_builder("Win32 Debug (Clang)", "win", "Win|32|Debug", "clg")
309*4e366538SXin Lici_builder("Win32 Release", "win", "Win|32|Release")
310*4e366538SXin Lici_builder("Win32 Release (Clang)", "win", "Win|32|Release", "clg")
311*4e366538SXin Lici_builder("Win64 Debug", "win", "Win|64|Debug", "clg")
312*4e366538SXin Lici_builder("Win64 Debug (Clang)", "win", "Win|64|Debug", "clg")
313*4e366538SXin Lici_builder("Win64 Release", "win", "Win|64|Release")
314*4e366538SXin Lici_builder("Win64 Release (Clang)", "win", "Win|64|Release", "clg")
315*4e366538SXin Lici_builder("iOS ARM64 Debug", "ios", "iOS|ARM64", "dbg")
316*4e366538SXin Lici_builder("iOS ARM64 Release", "ios", "iOS|ARM64", "rel")
317*4e366538SXin Li
318*4e366538SXin Li# TODO(crbug.com/1242847): make this not experimental.
319*4e366538SXin Litry_builder("android", "android", experiment_percentage = 100)
320*4e366538SXin Litry_builder("android_arm64", "android", experiment_percentage = 100)
321*4e366538SXin Litry_builder("android_rel", "android", experiment_percentage = 100)
322*4e366538SXin Li
323*4e366538SXin Litry_builder("android_x64", "linux")
324*4e366538SXin Litry_builder("android_x86", "linux")
325*4e366538SXin Litry_builder("ios_arm64", "ios")
326*4e366538SXin Litry_builder("ios_arm64_rel", "ios")
327*4e366538SXin Litry_builder("linux", "linux")
328*4e366538SXin Litry_builder("linux_asan", "linux")
329*4e366538SXin Litry_builder("linux_gcc", "linux", experiment_percentage = 100)
330*4e366538SXin Litry_builder("linux_msan", "linux")
331*4e366538SXin Litry_builder("linux_rel", "linux")
332*4e366538SXin Litry_builder("linux_tsan2", "linux")
333*4e366538SXin Litry_builder("linux_ubsan", "linux")
334*4e366538SXin Litry_builder("linux_ubsan_vptr", "linux")
335*4e366538SXin Litry_builder("mac", "mac")
336*4e366538SXin Litry_builder("mac_asan", "mac")
337*4e366538SXin Litry_builder("mac_rel", "mac")
338*4e366538SXin Litry_builder("win", "win")
339*4e366538SXin Litry_builder("win_clang", "win")
340*4e366538SXin Litry_builder("win_clang_rel", "win")
341*4e366538SXin Litry_builder("win_rel", "win")
342*4e366538SXin Litry_builder("win_x64_clang_rel", "win")
343*4e366538SXin Litry_builder("win_x64_rel", "win")
344*4e366538SXin Litry_builder("presubmit", "linux")
345