266 lines
7.6 KiB
Plaintext
266 lines
7.6 KiB
Plaintext
#!/usr/bin/env lucicfg
|
|
# Copyright 2021 The Crashpad Authors
|
|
#
|
|
# 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")
|
|
|
|
REPO_URL = "https://chromium.googlesource.com/crashpad/crashpad"
|
|
REVIEW_URL = "https://chromium-review.googlesource.com/crashpad/crashpad"
|
|
|
|
# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
|
|
lucicfg.enable_experiment("crbug.com/1182002")
|
|
|
|
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",
|
|
),
|
|
acl.entry(
|
|
roles = acl.LOGDOG_WRITER,
|
|
groups = "luci-logdog-chromium-writers",
|
|
),
|
|
acl.entry(
|
|
roles = acl.SCHEDULER_OWNER,
|
|
groups = "project-crashpad-admins",
|
|
),
|
|
],
|
|
logdog = "luci-logdog.appspot.com",
|
|
milo = "luci-milo.appspot.com",
|
|
scheduler = "luci-scheduler.appspot.com",
|
|
)
|
|
|
|
luci.cq(
|
|
status_host = "chromium-cq-status.appspot.com",
|
|
submit_max_burst = 4,
|
|
submit_burst_delay = 8 * time.minute,
|
|
)
|
|
|
|
luci.cq_group(
|
|
name = "crashpad",
|
|
watch = cq.refset(repo = REVIEW_URL, refs = ["refs/heads/.+"]),
|
|
retry_config = cq.retry_config(
|
|
single_quota = 1,
|
|
global_quota = 2,
|
|
failure_weight = 1,
|
|
transient_failure_weight = 1,
|
|
timeout_weight = 2,
|
|
),
|
|
acls = [
|
|
acl.entry(
|
|
roles = acl.CQ_COMMITTER,
|
|
groups = "project-crashpad-tryjob-access",
|
|
),
|
|
acl.entry(
|
|
roles = acl.CQ_DRY_RUNNER,
|
|
groups = "project-crashpad-tryjob-access",
|
|
),
|
|
],
|
|
)
|
|
|
|
luci.gitiles_poller(
|
|
name = "master-gitiles-trigger",
|
|
bucket = "ci",
|
|
repo = REPO_URL,
|
|
)
|
|
|
|
luci.logdog(
|
|
gs_bucket = "chromium-luci-logdog",
|
|
)
|
|
|
|
luci.milo(
|
|
logo = "https://storage.googleapis.com/chrome-infra-public/logo/crashpad-logo.svg",
|
|
)
|
|
|
|
luci.console_view(
|
|
name = "main",
|
|
repo = REPO_URL,
|
|
title = "Crashpad Main Console",
|
|
)
|
|
|
|
luci.list_view(
|
|
name = "try",
|
|
title = "Crashpad Try Builders",
|
|
)
|
|
|
|
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",
|
|
use_python3=True,
|
|
)
|
|
|
|
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-18.04"
|
|
elif platform == "ios":
|
|
dimensions["os"] = "Mac-12"
|
|
elif platform == "linux":
|
|
dimensions["os"] = "Ubuntu-18.04"
|
|
elif platform == "mac":
|
|
dimensions["os"] = "Mac-12"
|
|
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 platform == "win":
|
|
properties["$depot_tools/windows_sdk"] = {
|
|
"version": "uploaded:2021-04-28",
|
|
}
|
|
|
|
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):
|
|
name = "_".join(["crashpad", platform, cpu, config])
|
|
triggered_by = None
|
|
|
|
if bucket == "ci":
|
|
luci.console_view_entry(
|
|
builder = "ci/" + name,
|
|
console_view = "main",
|
|
short_name = config,
|
|
category = platform + "|" + cpu,
|
|
)
|
|
triggered_by = ["master-gitiles-trigger"]
|
|
elif bucket == "try":
|
|
luci.list_view_entry(
|
|
builder = "try/" + name,
|
|
list_view = "try",
|
|
)
|
|
luci.cq_tryjob_verifier(
|
|
"try/" + name,
|
|
cq_group = "crashpad",
|
|
)
|
|
|
|
return luci.builder(
|
|
name = name,
|
|
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",
|
|
triggered_by = triggered_by,
|
|
)
|
|
|
|
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")
|