# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Definitions of builders in chromium.build.fyi builder group."""
load("@chromium-luci//builder_config.star", "builder_config")
load("@chromium-luci//builders.star", "cpu", "os")
load("@chromium-luci//ci.star", "ci")
load("@chromium-luci//consoles.star", "consoles")
load("@chromium-luci//html.star", "linkify", "linkify_builder")
load("@chromium-luci//targets.star", "targets")
load("//lib/ci_constants.star", "ci_constants")
load("//lib/siso.star", "siso")
ci.defaults.set(
bucket = "build",
executable = ci_constants.DEFAULT_EXECUTABLE,
triggered_by = ["chrome-build-gitiles-trigger"],
builder_group = "chromium.build.fyi",
pool = ci_constants.DEFAULT_POOL,
builderless = True,
build_numbers = True,
contact_team_email = "chrome-build-team@google.com",
execution_timeout = 10 * time.hour,
experiments = {
"chromium_tests.resultdb_module": 100,
},
priority = ci_constants.DEFAULT_FYI_PRIORITY,
service_account = ci_constants.DEFAULT_SERVICE_ACCOUNT,
shadow_service_account = ci_constants.DEFAULT_SHADOW_SERVICE_ACCOUNT,
shadow_siso_project = siso.project.DEFAULT_UNTRUSTED,
siso_project = siso.project.DEFAULT_TRUSTED,
siso_remote_jobs = siso.remote_jobs.DEFAULT,
)
targets.builder_defaults.set(
mixins = [
"chromium-tester-service-account",
],
)
consoles.console_view(
name = "chromium.build.fyi",
repo = "https://chromium.googlesource.com/chromium/src",
)
ci.builder(
name = "Mac Builder Siso FYI",
description_html = "This builder is intended to test the latest Siso version on Mac.",
builder_spec = builder_config.builder_spec(
gclient_config = builder_config.gclient_config(
config = "chromium",
apply_configs = [
# This is necessary due to a child builder running the
# telemetry_perf_unittests suite.
"chromium_with_telemetry_dependencies",
"use_clang_coverage",
"siso_latest",
],
),
chromium_config = builder_config.chromium_config(
config = "chromium",
apply_configs = [
"mb",
],
build_config = builder_config.build_config.RELEASE,
target_arch = builder_config.target_arch.INTEL,
target_bits = 64,
target_platform = builder_config.target_platform.MAC,
),
),
gn_args = "ci/Mac Builder",
targets = targets.bundle(
targets = [
"chromium_mac_scripts",
],
additional_compile_targets = [
"all",
],
per_test_modifications = {
"check_static_initializers": targets.mixin(
args = [
"--allow-coverage-initializer",
],
),
},
),
cores = None,
os = os.MAC_DEFAULT,
cpu = cpu.ARM64,
console_view_entry = consoles.console_view_entry(
category = "mac",
short_name = "build",
),
)
ci.thin_tester(
name = "Mac Tests Siso FYI",
description_html = """\
This builder is intended to shadow {}.
\
But, the tests are built by {}.\
""".format(
linkify_builder("ci", "Mac13 Tests"),
linkify_builder("build", "Mac Builder Siso FYI"),
),
parent = "build/Mac Builder Siso FYI",
builder_spec = builder_config.builder_spec(
execution_mode = builder_config.execution_mode.TEST,
gclient_config = builder_config.gclient_config(
config = "chromium",
),
chromium_config = builder_config.chromium_config(
config = "chromium",
apply_configs = [
"mb",
],
build_config = builder_config.build_config.RELEASE,
target_bits = 64,
target_platform = builder_config.target_platform.MAC,
),
),
targets = targets.bundle(
targets = [
"chromium_mac_gtests_no_nacl",
"chromium_mac_rel_isolated_scripts_once",
],
mixins = [
"mac_13_x64",
"isolate_profile_data",
],
per_test_modifications = {
"blink_web_tests": targets.mixin(
swarming = targets.swarming(
dimensions = {
"gpu": None,
},
shards = 12,
),
),
"blink_wpt_tests": targets.mixin(
swarming = targets.swarming(
dimensions = {
"gpu": None,
},
),
),
"browser_tests": targets.mixin(
ci_only = True,
swarming = targets.swarming(
shards = 20, # crbug.com/1361887
),
),
"content_browsertests": targets.mixin(
swarming = targets.swarming(
shards = 12,
),
),
"interactive_ui_tests": targets.mixin(
swarming = targets.swarming(
shards = 6,
),
),
"sync_integration_tests": targets.mixin(
ci_only = True,
swarming = targets.swarming(
shards = 4,
),
),
"telemetry_perf_unittests": targets.mixin(
ci_only = True,
),
"unit_tests": targets.mixin(
swarming = targets.swarming(
shards = 2,
),
),
},
),
console_view_entry = consoles.console_view_entry(
category = "mac",
short_name = "test",
),
)
ci.builder(
name = "Linux Builder Default Remote Build",
description_html = (
"FYI variant of " + linkify_builder("ci", "Linux Builder", "chromium") +
" that enables remote execution for all actions by default.
" +
"It is used to identify build steps with missing input specifications, ensuring " +
linkify("https://source.chromium.org/chromium/chromium/src/+/main:build/config/siso/denylist.star", "denylist.star") +
" remains exhaustive."
),
builder_spec = builder_config.builder_spec(
gclient_config = builder_config.gclient_config(
config = "chromium",
apply_configs = [
"use_clang_coverage",
"chromium_with_telemetry_dependencies",
],
),
chromium_config = builder_config.chromium_config(
config = "chromium",
apply_configs = [
# Do clobber builds to reliably detect missing inputs and accurately track action counts in a clean build environment.
"clobber",
"mb",
],
build_config = builder_config.build_config.RELEASE,
target_bits = 64,
target_platform = builder_config.target_platform.LINUX,
),
),
gn_args = "ci/Linux Builder",
targets = targets.bundle(
additional_compile_targets = [
"all",
],
),
cores = 8,
os = os.LINUX_DEFAULT,
cpu = cpu.X86_64,
console_view_entry = consoles.console_view_entry(
category = "linux",
short_name = "remote",
),
contact_team_email = "chrome-build-team@google.com",
execution_timeout = 2 * time.hour,
notifies = ["Linux Builder Default Remote Build"],
siso_configs = ["builder", "remote-link", "default-remote"],
siso_keep_going = 0,
)