Commit d021ddba authored by Garrett Beaty's avatar Garrett Beaty Committed by Commit Bot

Add a library for defining try builders.

Change-Id: Icce42767b820205c3e38ce83f97906b0dd7f600c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2025833Reviewed-by: default avatarAaron Gable <agable@chromium.org>
Commit-Queue: Garrett Beaty <gbeaty@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736559}
parent 1064f4cd
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
defaults.bucket.set('try')
defaults.build_numbers.set(True)
defaults.configure_kitchen.set(True)
defaults.cores.set(8)
defaults.cpu.set(cpu.X86_64)
defaults.executable.set('recipe:chromium_trybot')
defaults.execution_timeout.set(6 * time.hour)
defaults.expiration_timeout.set(2 * time.hour)
defaults.os.set(os.LINUX_DEFAULT)
defaults.service_account.set('chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com')
defaults.swarming_tags.set(['vpython:native-python-wrapper'])
defaults.task_template_canary_percentage.set(5)
defaults.caches.set([
load('//lib/try.star', 'try_')
try_.defaults.bucket.set('try')
try_.defaults.build_numbers.set(True)
try_.defaults.configure_kitchen.set(True)
try_.defaults.cores.set(8)
try_.defaults.cpu.set(cpu.X86_64)
try_.defaults.cq_group.set('cq')
try_.defaults.executable.set('recipe:chromium_trybot')
try_.defaults.execution_timeout.set(6 * time.hour)
try_.defaults.expiration_timeout.set(2 * time.hour)
try_.defaults.os.set(os.LINUX_DEFAULT)
try_.defaults.service_account.set('chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com')
try_.defaults.swarming_tags.set(['vpython:native-python-wrapper'])
try_.defaults.task_template_canary_percentage.set(5)
try_.defaults.caches.set([
swarming.cache(
name = 'win_toolchain',
path = 'win_toolchain',
......@@ -21,47 +23,6 @@ defaults.caches.set([
])
def tryjob(
*,
disable_reuse=None,
experiment_percentage=None,
location_regexp=None,
location_regexp_exclude=None):
return struct(
disable_reuse = disable_reuse,
experiment_percentage = experiment_percentage,
location_regexp = location_regexp,
location_regexp_exclude = location_regexp_exclude,
)
def try_builder(
*,
name,
tryjob=None,
**kwargs):
if tryjob != None:
luci.cq_tryjob_verifier(
builder = 'try/' + name,
cq_group = 'cq',
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
location_regexp = tryjob.location_regexp,
location_regexp_exclude = tryjob.location_regexp_exclude,
)
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = 'try/' + name,
cq_group = 'cq',
includable_only = True,
)
return builder(
name = name,
**kwargs
)
# Builders appear after the function used to define them, with all builders
# defined using the same function ordered lexicographically by name
# Builder functions are defined in lexicographic order by name ignoring the
......@@ -75,7 +36,7 @@ def try_builder(
# after the last dot in the mastername and YYY is the OS
def gpu_android_builder(*, name, **kwargs):
return try_builder(
return try_.builder(
name = name,
builderless = True,
goma_backend = goma.backend.RBE_PROD,
......@@ -161,7 +122,7 @@ gpu_android_builder(
def gpu_linux_builder(*, name, **kwargs):
return try_builder(
return try_.builder(
name = name,
builderless = True,
goma_backend = goma.backend.RBE_PROD,
......@@ -237,7 +198,7 @@ gpu_linux_builder(
def gpu_mac_builder(*, name, **kwargs):
return try_builder(
return try_.builder(
name = name,
builderless = True,
cores = None,
......@@ -331,7 +292,7 @@ gpu_mac_builder(
def gpu_win_builder(*, name, **kwargs):
return try_builder(
return try_.builder(
name = name,
builderless = True,
goma_backend = goma.backend.RBE_PROD,
......
This diff is collapsed.
"""Library for defining try builders.
The `try_builder` function defined in this module enables defining a builder and
the tryjob verifier for it in the same location. It can also be accessed through
`try_.builder`.
The `tryjob` function specifies the verifier details for a builder. It can also
be accessed through `try_.job`.
The `defaults` struct provides module-level defaults for the arguments to
`try_builder`. The parameters that support module-level defaults have a
corresponding attribute on `defaults` that is a `lucicfg.var` that can be used
to set the default value. Can also be accessed through `try_.defaults`.
"""
load('./builders.star', 'builders')
load('./args.star', 'args')
defaults = args.defaults(
extends=builders.defaults,
cq_group = None,
)
def tryjob(
*,
disable_reuse=None,
experiment_percentage=None,
location_regexp=None,
location_regexp_exclude=None):
"""Specifies the details of a tryjob verifier.
See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/master/lucicfg/doc/README.md#luci.cq_tryjob_verifier
for details on the arguments. The cq_group parameter supports a module-level
default that defaults to None.
Returns:
A struct that can be passed to the `tryjob` argument of `try_.builder` to
enable the builder for CQ.
"""
return struct(
disable_reuse = disable_reuse,
experiment_percentage = experiment_percentage,
location_regexp = location_regexp,
location_regexp_exclude = location_regexp_exclude,
)
def try_builder(*, name, cq_group=args.DEFAULT, tryjob=None, **kwargs):
"""Define a try builder.
Arguments:
* name - name of the builder, will show up in UIs and logs. Required.
* cq_group - The CQ group to add the builder to. If tryjob is None, it will
be added as includable_only.
* tryjob - A struct containing the details of the tryjob verifier for the
builder, obtained by calling the `tryjob` function.
"""
# Define the builder first so that any validation of luci.builder arguments
# (e.g. bucket) occurs before we try to use it
ret = builders.builder(
name = name,
**kwargs
)
bucket = defaults.get_value_from_kwargs('bucket', kwargs)
cq_group = defaults.get_value('cq_group', cq_group)
if tryjob != None:
luci.cq_tryjob_verifier(
builder = '{}/{}'.format(bucket, name),
cq_group = cq_group,
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
location_regexp = tryjob.location_regexp,
location_regexp_exclude = tryjob.location_regexp_exclude,
)
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = '{}/{}'.format(bucket, name),
cq_group = cq_group,
includable_only = True,
)
return ret
def blink_builder(*, name, goma_backend = None, **kwargs):
return try_builder(
name = name,
goma_backend = goma_backend,
mastername = 'tryserver.blink',
**kwargs
)
def blink_mac_builder(*, name, **kwargs):
return blink_builder(
name = name,
cores = None,
goma_backend = builders.goma.backend.RBE_PROD,
os = builders.os.MAC_ANY,
builderless = True,
ssd = True,
**kwargs
)
def chromium_android_builder(*, name, **kwargs):
return try_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.android',
**kwargs
)
def chromium_angle_builder(*, name, **kwargs):
return try_builder(
name = name,
builderless = False,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.angle',
service_account = 'chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com',
**kwargs
)
def chromium_chromiumos_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.chromiumos',
goma_backend = builders.goma.backend.RBE_PROD,
**kwargs
)
def chromium_dawn_builder(*, name, **kwargs):
return try_builder(
name = name,
builderless = False,
cores = None,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.dawn',
service_account = 'chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com',
**kwargs
)
def chromium_linux_builder(*, name, goma_backend=builders.goma.backend.RBE_PROD, **kwargs):
return try_builder(
name = name,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.linux',
**kwargs
)
def chromium_mac_builder(
*,
name,
builderless=True,
cores=None,
goma_backend=builders.goma.backend.RBE_PROD,
os=builders.os.MAC_ANY,
**kwargs):
return try_builder(
name = name,
cores = cores,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.mac',
os = os,
builderless = builderless,
ssd = True,
**kwargs
)
def chromium_mac_ios_builder(*, name, executable='recipe:ios/try', **kwargs):
return try_builder(
name = name,
caches = [
swarming.cache(
name = 'xcode_ios_11a1027',
path = 'xcode_ios_11a1027.app',
),
],
cores = None,
executable = executable,
mastername = 'tryserver.chromium.mac',
os = builders.os.MAC_ANY,
**kwargs
)
def chromium_swangle_builder(*, name, **kwargs):
return try_builder(
name = name,
builderless = True,
mastername = 'tryserver.chromium.swangle',
service_account = 'chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com',
**kwargs
)
def chromium_swangle_linux_builder(*, name, **kwargs):
return chromium_swangle_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
os = builders.os.LINUX_DEFAULT,
**kwargs
)
def chromium_swangle_windows_builder(*, name, **kwargs):
return chromium_swangle_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
os = builders.os.WINDOWS_DEFAULT,
**kwargs
)
def chromium_win_builder(
*,
name,
builderless=True,
goma_backend=builders.goma.backend.RBE_PROD,
os=builders.os.WINDOWS_DEFAULT,
**kwargs):
return try_builder(
name = name,
builderless = builderless,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.win',
os = os,
**kwargs
)
def gpu_try_builder(*, name, builderless=False, execution_timeout=6 * time.hour, **kwargs):
return try_builder(
name = name,
builderless = builderless,
execution_timeout = execution_timeout,
service_account = 'chromium-try-gpu-builder@chops-service-accounts.iam.gserviceaccount.com',
**kwargs
)
def gpu_chromium_android_builder(*, name, **kwargs):
return gpu_try_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.android',
**kwargs
)
def gpu_chromium_linux_builder(*, name, **kwargs):
return gpu_try_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.linux',
**kwargs
)
def gpu_chromium_mac_builder(*, name, **kwargs):
return gpu_try_builder(
name = name,
cores = None,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.mac',
os = builders.os.MAC_ANY,
**kwargs
)
def gpu_chromium_win_builder(*, name, os=builders.os.WINDOWS_ANY, **kwargs):
return gpu_try_builder(
name = name,
goma_backend = builders.goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.win',
os = os,
**kwargs
)
try_ = struct(
defaults = defaults,
builder = try_builder,
job = tryjob,
blink_builder = blink_builder,
blink_mac_builder = blink_mac_builder,
chromium_android_builder = chromium_android_builder,
chromium_angle_builder = chromium_angle_builder,
chromium_chromiumos_builder = chromium_chromiumos_builder,
chromium_dawn_builder = chromium_dawn_builder,
chromium_linux_builder = chromium_linux_builder,
chromium_mac_builder = chromium_mac_builder,
chromium_mac_ios_builder = chromium_mac_ios_builder,
chromium_swangle_linux_builder = chromium_swangle_linux_builder,
chromium_swangle_windows_builder = chromium_swangle_windows_builder,
chromium_win_builder = chromium_win_builder,
gpu_chromium_android_builder = gpu_chromium_android_builder,
gpu_chromium_linux_builder = gpu_chromium_linux_builder,
gpu_chromium_mac_builder = gpu_chromium_mac_builder,
gpu_chromium_win_builder = gpu_chromium_win_builder,
)
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
load('//lib/builders.star', 'cpu', 'goma', 'os')
load('//lib/try.star', 'try_')
load('//versioned/vars/try.star', 'vars')
# Load this using relative path so that the load statement doesn't
# need to be changed when making a new milestone
......@@ -53,114 +54,49 @@ luci.cq_group(
],
)
defaults.bucket.set(vars.bucket.get())
defaults.bucketed_triggers.set(True)
try_.defaults.bucket.set(vars.bucket.get())
try_.defaults.bucketed_triggers.set(True)
try_.defaults.cq_group.set(vars.cq_group.get())
def tryjob(
*,
disable_reuse=None,
experiment_percentage=None,
location_regexp=None,
location_regexp_exclude=None):
return struct(
disable_reuse = disable_reuse,
experiment_percentage = experiment_percentage,
location_regexp = location_regexp,
location_regexp_exclude = location_regexp_exclude,
)
# Builders are sorted first lexicographically by the function used to define
# them, then lexicographically by their name
def try_builder(
*,
name,
tryjob=None,
**kwargs):
if tryjob != None:
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
location_regexp = tryjob.location_regexp,
location_regexp_exclude = tryjob.location_regexp_exclude,
)
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
includable_only = True,
)
return builder(
name = name,
**kwargs
)
# Builders appear after the function used to define them, with all builders
# defined using the same function ordered lexicographically by name
# Builder functions are defined in lexicographic order by name ignoring the
# '_builder' suffix
# Builder functions are defined for GPU builders on each master where they
# appear: gpu_XXX_builder where XXX is the part after the last dot in the
# mastername
# Builder functions are defined for each master, with additional functions
# for specializing on OS: XXX_builder and XXX_YYY_builder where XXX is the part
# after the last dot in the mastername and YYY is the OS
def android_builder(*, name, **kwargs):
return try_builder(
name = name,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.android',
**kwargs
)
android_builder(
try_.chromium_android_builder(
name = 'android-kitkat-arm-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
)
android_builder(
try_.chromium_android_builder(
name = 'android-marshmallow-arm64-rel',
cores = 16,
goma_jobs = goma.jobs.J300,
ssd = True,
use_java_coverage = True,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
)
def chromiumos_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.chromiumos',
goma_backend = goma.backend.RBE_PROD,
**kwargs
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'chromeos-amd64-generic-rel',
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'linux-chromeos-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
......@@ -168,16 +104,10 @@ chromiumos_builder(
)
def linux_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.linux',
**kwargs
)
linux_builder(
try_.chromium_linux_builder(
name = 'chromium_presubmit',
executable = 'recipe:presubmit',
goma_backend = None,
properties = {
'$depot_tools/presubmit': {
'runhooks': True,
......@@ -185,18 +115,17 @@ linux_builder(
},
'repo_name': 'chromium',
},
tryjob = tryjob(
tryjob = try_.job(
disable_reuse = True,
# TODO(https://crbug.com/1024637) Make non-experimental
experiment_percentage = 100,
),
)
linux_builder(
try_.chromium_linux_builder(
name = 'linux-rel',
goma_backend = goma.backend.RBE_PROD,
goma_jobs = goma.jobs.J150,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024637) Make non-experimental
experiment_percentage = 1,
),
......@@ -204,74 +133,31 @@ linux_builder(
)
def mac_builder(
*,
name,
cores=None,
goma_backend = goma.backend.RBE_PROD,
os=os.MAC_ANY,
**kwargs):
return try_builder(
name = name,
cores = cores,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.mac',
os = os,
builderless = True,
ssd = True,
**kwargs
)
mac_builder(
try_.chromium_mac_builder(
name = 'mac-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
)
def mac_ios_builder(*, name, executable='recipe:ios/try', **kwargs):
return try_builder(
name = name,
caches = [
swarming.cache(
name = 'xcode_ios_11a1027',
path = 'xcode_ios_11a1027.app',
),
],
cores = None,
executable = executable,
mastername = 'tryserver.chromium.mac',
os = os.MAC_ANY,
**kwargs
)
mac_ios_builder(
try_.chromium_mac_ios_builder(
name = 'ios-simulator',
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
)
def win_builder(*, name, builderless=True, os=os.WINDOWS_DEFAULT, **kwargs):
return try_builder(
name = name,
builderless = builderless,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.win',
os = os,
**kwargs
)
win_builder(
try_.chromium_win_builder(
name = 'win10_chromium_x64_rel_ng',
goma_jobs = goma.jobs.J150,
os = os.WINDOWS_10,
ssd = True,
tryjob = tryjob(
tryjob = try_.job(
# TODO(https://crbug.com/1024641) Make non-experimental
experiment_percentage = 1,
),
......
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
load('//lib/builders.star', 'cpu', 'goma', 'os')
load('//lib/try.star', 'try_')
load('//versioned/vars/try.star', 'vars')
# Load this using relative path so that the load statement doesn't
# need to be changed when making a new milestone
......@@ -53,119 +54,48 @@ luci.cq_group(
],
)
defaults.bucket.set(vars.bucket.get())
defaults.bucketed_triggers.set(True)
def tryjob(
*,
disable_reuse=None,
experiment_percentage=None,
location_regexp=None,
location_regexp_exclude=None):
return struct(
disable_reuse = disable_reuse,
experiment_percentage = experiment_percentage,
location_regexp = location_regexp,
location_regexp_exclude = location_regexp_exclude,
)
def try_builder(
*,
name,
tryjob=None,
**kwargs):
if tryjob != None:
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
location_regexp = tryjob.location_regexp,
location_regexp_exclude = tryjob.location_regexp_exclude,
)
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
includable_only = True,
)
return builder(
name = name,
**kwargs
)
# Builders appear after the function used to define them, with all builders
# defined using the same function ordered lexicographically by name
# Builder functions are defined in lexicographic order by name ignoring the
# '_builder' suffix
# Builder functions are defined for GPU builders on each master where they
# appear: gpu_XXX_builder where XXX is the part after the last dot in the
# mastername
# Builder functions are defined for each master, with additional functions
# for specializing on OS: XXX_builder and XXX_YYY_builder where XXX is the part
# after the last dot in the mastername and YYY is the OS
def android_builder(*, name, **kwargs):
return try_builder(
name = name,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.android',
**kwargs
)
android_builder(
try_.defaults.bucket.set(vars.bucket.get())
try_.defaults.bucketed_triggers.set(True)
try_.defaults.cq_group.set(vars.cq_group.get())
# Builders are sorted first lexicographically by the function used to define
# them, then lexicographically by their name
try_.chromium_android_builder(
name = 'android-kitkat-arm-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
)
android_builder(
try_.chromium_android_builder(
name = 'android-marshmallow-arm64-rel',
cores = 16,
goma_jobs = goma.jobs.J300,
ssd = True,
use_java_coverage = True,
tryjob = tryjob(),
tryjob = try_.job(),
)
def chromiumos_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.chromiumos',
goma_backend = goma.backend.RBE_PROD,
**kwargs
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'chromeos-amd64-generic-rel',
tryjob = tryjob(),
tryjob = try_.job(),
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'linux-chromeos-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
use_clang_coverage = True,
)
def linux_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.linux',
**kwargs
)
linux_builder(
try_.chromium_linux_builder(
name = 'chromium_presubmit',
executable = 'recipe:presubmit',
goma_backend = None,
properties = {
'$depot_tools/presubmit': {
'runhooks': True,
......@@ -173,80 +103,36 @@ linux_builder(
},
'repo_name': 'chromium',
},
tryjob = tryjob(
tryjob = try_.job(
disable_reuse = True,
),
)
linux_builder(
try_.chromium_linux_builder(
name = 'linux-rel',
goma_backend = goma.backend.RBE_PROD,
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
use_clang_coverage = True,
)
def mac_builder(
*,
name,
cores=None,
goma_backend = goma.backend.RBE_PROD,
os=os.MAC_ANY,
**kwargs):
return try_builder(
name = name,
cores = cores,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.mac',
os = os,
builderless = True,
ssd = True,
**kwargs
)
mac_builder(
try_.chromium_mac_builder(
name = 'mac-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
)
def mac_ios_builder(*, name, executable='recipe:ios/try', **kwargs):
return try_builder(
name = name,
caches = [
swarming.cache(
name = 'xcode_ios_11a1027',
path = 'xcode_ios_11a1027.app',
),
],
cores = None,
executable = executable,
mastername = 'tryserver.chromium.mac',
os = os.MAC_ANY,
**kwargs
)
mac_ios_builder(
try_.chromium_mac_ios_builder(
name = 'ios-simulator',
tryjob = tryjob(),
tryjob = try_.job(),
)
def win_builder(*, name, builderless=True, os=os.WINDOWS_DEFAULT, **kwargs):
return try_builder(
name = name,
builderless = builderless,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.win',
os = os,
**kwargs
)
win_builder(
try_.chromium_win_builder(
name = 'win10_chromium_x64_rel_ng',
goma_jobs = goma.jobs.J150,
os = os.WINDOWS_10,
ssd = True,
tryjob = tryjob(),
tryjob = try_.job(),
)
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
load('//lib/builders.star', 'cpu', 'goma', 'os')
load('//lib/try.star', 'try_')
load('//versioned/vars/try.star', 'vars')
# Load this using relative path so that the load statement doesn't
# need to be changed when making a new milestone
......@@ -53,120 +54,49 @@ luci.cq_group(
],
)
defaults.bucket.set(vars.bucket.get())
defaults.bucketed_triggers.set(True)
try_.defaults.bucket.set(vars.bucket.get())
try_.defaults.bucketed_triggers.set(True)
try_.defaults.cq_group.set(vars.cq_group.get())
def tryjob(
*,
disable_reuse=None,
experiment_percentage=None,
location_regexp=None,
location_regexp_exclude=None):
return struct(
disable_reuse = disable_reuse,
experiment_percentage = experiment_percentage,
location_regexp = location_regexp,
location_regexp_exclude = location_regexp_exclude,
)
# Builders are sorted first lexicographically by the function used to define
# them, then lexicographically by their name
def try_builder(
*,
name,
tryjob=None,
**kwargs):
if tryjob != None:
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
location_regexp = tryjob.location_regexp,
location_regexp_exclude = tryjob.location_regexp_exclude,
)
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = vars.bucket.builder(name),
cq_group = vars.cq_group.get(),
includable_only = True,
)
return builder(
name = name,
**kwargs
)
# Builders appear after the function used to define them, with all builders
# defined using the same function ordered lexicographically by name
# Builder functions are defined in lexicographic order by name ignoring the
# '_builder' suffix
# Builder functions are defined for GPU builders on each master where they
# appear: gpu_XXX_builder where XXX is the part after the last dot in the
# mastername
# Builder functions are defined for each master, with additional functions
# for specializing on OS: XXX_builder and XXX_YYY_builder where XXX is the part
# after the last dot in the mastername and YYY is the OS
def android_builder(*, name, **kwargs):
return try_builder(
name = name,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.android',
**kwargs
)
android_builder(
try_.chromium_android_builder(
name = 'android-kitkat-arm-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
should_exonerate_flaky_failures = True,
)
android_builder(
try_.chromium_android_builder(
name = 'android-marshmallow-arm64-rel',
cores = 16,
goma_jobs = goma.jobs.J300,
ssd = True,
use_java_coverage = True,
tryjob = tryjob(),
tryjob = try_.job(),
)
def chromiumos_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.chromiumos',
goma_backend = goma.backend.RBE_PROD,
**kwargs
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'chromeos-amd64-generic-rel',
tryjob = tryjob(),
tryjob = try_.job(),
)
chromiumos_builder(
try_.chromium_chromiumos_builder(
name = 'linux-chromeos-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
use_clang_coverage = True,
)
def linux_builder(*, name, **kwargs):
return try_builder(
name = name,
mastername = 'tryserver.chromium.linux',
**kwargs
)
linux_builder(
try_.chromium_linux_builder(
name = 'chromium_presubmit',
executable = 'recipe:presubmit',
goma_backend = None,
properties = {
'$depot_tools/presubmit': {
'runhooks': True,
......@@ -174,83 +104,39 @@ linux_builder(
},
'repo_name': 'chromium',
},
tryjob = tryjob(
tryjob = try_.job(
disable_reuse = True,
),
)
linux_builder(
try_.chromium_linux_builder(
name = 'linux-rel',
goma_backend = goma.backend.RBE_PROD,
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
use_clang_coverage = True,
should_exonerate_flaky_failures = True,
)
def mac_builder(
*,
name,
cores=None,
goma_backend = goma.backend.RBE_PROD,
os=os.MAC_ANY,
**kwargs):
return try_builder(
name = name,
cores = cores,
goma_backend = goma_backend,
mastername = 'tryserver.chromium.mac',
os = os,
builderless = True,
ssd = True,
**kwargs
)
mac_builder(
try_.chromium_mac_builder(
name = 'mac-rel',
goma_jobs = goma.jobs.J150,
tryjob = tryjob(),
tryjob = try_.job(),
should_exonerate_flaky_failures = True,
)
def mac_ios_builder(*, name, executable='recipe:ios/try', **kwargs):
return try_builder(
name = name,
caches = [
swarming.cache(
name = 'xcode_ios_11a1027',
path = 'xcode_ios_11a1027.app',
),
],
cores = None,
executable = executable,
mastername = 'tryserver.chromium.mac',
os = os.MAC_ANY,
**kwargs
)
mac_ios_builder(
try_.chromium_mac_ios_builder(
name = 'ios-simulator',
tryjob = tryjob(),
tryjob = try_.job(),
)
def win_builder(*, name, builderless=True, os=os.WINDOWS_DEFAULT, **kwargs):
return try_builder(
name = name,
builderless = builderless,
goma_backend = goma.backend.RBE_PROD,
mastername = 'tryserver.chromium.win',
os = os,
**kwargs
)
win_builder(
try_.chromium_win_builder(
name = 'win10_chromium_x64_rel_ng',
goma_jobs = goma.jobs.J150,
os = os.WINDOWS_10,
ssd = True,
tryjob = tryjob(),
tryjob = try_.job(),
should_exonerate_flaky_failures = True,
)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment