xref: /aosp_15_r20/external/crosvm/infra/config/main.star (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env lucicfg
2*bb4ee6a4SAndroid Build Coastguard Worker
3*bb4ee6a4SAndroid Build Coastguard Workerlucicfg.check_version("1.30.9", "Please update depot_tools")
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Worker# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
6*bb4ee6a4SAndroid Build Coastguard Workerlucicfg.enable_experiment("crbug.com/1182002")
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard Workerlucicfg.config(
9*bb4ee6a4SAndroid Build Coastguard Worker    config_dir = "generated",
10*bb4ee6a4SAndroid Build Coastguard Worker    tracked_files = ["*.cfg"],
11*bb4ee6a4SAndroid Build Coastguard Worker    fail_on_warnings = True,
12*bb4ee6a4SAndroid Build Coastguard Worker    lint_checks = ["default", "-module-docstring"],
13*bb4ee6a4SAndroid Build Coastguard Worker)
14*bb4ee6a4SAndroid Build Coastguard Worker
15*bb4ee6a4SAndroid Build Coastguard Workerluci.project(
16*bb4ee6a4SAndroid Build Coastguard Worker    name = "crosvm",
17*bb4ee6a4SAndroid Build Coastguard Worker    buildbucket = "cr-buildbucket.appspot.com",
18*bb4ee6a4SAndroid Build Coastguard Worker    logdog = "luci-logdog.appspot.com",
19*bb4ee6a4SAndroid Build Coastguard Worker    milo = "luci-milo.appspot.com",
20*bb4ee6a4SAndroid Build Coastguard Worker    notify = "luci-notify.appspot.com",
21*bb4ee6a4SAndroid Build Coastguard Worker    scheduler = "luci-scheduler.appspot.com",
22*bb4ee6a4SAndroid Build Coastguard Worker    swarming = "chromium-swarm.appspot.com",
23*bb4ee6a4SAndroid Build Coastguard Worker    tricium = "tricium-prod.appspot.com",
24*bb4ee6a4SAndroid Build Coastguard Worker    bindings = [
25*bb4ee6a4SAndroid Build Coastguard Worker        # Allow owners to submit any task in any pool.
26*bb4ee6a4SAndroid Build Coastguard Worker        luci.binding(
27*bb4ee6a4SAndroid Build Coastguard Worker            roles = [
28*bb4ee6a4SAndroid Build Coastguard Worker                "role/swarming.poolOwner",
29*bb4ee6a4SAndroid Build Coastguard Worker                "role/swarming.poolUser",
30*bb4ee6a4SAndroid Build Coastguard Worker                "role/swarming.taskTriggerer",
31*bb4ee6a4SAndroid Build Coastguard Worker                "role/buildbucket.owner",
32*bb4ee6a4SAndroid Build Coastguard Worker            ],
33*bb4ee6a4SAndroid Build Coastguard Worker            groups = "mdb/crosvm-acl-luci-admin",
34*bb4ee6a4SAndroid Build Coastguard Worker        ),
35*bb4ee6a4SAndroid Build Coastguard Worker
36*bb4ee6a4SAndroid Build Coastguard Worker        # Allow any googler to see all bots and tasks there.
37*bb4ee6a4SAndroid Build Coastguard Worker        luci.binding(
38*bb4ee6a4SAndroid Build Coastguard Worker            roles = "role/swarming.poolViewer",
39*bb4ee6a4SAndroid Build Coastguard Worker            groups = "googlers",
40*bb4ee6a4SAndroid Build Coastguard Worker        ),
41*bb4ee6a4SAndroid Build Coastguard Worker
42*bb4ee6a4SAndroid Build Coastguard Worker        # Allow any googler to read/validate/reimport the project configs.
43*bb4ee6a4SAndroid Build Coastguard Worker        luci.binding(
44*bb4ee6a4SAndroid Build Coastguard Worker            roles = "role/configs.developer",
45*bb4ee6a4SAndroid Build Coastguard Worker            groups = "googlers",
46*bb4ee6a4SAndroid Build Coastguard Worker        ),
47*bb4ee6a4SAndroid Build Coastguard Worker    ],
48*bb4ee6a4SAndroid Build Coastguard Worker    acls = [
49*bb4ee6a4SAndroid Build Coastguard Worker        # Publicly readable.
50*bb4ee6a4SAndroid Build Coastguard Worker        acl.entry(
51*bb4ee6a4SAndroid Build Coastguard Worker            roles = [
52*bb4ee6a4SAndroid Build Coastguard Worker                acl.BUILDBUCKET_READER,
53*bb4ee6a4SAndroid Build Coastguard Worker                acl.LOGDOG_READER,
54*bb4ee6a4SAndroid Build Coastguard Worker                acl.PROJECT_CONFIGS_READER,
55*bb4ee6a4SAndroid Build Coastguard Worker                acl.SCHEDULER_READER,
56*bb4ee6a4SAndroid Build Coastguard Worker            ],
57*bb4ee6a4SAndroid Build Coastguard Worker            groups = "all",
58*bb4ee6a4SAndroid Build Coastguard Worker        ),
59*bb4ee6a4SAndroid Build Coastguard Worker        # Allow committers to use CQ and to force-trigger and stop CI builds.
60*bb4ee6a4SAndroid Build Coastguard Worker        acl.entry(
61*bb4ee6a4SAndroid Build Coastguard Worker            roles = [
62*bb4ee6a4SAndroid Build Coastguard Worker                acl.SCHEDULER_OWNER,
63*bb4ee6a4SAndroid Build Coastguard Worker                acl.CQ_COMMITTER,
64*bb4ee6a4SAndroid Build Coastguard Worker            ],
65*bb4ee6a4SAndroid Build Coastguard Worker            groups = ["googlers", "project-crosvm-committers"],
66*bb4ee6a4SAndroid Build Coastguard Worker        ),
67*bb4ee6a4SAndroid Build Coastguard Worker        # Group with bots that have write access to the Logdog prefix.
68*bb4ee6a4SAndroid Build Coastguard Worker        acl.entry(
69*bb4ee6a4SAndroid Build Coastguard Worker            roles = acl.LOGDOG_WRITER,
70*bb4ee6a4SAndroid Build Coastguard Worker            groups = "luci-logdog-chromium-writers",
71*bb4ee6a4SAndroid Build Coastguard Worker        ),
72*bb4ee6a4SAndroid Build Coastguard Worker    ],
73*bb4ee6a4SAndroid Build Coastguard Worker)
74*bb4ee6a4SAndroid Build Coastguard Worker
75*bb4ee6a4SAndroid Build Coastguard Worker# Per-service tweaks.
76*bb4ee6a4SAndroid Build Coastguard Workerluci.logdog(gs_bucket = "logdog-crosvm-archive")
77*bb4ee6a4SAndroid Build Coastguard Worker
78*bb4ee6a4SAndroid Build Coastguard Worker# Realms with ACLs for corresponding Swarming pools.
79*bb4ee6a4SAndroid Build Coastguard Workerluci.realm(name = "pools/ci")
80*bb4ee6a4SAndroid Build Coastguard Workerluci.realm(name = "pools/try")
81*bb4ee6a4SAndroid Build Coastguard Worker
82*bb4ee6a4SAndroid Build Coastguard Worker# Global recipe defaults
83*bb4ee6a4SAndroid Build Coastguard Workerluci.recipe.defaults.cipd_version.set("refs/heads/main")
84*bb4ee6a4SAndroid Build Coastguard Workerluci.recipe.defaults.cipd_package.set("infra/recipe_bundles/chromium.googlesource.com/crosvm/crosvm")
85*bb4ee6a4SAndroid Build Coastguard Worker
86*bb4ee6a4SAndroid Build Coastguard Worker# The try bucket will include builders which work on pre-commit or pre-review
87*bb4ee6a4SAndroid Build Coastguard Worker# code.
88*bb4ee6a4SAndroid Build Coastguard Workerluci.bucket(name = "try")
89*bb4ee6a4SAndroid Build Coastguard Worker
90*bb4ee6a4SAndroid Build Coastguard Worker# The ci bucket will include builders which work on post-commit code.
91*bb4ee6a4SAndroid Build Coastguard Workerluci.bucket(
92*bb4ee6a4SAndroid Build Coastguard Worker    name = "ci",
93*bb4ee6a4SAndroid Build Coastguard Worker    acls = [
94*bb4ee6a4SAndroid Build Coastguard Worker        acl.entry(
95*bb4ee6a4SAndroid Build Coastguard Worker            roles = acl.BUILDBUCKET_TRIGGERER,
96*bb4ee6a4SAndroid Build Coastguard Worker            groups = [
97*bb4ee6a4SAndroid Build Coastguard Worker                "mdb/crosvm-acl-luci-admin",
98*bb4ee6a4SAndroid Build Coastguard Worker            ],
99*bb4ee6a4SAndroid Build Coastguard Worker        ),
100*bb4ee6a4SAndroid Build Coastguard Worker    ],
101*bb4ee6a4SAndroid Build Coastguard Worker)
102*bb4ee6a4SAndroid Build Coastguard Worker
103*bb4ee6a4SAndroid Build Coastguard Worker# The prod bucket will include builders which work on post-commit code and
104*bb4ee6a4SAndroid Build Coastguard Worker# generate executable artifacts used by other users or machines.
105*bb4ee6a4SAndroid Build Coastguard Workerluci.bucket(name = "prod")
106*bb4ee6a4SAndroid Build Coastguard Worker
107*bb4ee6a4SAndroid Build Coastguard Worker# This sets the default CIPD ref to use in builds to get the right version of
108*bb4ee6a4SAndroid Build Coastguard Worker# recipes for the build.
109*bb4ee6a4SAndroid Build Coastguard Worker#
110*bb4ee6a4SAndroid Build Coastguard Worker# The recipe bundler sets CIPD refs equal in name to the git refs that it
111*bb4ee6a4SAndroid Build Coastguard Worker# processed the recipe code from.
112*bb4ee6a4SAndroid Build Coastguard Worker#
113*bb4ee6a4SAndroid Build Coastguard Worker# Note: This will cause all recipe commits to automatically deploy as soon
114*bb4ee6a4SAndroid Build Coastguard Worker# as the recipe bundler compiles them from your refs/heads/main branch.
115*bb4ee6a4SAndroid Build Coastguard Workercipd_version = "refs/heads/main"
116*bb4ee6a4SAndroid Build Coastguard Worker
117*bb4ee6a4SAndroid Build Coastguard Worker# Configure Change Verifier to watch crosvm
118*bb4ee6a4SAndroid Build Coastguard Workerluci.cq(
119*bb4ee6a4SAndroid Build Coastguard Worker    status_host = "chromium-cq-status.appspot.com",
120*bb4ee6a4SAndroid Build Coastguard Worker)
121*bb4ee6a4SAndroid Build Coastguard Workerluci.cq_group(
122*bb4ee6a4SAndroid Build Coastguard Worker    name = "main",
123*bb4ee6a4SAndroid Build Coastguard Worker    watch = cq.refset(
124*bb4ee6a4SAndroid Build Coastguard Worker        repo = "https://chromium.googlesource.com/crosvm/crosvm",
125*bb4ee6a4SAndroid Build Coastguard Worker        refs = ["refs/heads/.+"],  # will watch all branches
126*bb4ee6a4SAndroid Build Coastguard Worker    ),
127*bb4ee6a4SAndroid Build Coastguard Worker)
128*bb4ee6a4SAndroid Build Coastguard Worker
129*bb4ee6a4SAndroid Build Coastguard Worker# Console showing all postsubmit verify builders
130*bb4ee6a4SAndroid Build Coastguard Workerluci.console_view(
131*bb4ee6a4SAndroid Build Coastguard Worker    name = "Postsubmit",
132*bb4ee6a4SAndroid Build Coastguard Worker    repo = "https://chromium.googlesource.com/crosvm/crosvm",
133*bb4ee6a4SAndroid Build Coastguard Worker)
134*bb4ee6a4SAndroid Build Coastguard Worker
135*bb4ee6a4SAndroid Build Coastguard Worker# View showing all presubmit builders
136*bb4ee6a4SAndroid Build Coastguard Workerluci.list_view(
137*bb4ee6a4SAndroid Build Coastguard Worker    name = "Presubmit",
138*bb4ee6a4SAndroid Build Coastguard Worker)
139*bb4ee6a4SAndroid Build Coastguard Worker
140*bb4ee6a4SAndroid Build Coastguard Worker# View showing all infra builders
141*bb4ee6a4SAndroid Build Coastguard Workerluci.list_view(
142*bb4ee6a4SAndroid Build Coastguard Worker    name = "Infra",
143*bb4ee6a4SAndroid Build Coastguard Worker)
144*bb4ee6a4SAndroid Build Coastguard Worker
145*bb4ee6a4SAndroid Build Coastguard Worker# Allows builders to send email notifications on failures.
146*bb4ee6a4SAndroid Build Coastguard Workerluci.notifier(
147*bb4ee6a4SAndroid Build Coastguard Worker    name = "postsubmit-failures",
148*bb4ee6a4SAndroid Build Coastguard Worker    on_status_change = True,
149*bb4ee6a4SAndroid Build Coastguard Worker    notify_emails = [
150*bb4ee6a4SAndroid Build Coastguard Worker        "[email protected]",
151*bb4ee6a4SAndroid Build Coastguard Worker        "[email protected]",
152*bb4ee6a4SAndroid Build Coastguard Worker        "[email protected]",
153*bb4ee6a4SAndroid Build Coastguard Worker    ],
154*bb4ee6a4SAndroid Build Coastguard Worker)
155*bb4ee6a4SAndroid Build Coastguard Workerluci.notifier(
156*bb4ee6a4SAndroid Build Coastguard Worker    name = "infra-failures",
157*bb4ee6a4SAndroid Build Coastguard Worker    on_status_change = True,
158*bb4ee6a4SAndroid Build Coastguard Worker    notify_emails = [
159*bb4ee6a4SAndroid Build Coastguard Worker        "[email protected]",
160*bb4ee6a4SAndroid Build Coastguard Worker        "[email protected]",
161*bb4ee6a4SAndroid Build Coastguard Worker    ],
162*bb4ee6a4SAndroid Build Coastguard Worker)
163*bb4ee6a4SAndroid Build Coastguard Worker
164*bb4ee6a4SAndroid Build Coastguard Workerdef verify_builder(
165*bb4ee6a4SAndroid Build Coastguard Worker        name,
166*bb4ee6a4SAndroid Build Coastguard Worker        dimensions,
167*bb4ee6a4SAndroid Build Coastguard Worker        presubmit = True,
168*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit = True,
169*bb4ee6a4SAndroid Build Coastguard Worker        properties = dict(),
170*bb4ee6a4SAndroid Build Coastguard Worker        presubmit_properties = dict(),
171*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit_properties = dict(),
172*bb4ee6a4SAndroid Build Coastguard Worker        category = "generic",
173*bb4ee6a4SAndroid Build Coastguard Worker        **args):
174*bb4ee6a4SAndroid Build Coastguard Worker    """Creates both a CI and try builder with the same properties.
175*bb4ee6a4SAndroid Build Coastguard Worker
176*bb4ee6a4SAndroid Build Coastguard Worker    The CI builder is attached to the gitlies poller and console view, and the try builder
177*bb4ee6a4SAndroid Build Coastguard Worker    is added to the change verifier.
178*bb4ee6a4SAndroid Build Coastguard Worker
179*bb4ee6a4SAndroid Build Coastguard Worker    Args:
180*bb4ee6a4SAndroid Build Coastguard Worker        name: Name of the builder
181*bb4ee6a4SAndroid Build Coastguard Worker        dimensions: Passed to luci.builder
182*bb4ee6a4SAndroid Build Coastguard Worker        presubmit: Create a presubmit builder (defaults to True)
183*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit: Create a postsubmit builder (defaults to True)
184*bb4ee6a4SAndroid Build Coastguard Worker        category: Category of this builder in the concole view
185*bb4ee6a4SAndroid Build Coastguard Worker        properties: Builder properties for both presubmit and postsubmit
186*bb4ee6a4SAndroid Build Coastguard Worker        presubmit_properties: Builder properties for only presubmit
187*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit_properties: Builder properties for only postsubmit
188*bb4ee6a4SAndroid Build Coastguard Worker        **args: Passed to luci.builder
189*bb4ee6a4SAndroid Build Coastguard Worker    """
190*bb4ee6a4SAndroid Build Coastguard Worker
191*bb4ee6a4SAndroid Build Coastguard Worker    # CI builder
192*bb4ee6a4SAndroid Build Coastguard Worker    if postsubmit:
193*bb4ee6a4SAndroid Build Coastguard Worker        props = dict(**properties)
194*bb4ee6a4SAndroid Build Coastguard Worker        props.update(postsubmit_properties)
195*bb4ee6a4SAndroid Build Coastguard Worker        luci.builder(
196*bb4ee6a4SAndroid Build Coastguard Worker            name = name,
197*bb4ee6a4SAndroid Build Coastguard Worker            bucket = "ci",
198*bb4ee6a4SAndroid Build Coastguard Worker            service_account = "[email protected]",
199*bb4ee6a4SAndroid Build Coastguard Worker            dimensions = dict(pool = "luci.crosvm.ci", **dimensions),
200*bb4ee6a4SAndroid Build Coastguard Worker            notifies = ["postsubmit-failures"],
201*bb4ee6a4SAndroid Build Coastguard Worker            properties = props,
202*bb4ee6a4SAndroid Build Coastguard Worker            **args
203*bb4ee6a4SAndroid Build Coastguard Worker        )
204*bb4ee6a4SAndroid Build Coastguard Worker        luci.gitiles_poller(
205*bb4ee6a4SAndroid Build Coastguard Worker            name = "main source",
206*bb4ee6a4SAndroid Build Coastguard Worker            bucket = "ci",
207*bb4ee6a4SAndroid Build Coastguard Worker            repo = "https://chromium.googlesource.com/crosvm/crosvm",
208*bb4ee6a4SAndroid Build Coastguard Worker            triggers = ["ci/%s" % name],
209*bb4ee6a4SAndroid Build Coastguard Worker        )
210*bb4ee6a4SAndroid Build Coastguard Worker        luci.console_view_entry(
211*bb4ee6a4SAndroid Build Coastguard Worker            console_view = "Postsubmit",
212*bb4ee6a4SAndroid Build Coastguard Worker            builder = "ci/%s" % name,
213*bb4ee6a4SAndroid Build Coastguard Worker            category = category,
214*bb4ee6a4SAndroid Build Coastguard Worker        )
215*bb4ee6a4SAndroid Build Coastguard Worker
216*bb4ee6a4SAndroid Build Coastguard Worker    # Try builder
217*bb4ee6a4SAndroid Build Coastguard Worker    if presubmit:
218*bb4ee6a4SAndroid Build Coastguard Worker        props = dict(**properties)
219*bb4ee6a4SAndroid Build Coastguard Worker        props.update(presubmit_properties)
220*bb4ee6a4SAndroid Build Coastguard Worker        luci.builder(
221*bb4ee6a4SAndroid Build Coastguard Worker            name = name,
222*bb4ee6a4SAndroid Build Coastguard Worker            bucket = "try",
223*bb4ee6a4SAndroid Build Coastguard Worker            service_account = "[email protected]",
224*bb4ee6a4SAndroid Build Coastguard Worker            dimensions = dict(pool = "luci.crosvm.try", **dimensions),
225*bb4ee6a4SAndroid Build Coastguard Worker            properties = props,
226*bb4ee6a4SAndroid Build Coastguard Worker            **args
227*bb4ee6a4SAndroid Build Coastguard Worker        )
228*bb4ee6a4SAndroid Build Coastguard Worker        luci.list_view_entry(
229*bb4ee6a4SAndroid Build Coastguard Worker            list_view = "Presubmit",
230*bb4ee6a4SAndroid Build Coastguard Worker            builder = "try/%s" % name,
231*bb4ee6a4SAndroid Build Coastguard Worker        )
232*bb4ee6a4SAndroid Build Coastguard Worker
233*bb4ee6a4SAndroid Build Coastguard Worker        # Attach try builder to Change Verifier
234*bb4ee6a4SAndroid Build Coastguard Worker        luci.cq_tryjob_verifier(
235*bb4ee6a4SAndroid Build Coastguard Worker            builder = "try/%s" % name,
236*bb4ee6a4SAndroid Build Coastguard Worker            cq_group = "main",
237*bb4ee6a4SAndroid Build Coastguard Worker        )
238*bb4ee6a4SAndroid Build Coastguard Worker
239*bb4ee6a4SAndroid Build Coastguard Workerdef verify_linux_builder(arch, **kwargs):
240*bb4ee6a4SAndroid Build Coastguard Worker    """Creates a verify builder that builds crosvm on linux
241*bb4ee6a4SAndroid Build Coastguard Worker
242*bb4ee6a4SAndroid Build Coastguard Worker    Args:
243*bb4ee6a4SAndroid Build Coastguard Worker        arch: Architecture to build and test
244*bb4ee6a4SAndroid Build Coastguard Worker        **kwargs: Passed to verify_builder
245*bb4ee6a4SAndroid Build Coastguard Worker    """
246*bb4ee6a4SAndroid Build Coastguard Worker    name = "linux_%s" % arch
247*bb4ee6a4SAndroid Build Coastguard Worker    verify_builder(
248*bb4ee6a4SAndroid Build Coastguard Worker        name = name,
249*bb4ee6a4SAndroid Build Coastguard Worker        dimensions = {
250*bb4ee6a4SAndroid Build Coastguard Worker            "os": "Ubuntu",
251*bb4ee6a4SAndroid Build Coastguard Worker            "cpu": "x86-64",
252*bb4ee6a4SAndroid Build Coastguard Worker        },
253*bb4ee6a4SAndroid Build Coastguard Worker        executable = luci.recipe(
254*bb4ee6a4SAndroid Build Coastguard Worker            name = "build_linux",
255*bb4ee6a4SAndroid Build Coastguard Worker        ),
256*bb4ee6a4SAndroid Build Coastguard Worker        properties = {
257*bb4ee6a4SAndroid Build Coastguard Worker            "test_arch": arch,
258*bb4ee6a4SAndroid Build Coastguard Worker        },
259*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit_properties = {
260*bb4ee6a4SAndroid Build Coastguard Worker            "profile": "postsubmit",
261*bb4ee6a4SAndroid Build Coastguard Worker        },
262*bb4ee6a4SAndroid Build Coastguard Worker        presubmit_properties = {
263*bb4ee6a4SAndroid Build Coastguard Worker            "profile": "presubmit",
264*bb4ee6a4SAndroid Build Coastguard Worker        },
265*bb4ee6a4SAndroid Build Coastguard Worker        caches = [
266*bb4ee6a4SAndroid Build Coastguard Worker            swarming.cache("builder", name = "linux_builder_cache"),
267*bb4ee6a4SAndroid Build Coastguard Worker        ],
268*bb4ee6a4SAndroid Build Coastguard Worker        category = "linux",
269*bb4ee6a4SAndroid Build Coastguard Worker        **kwargs
270*bb4ee6a4SAndroid Build Coastguard Worker    )
271*bb4ee6a4SAndroid Build Coastguard Worker
272*bb4ee6a4SAndroid Build Coastguard Workerdef infra_builder(name, postsubmit, **args):
273*bb4ee6a4SAndroid Build Coastguard Worker    """Creates a ci job to run infra recipes that are not involved in verifying changes.
274*bb4ee6a4SAndroid Build Coastguard Worker
275*bb4ee6a4SAndroid Build Coastguard Worker    The builders are added to a separate infra dashboard.
276*bb4ee6a4SAndroid Build Coastguard Worker
277*bb4ee6a4SAndroid Build Coastguard Worker    Args:
278*bb4ee6a4SAndroid Build Coastguard Worker        name: Name of the builder
279*bb4ee6a4SAndroid Build Coastguard Worker        postsubmit: True if the builder should run after each submitted commit.
280*bb4ee6a4SAndroid Build Coastguard Worker        **args: Passed to luci.builder
281*bb4ee6a4SAndroid Build Coastguard Worker    """
282*bb4ee6a4SAndroid Build Coastguard Worker    luci.builder(
283*bb4ee6a4SAndroid Build Coastguard Worker        name = name,
284*bb4ee6a4SAndroid Build Coastguard Worker        bucket = "ci",
285*bb4ee6a4SAndroid Build Coastguard Worker        service_account = "[email protected]",
286*bb4ee6a4SAndroid Build Coastguard Worker        dimensions = {
287*bb4ee6a4SAndroid Build Coastguard Worker            "pool": "luci.crosvm.ci",
288*bb4ee6a4SAndroid Build Coastguard Worker            "os": "Ubuntu",
289*bb4ee6a4SAndroid Build Coastguard Worker            "cpu": "x86-64",
290*bb4ee6a4SAndroid Build Coastguard Worker        },
291*bb4ee6a4SAndroid Build Coastguard Worker        notifies = ["infra-failures"],
292*bb4ee6a4SAndroid Build Coastguard Worker        **args
293*bb4ee6a4SAndroid Build Coastguard Worker    )
294*bb4ee6a4SAndroid Build Coastguard Worker    if postsubmit:
295*bb4ee6a4SAndroid Build Coastguard Worker        luci.gitiles_poller(
296*bb4ee6a4SAndroid Build Coastguard Worker            name = "main source",
297*bb4ee6a4SAndroid Build Coastguard Worker            bucket = "ci",
298*bb4ee6a4SAndroid Build Coastguard Worker            repo = "https://chromium.googlesource.com/crosvm/crosvm",
299*bb4ee6a4SAndroid Build Coastguard Worker            triggers = ["ci/%s" % name],
300*bb4ee6a4SAndroid Build Coastguard Worker        )
301*bb4ee6a4SAndroid Build Coastguard Worker    luci.list_view_entry(
302*bb4ee6a4SAndroid Build Coastguard Worker        list_view = "Infra",
303*bb4ee6a4SAndroid Build Coastguard Worker        builder = "ci/%s" % name,
304*bb4ee6a4SAndroid Build Coastguard Worker    )
305*bb4ee6a4SAndroid Build Coastguard Worker
306*bb4ee6a4SAndroid Build Coastguard Workerverify_linux_builder("x86_64")
307*bb4ee6a4SAndroid Build Coastguard Workerverify_linux_builder("aarch64")
308*bb4ee6a4SAndroid Build Coastguard Workerverify_linux_builder("armhf")
309*bb4ee6a4SAndroid Build Coastguard Workerverify_linux_builder("mingw64")
310*bb4ee6a4SAndroid Build Coastguard Worker
311*bb4ee6a4SAndroid Build Coastguard Worker# Disabled due to b/304875018
312*bb4ee6a4SAndroid Build Coastguard Worker# verify_linux_builder("riscv64")
313*bb4ee6a4SAndroid Build Coastguard Worker
314*bb4ee6a4SAndroid Build Coastguard Workerverify_builder(
315*bb4ee6a4SAndroid Build Coastguard Worker    name = "chromeos_hatch",
316*bb4ee6a4SAndroid Build Coastguard Worker    dimensions = {
317*bb4ee6a4SAndroid Build Coastguard Worker        "os": "Ubuntu",
318*bb4ee6a4SAndroid Build Coastguard Worker        "cpu": "x86-64",
319*bb4ee6a4SAndroid Build Coastguard Worker    },
320*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
321*bb4ee6a4SAndroid Build Coastguard Worker        name = "build_chromeos_hatch",
322*bb4ee6a4SAndroid Build Coastguard Worker    ),
323*bb4ee6a4SAndroid Build Coastguard Worker    category = "linux",
324*bb4ee6a4SAndroid Build Coastguard Worker    presubmit = False,
325*bb4ee6a4SAndroid Build Coastguard Worker)
326*bb4ee6a4SAndroid Build Coastguard Worker
327*bb4ee6a4SAndroid Build Coastguard Workerverify_builder(
328*bb4ee6a4SAndroid Build Coastguard Worker    name = "windows",
329*bb4ee6a4SAndroid Build Coastguard Worker    dimensions = {
330*bb4ee6a4SAndroid Build Coastguard Worker        "os": "Windows",
331*bb4ee6a4SAndroid Build Coastguard Worker        "cpu": "x86-64",
332*bb4ee6a4SAndroid Build Coastguard Worker    },
333*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
334*bb4ee6a4SAndroid Build Coastguard Worker        name = "build_windows",
335*bb4ee6a4SAndroid Build Coastguard Worker    ),
336*bb4ee6a4SAndroid Build Coastguard Worker    category = "windows",
337*bb4ee6a4SAndroid Build Coastguard Worker)
338*bb4ee6a4SAndroid Build Coastguard Worker
339*bb4ee6a4SAndroid Build Coastguard Workerverify_builder(
340*bb4ee6a4SAndroid Build Coastguard Worker    name = "health_check",
341*bb4ee6a4SAndroid Build Coastguard Worker    dimensions = {
342*bb4ee6a4SAndroid Build Coastguard Worker        "os": "Ubuntu",
343*bb4ee6a4SAndroid Build Coastguard Worker        "cpu": "x86-64",
344*bb4ee6a4SAndroid Build Coastguard Worker    },
345*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
346*bb4ee6a4SAndroid Build Coastguard Worker        name = "presubmit",
347*bb4ee6a4SAndroid Build Coastguard Worker    ),
348*bb4ee6a4SAndroid Build Coastguard Worker    properties = {
349*bb4ee6a4SAndroid Build Coastguard Worker        "group_name": "health_checks",
350*bb4ee6a4SAndroid Build Coastguard Worker    },
351*bb4ee6a4SAndroid Build Coastguard Worker    caches = [
352*bb4ee6a4SAndroid Build Coastguard Worker        swarming.cache("builder", name = "linux_builder_cache"),
353*bb4ee6a4SAndroid Build Coastguard Worker    ],
354*bb4ee6a4SAndroid Build Coastguard Worker    category = "linux",
355*bb4ee6a4SAndroid Build Coastguard Worker)
356*bb4ee6a4SAndroid Build Coastguard Worker
357*bb4ee6a4SAndroid Build Coastguard Workerverify_builder(
358*bb4ee6a4SAndroid Build Coastguard Worker    name = "android-aarch64",
359*bb4ee6a4SAndroid Build Coastguard Worker    dimensions = {
360*bb4ee6a4SAndroid Build Coastguard Worker        "os": "Ubuntu",
361*bb4ee6a4SAndroid Build Coastguard Worker        "cpu": "x86-64",
362*bb4ee6a4SAndroid Build Coastguard Worker    },
363*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
364*bb4ee6a4SAndroid Build Coastguard Worker        name = "presubmit",
365*bb4ee6a4SAndroid Build Coastguard Worker    ),
366*bb4ee6a4SAndroid Build Coastguard Worker    properties = {
367*bb4ee6a4SAndroid Build Coastguard Worker        "group_name": "android-aarch64",
368*bb4ee6a4SAndroid Build Coastguard Worker    },
369*bb4ee6a4SAndroid Build Coastguard Worker    caches = [
370*bb4ee6a4SAndroid Build Coastguard Worker        swarming.cache("builder", name = "linux_builder_cache"),
371*bb4ee6a4SAndroid Build Coastguard Worker    ],
372*bb4ee6a4SAndroid Build Coastguard Worker    category = "android",
373*bb4ee6a4SAndroid Build Coastguard Worker    # TODO(b/349907813): Enable in presubmit once stabilized
374*bb4ee6a4SAndroid Build Coastguard Worker    presubmit = False,
375*bb4ee6a4SAndroid Build Coastguard Worker)
376*bb4ee6a4SAndroid Build Coastguard Worker
377*bb4ee6a4SAndroid Build Coastguard Workerinfra_builder(
378*bb4ee6a4SAndroid Build Coastguard Worker    name = "push_to_github",
379*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
380*bb4ee6a4SAndroid Build Coastguard Worker        name = "push_to_github",
381*bb4ee6a4SAndroid Build Coastguard Worker    ),
382*bb4ee6a4SAndroid Build Coastguard Worker    postsubmit = True,
383*bb4ee6a4SAndroid Build Coastguard Worker)
384*bb4ee6a4SAndroid Build Coastguard Worker
385*bb4ee6a4SAndroid Build Coastguard Workerinfra_builder(
386*bb4ee6a4SAndroid Build Coastguard Worker    name = "build_docs",
387*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
388*bb4ee6a4SAndroid Build Coastguard Worker        name = "build_docs",
389*bb4ee6a4SAndroid Build Coastguard Worker    ),
390*bb4ee6a4SAndroid Build Coastguard Worker    postsubmit = True,
391*bb4ee6a4SAndroid Build Coastguard Worker)
392*bb4ee6a4SAndroid Build Coastguard Worker
393*bb4ee6a4SAndroid Build Coastguard Workerinfra_builder(
394*bb4ee6a4SAndroid Build Coastguard Worker    name = "update_chromeos_merges",
395*bb4ee6a4SAndroid Build Coastguard Worker    executable = luci.recipe(
396*bb4ee6a4SAndroid Build Coastguard Worker        name = "update_chromeos_merges",
397*bb4ee6a4SAndroid Build Coastguard Worker    ),
398*bb4ee6a4SAndroid Build Coastguard Worker    schedule = "0,30 * * * *",  # Run every 30 minutes
399*bb4ee6a4SAndroid Build Coastguard Worker    postsubmit = False,
400*bb4ee6a4SAndroid Build Coastguard Worker)
401