diff options
Diffstat (limited to 'infra/luci/main.star')
-rwxr-xr-x | infra/luci/main.star | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/infra/luci/main.star b/infra/luci/main.star new file mode 100755 index 000000000..e7c01e490 --- /dev/null +++ b/infra/luci/main.star @@ -0,0 +1,110 @@ +#!/usr/bin/env lucicfg +# Copyright (C) 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +lucicfg.check_version("1.30.9", "Please update depot_tools") + +# Use LUCI Scheduler BBv2 names and add Scheduler realms configs. +lucicfg.enable_experiment("crbug.com/1182002") + +# Enable bbagent. +luci.recipe.defaults.use_bbagent.set(True) + +lucicfg.config( + config_dir = "generated", + fail_on_warnings = True, +) + +luci.project( + name = "perfetto", + buildbucket = "cr-buildbucket.appspot.com", + logdog = "luci-logdog", + milo = "luci-milo", + scheduler = "luci-scheduler", + swarming = "chrome-swarming.appspot.com", + acls = [ + acl.entry( + [ + acl.BUILDBUCKET_READER, + acl.LOGDOG_READER, + acl.PROJECT_CONFIGS_READER, + acl.SCHEDULER_READER, + ], + groups = ["all"], + ), + acl.entry(roles = acl.SCHEDULER_OWNER, groups = "mdb/perfetto-cloud-infra"), + acl.entry([acl.LOGDOG_WRITER], groups = ["luci-logdog-chromium-writers"]), + ], +) + +# Use the default Chromium logdog instance as: +# a) we expect our logs to be very minimal +# b) we are open source so there's nothing special in our logs. +luci.logdog( + gs_bucket = "chromium-luci-logdog", +) + +# Create a realm for the official pool. +# Used by LUCI infra (Googlers: see pools.cfg) to enforce ACLs. +luci.realm(name = "pools/official") + +# Bucket used by all official builders. +luci.bucket( + name = "official", + acls = [ + acl.entry( + roles = [acl.BUILDBUCKET_TRIGGERER], + groups = ["mdb/perfetto-cloud-infra"], + ), + acl.entry( + roles = [acl.SCHEDULER_TRIGGERER, acl.BUILDBUCKET_TRIGGERER], + groups = ["mdb/chrome-troopers"], + ), + ], +) + +def official_builder(name, os, caches=[]): + luci.builder( + name = name, + bucket = "official", + executable = luci.recipe( + name = "perfetto", + cipd_package = "infra/recipe_bundles/android.googlesource.com/platform/external/perfetto", + cipd_version = "refs/heads/master", + use_python3 = True, + ), + dimensions = { + "pool": "luci.perfetto.official", + "os": os, + "cpu": "x86-64", + }, + service_account = "perfetto-luci-official-builder@chops-service-accounts.iam.gserviceaccount.com", + triggered_by = [ + luci.gitiles_poller( + name = "perfetto-gitiles-trigger", + bucket = "official", + repo = "https://android.googlesource.com/platform/external/perfetto", + refs = ["refs/tags/v.+"], + ), + ], + caches = [ + swarming.cache(cache, name = cache) + for cache in caches + ] + ) + +official_builder("perfetto-official-builder-linux", "Linux") +official_builder("perfetto-official-builder-mac", "Mac", ["macos_sdk"]) +official_builder("perfetto-official-builder-windows", "Windows", ["windows_sdk"]) +official_builder("perfetto-official-builder-android", "Linux") |