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