blob: fb8af22377e497b3ed6f1a1215e78277dfcf2517 [file] [log] [blame]
#!/usr/bin/env lucicfg
# Copyright 2021 The Crashpad Authors. All rights reserved.
#
# 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.28.0", "Please update depot_tools")
# Enable LUCI Realms support.
lucicfg.enable_experiment("crbug.com/1085650")
# Launch 100% of Swarming tasks for builds in "realms-aware mode".
luci.builder.defaults.experiments.set({"luci.use_realms": 100})
luci.project(
name = "crashpad",
buildbucket = "cr-buildbucket.appspot.com",
swarming = "chromium-swarm.appspot.com",
acls = [
acl.entry(
roles = [
acl.LOGDOG_READER,
acl.PROJECT_CONFIGS_READER,
acl.SCHEDULER_READER,
acl.BUILDBUCKET_READER,
],
groups = "all",
),
],
)
luci.bucket(
name = "ci",
acls = [
acl.entry(
acl.BUILDBUCKET_OWNER,
groups = "project-crashpad-admins",
),
acl.entry(
acl.BUILDBUCKET_TRIGGERER,
users = "luci-scheduler@appspot.gserviceaccount.com",
),
],
)
luci.bucket(
name = "try",
acls = [
acl.entry(
acl.BUILDBUCKET_OWNER,
groups = [
"service-account-crashpad-cq",
"project-crashpad-admins",
],
),
acl.entry(
acl.BUILDBUCKET_TRIGGERER,
groups = "service-account-cq",
),
acl.entry(
acl.BUILDBUCKET_TRIGGERER,
groups = "project-crashpad-tryjob-access",
),
],
)
def crashpad_recipe():
return luci.recipe(
name = "crashpad/build",
cipd_package = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",
)
def crashpad_caches(platform):
if platform == "ios":
return [swarming.cache("osx_sdk", name = "osx_sdk_ios")]
elif platform == "mac":
return [swarming.cache("osx_sdk", name = "osx_sdk_mac")]
def crashpad_dimensions(platform, bucket):
dimensions = {}
dimensions["cpu"] = "x86-64"
dimensions["pool"] = "luci.flex." + bucket
if platform == "fuchsia":
dimensions["os"] = "Ubuntu-16.04"
elif platform == "ios":
dimensions["os"] = "Mac-10.15"
elif platform == "linux":
dimensions["os"] = "Ubuntu-16.04"
elif platform == "mac":
dimensions["os"] = "Mac-10.15"
elif platform == "win":
dimensions["os"] = "Windows-10"
if platform == "fuchsia" or platform == "linux" or platform == "win":
dimensions["cores"] = "8"
return dimensions
def crashpad_properties(platform, cpu, config, bucket):
properties = {}
properties["target_os"] = platform
properties["$kitchen"] = {
"devshell": True,
"git_auth": True,
}
if cpu != "x64":
properties["target_cpu"] = cpu
if bucket == "ci":
properties["$gatekeeper"] = {
"group": "client.crashpad",
}
if config == "dbg":
properties["config"] = "Debug"
elif config == "rel":
properties["config"] = "Release"
return properties
def crashpad_builder(platform, cpu, config, bucket):
return luci.builder(
name = "_".join(["crashpad", platform, cpu, config]),
bucket = bucket,
executable = crashpad_recipe(),
build_numbers = True,
caches = crashpad_caches(platform),
dimensions = crashpad_dimensions(platform, bucket),
execution_timeout = 3 * time.hour,
properties = crashpad_properties(platform, cpu, config, bucket),
service_account = "crashpad-" + bucket +
"-builder@chops-service-accounts.iam.gserviceaccount.com",
)
crashpad_builder("fuchsia", "arm64", "dbg", "ci")
crashpad_builder("fuchsia", "arm64", "rel", "ci")
crashpad_builder("fuchsia", "x64", "dbg", "ci")
crashpad_builder("fuchsia", "x64", "rel", "ci")
crashpad_builder("ios", "arm64", "dbg", "ci")
crashpad_builder("ios", "arm64", "rel", "ci")
crashpad_builder("ios", "x64", "dbg", "ci")
crashpad_builder("ios", "x64", "rel", "ci")
crashpad_builder("linux", "x64", "dbg", "ci")
crashpad_builder("linux", "x64", "rel", "ci")
crashpad_builder("mac", "x64", "dbg", "ci")
crashpad_builder("mac", "x64", "rel", "ci")
crashpad_builder("win", "x64", "dbg", "ci")
crashpad_builder("win", "x64", "rel", "ci")
crashpad_builder("fuchsia", "arm64", "dbg", "try")
crashpad_builder("fuchsia", "arm64", "rel", "try")
crashpad_builder("fuchsia", "x64", "dbg", "try")
crashpad_builder("fuchsia", "x64", "rel", "try")
crashpad_builder("ios", "arm64", "dbg", "try")
crashpad_builder("ios", "arm64", "rel", "try")
crashpad_builder("ios", "x64", "dbg", "try")
crashpad_builder("ios", "x64", "rel", "try")
crashpad_builder("linux", "x64", "dbg", "try")
crashpad_builder("linux", "x64", "rel", "try")
crashpad_builder("mac", "x64", "dbg", "try")
crashpad_builder("mac", "x64", "rel", "try")
crashpad_builder("win", "x64", "dbg", "try")
crashpad_builder("win", "x64", "rel", "try")