xref: /aosp_15_r20/external/perfetto/infra/luci/main.star (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker#!/usr/bin/env lucicfg
2*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2021 The Android Open Source Project
3*6dbdd20aSAndroid Build Coastguard Worker#
4*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*6dbdd20aSAndroid Build Coastguard Worker#
8*6dbdd20aSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*6dbdd20aSAndroid Build Coastguard Worker#
10*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License.
15*6dbdd20aSAndroid Build Coastguard Worker
16*6dbdd20aSAndroid Build Coastguard Workerlucicfg.check_version("1.30.9", "Please update depot_tools")
17*6dbdd20aSAndroid Build Coastguard Worker
18*6dbdd20aSAndroid Build Coastguard Worker# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
19*6dbdd20aSAndroid Build Coastguard Workerlucicfg.enable_experiment("crbug.com/1182002")
20*6dbdd20aSAndroid Build Coastguard Worker
21*6dbdd20aSAndroid Build Coastguard Worker# Enable bbagent.
22*6dbdd20aSAndroid Build Coastguard Workerluci.recipe.defaults.use_bbagent.set(True)
23*6dbdd20aSAndroid Build Coastguard Worker
24*6dbdd20aSAndroid Build Coastguard Workerlucicfg.config(
25*6dbdd20aSAndroid Build Coastguard Worker    config_dir = "generated",
26*6dbdd20aSAndroid Build Coastguard Worker    fail_on_warnings = True,
27*6dbdd20aSAndroid Build Coastguard Worker)
28*6dbdd20aSAndroid Build Coastguard Worker
29*6dbdd20aSAndroid Build Coastguard Workerluci.project(
30*6dbdd20aSAndroid Build Coastguard Worker    name = "perfetto",
31*6dbdd20aSAndroid Build Coastguard Worker    buildbucket = "cr-buildbucket.appspot.com",
32*6dbdd20aSAndroid Build Coastguard Worker    logdog = "luci-logdog",
33*6dbdd20aSAndroid Build Coastguard Worker    milo = "luci-milo",
34*6dbdd20aSAndroid Build Coastguard Worker    scheduler = "luci-scheduler",
35*6dbdd20aSAndroid Build Coastguard Worker    swarming = "chrome-swarming.appspot.com",
36*6dbdd20aSAndroid Build Coastguard Worker    acls = [
37*6dbdd20aSAndroid Build Coastguard Worker        acl.entry(
38*6dbdd20aSAndroid Build Coastguard Worker            [
39*6dbdd20aSAndroid Build Coastguard Worker                acl.BUILDBUCKET_READER,
40*6dbdd20aSAndroid Build Coastguard Worker                acl.LOGDOG_READER,
41*6dbdd20aSAndroid Build Coastguard Worker                acl.PROJECT_CONFIGS_READER,
42*6dbdd20aSAndroid Build Coastguard Worker                acl.SCHEDULER_READER,
43*6dbdd20aSAndroid Build Coastguard Worker            ],
44*6dbdd20aSAndroid Build Coastguard Worker            groups = ["all"],
45*6dbdd20aSAndroid Build Coastguard Worker        ),
46*6dbdd20aSAndroid Build Coastguard Worker        acl.entry(roles = acl.SCHEDULER_OWNER, groups = "mdb/perfetto-cloud-infra"),
47*6dbdd20aSAndroid Build Coastguard Worker        acl.entry([acl.LOGDOG_WRITER], groups = ["luci-logdog-chromium-writers"]),
48*6dbdd20aSAndroid Build Coastguard Worker    ],
49*6dbdd20aSAndroid Build Coastguard Worker)
50*6dbdd20aSAndroid Build Coastguard Worker
51*6dbdd20aSAndroid Build Coastguard Worker# Use the default Chromium logdog instance as:
52*6dbdd20aSAndroid Build Coastguard Worker# a) we expect our logs to be very minimal
53*6dbdd20aSAndroid Build Coastguard Worker# b) we are open source so there's nothing special in our logs.
54*6dbdd20aSAndroid Build Coastguard Workerluci.logdog(
55*6dbdd20aSAndroid Build Coastguard Worker    gs_bucket = "chromium-luci-logdog",
56*6dbdd20aSAndroid Build Coastguard Worker)
57*6dbdd20aSAndroid Build Coastguard Worker
58*6dbdd20aSAndroid Build Coastguard Worker# Create a realm for the official pool.
59*6dbdd20aSAndroid Build Coastguard Worker# Used by LUCI infra (Googlers: see pools.cfg) to enforce ACLs.
60*6dbdd20aSAndroid Build Coastguard Workerluci.realm(name = "pools/official")
61*6dbdd20aSAndroid Build Coastguard Worker
62*6dbdd20aSAndroid Build Coastguard Worker# Bucket used by all official builders.
63*6dbdd20aSAndroid Build Coastguard Workerluci.bucket(
64*6dbdd20aSAndroid Build Coastguard Worker    name = "official",
65*6dbdd20aSAndroid Build Coastguard Worker    acls = [
66*6dbdd20aSAndroid Build Coastguard Worker        acl.entry(
67*6dbdd20aSAndroid Build Coastguard Worker            roles = [acl.BUILDBUCKET_TRIGGERER],
68*6dbdd20aSAndroid Build Coastguard Worker            groups = ["mdb/perfetto-cloud-infra"],
69*6dbdd20aSAndroid Build Coastguard Worker        ),
70*6dbdd20aSAndroid Build Coastguard Worker        acl.entry(
71*6dbdd20aSAndroid Build Coastguard Worker            roles = [acl.SCHEDULER_TRIGGERER, acl.BUILDBUCKET_TRIGGERER],
72*6dbdd20aSAndroid Build Coastguard Worker            groups = ["mdb/chrome-troopers"],
73*6dbdd20aSAndroid Build Coastguard Worker        ),
74*6dbdd20aSAndroid Build Coastguard Worker    ],
75*6dbdd20aSAndroid Build Coastguard Worker)
76*6dbdd20aSAndroid Build Coastguard Worker
77*6dbdd20aSAndroid Build Coastguard Workerdef official_builder(name, os, caches=[]):
78*6dbdd20aSAndroid Build Coastguard Worker    luci.builder(
79*6dbdd20aSAndroid Build Coastguard Worker        name = name,
80*6dbdd20aSAndroid Build Coastguard Worker        bucket = "official",
81*6dbdd20aSAndroid Build Coastguard Worker        executable = luci.recipe(
82*6dbdd20aSAndroid Build Coastguard Worker            name = "perfetto",
83*6dbdd20aSAndroid Build Coastguard Worker            cipd_package = "infra/recipe_bundles/android.googlesource.com/platform/external/perfetto",
84*6dbdd20aSAndroid Build Coastguard Worker            cipd_version = "refs/heads/master",
85*6dbdd20aSAndroid Build Coastguard Worker            use_python3 = True,
86*6dbdd20aSAndroid Build Coastguard Worker        ),
87*6dbdd20aSAndroid Build Coastguard Worker        dimensions = {
88*6dbdd20aSAndroid Build Coastguard Worker            "pool": "luci.perfetto.official",
89*6dbdd20aSAndroid Build Coastguard Worker            "os": os,
90*6dbdd20aSAndroid Build Coastguard Worker            "cpu": "x86-64",
91*6dbdd20aSAndroid Build Coastguard Worker        },
92*6dbdd20aSAndroid Build Coastguard Worker        service_account = "perfetto-luci-official-builder@chops-service-accounts.iam.gserviceaccount.com",
93*6dbdd20aSAndroid Build Coastguard Worker        triggered_by = [
94*6dbdd20aSAndroid Build Coastguard Worker            luci.gitiles_poller(
95*6dbdd20aSAndroid Build Coastguard Worker                name = "perfetto-gitiles-trigger",
96*6dbdd20aSAndroid Build Coastguard Worker                bucket = "official",
97*6dbdd20aSAndroid Build Coastguard Worker                repo = "https://android.googlesource.com/platform/external/perfetto",
98*6dbdd20aSAndroid Build Coastguard Worker                refs = ["refs/tags/v.+"],
99*6dbdd20aSAndroid Build Coastguard Worker            ),
100*6dbdd20aSAndroid Build Coastguard Worker        ],
101*6dbdd20aSAndroid Build Coastguard Worker        caches = [
102*6dbdd20aSAndroid Build Coastguard Worker            swarming.cache(cache, name = cache)
103*6dbdd20aSAndroid Build Coastguard Worker            for cache in caches
104*6dbdd20aSAndroid Build Coastguard Worker        ]
105*6dbdd20aSAndroid Build Coastguard Worker    )
106*6dbdd20aSAndroid Build Coastguard Worker
107*6dbdd20aSAndroid Build Coastguard Workerofficial_builder("perfetto-official-builder-linux", "Linux")
108*6dbdd20aSAndroid Build Coastguard Workerofficial_builder("perfetto-official-builder-mac", "Mac", ["macos_sdk"])
109*6dbdd20aSAndroid Build Coastguard Workerofficial_builder("perfetto-official-builder-windows", "Windows", ["windows_sdk"])
110*6dbdd20aSAndroid Build Coastguard Workerofficial_builder("perfetto-official-builder-android", "Linux")
111