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

Add a mechanism for declaring list views in a distributed fashion.

Bug: 1067057
Change-Id: I45649ec0896194dbbb7ad9753046d655ae0b88f9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2140927Reviewed-by: default avatarAaron Gable <agable@chromium.org>
Commit-Queue: Garrett Beaty <gbeaty@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758294}
parent 3ee43d41
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
load('//lib/try.star', 'try_')
try_.defaults.add_to_list_view.set(True)
try_.defaults.bucket.set('try')
try_.defaults.build_numbers.set(True)
try_.defaults.configure_kitchen.set(True)
......
load('//lib/builders.star', 'builder', 'cpu', 'defaults', 'goma', 'os')
load('//lib/try.star', 'try_')
try_.defaults.add_to_list_view.set(True)
try_.defaults.bucket.set('try')
try_.defaults.build_numbers.set(True)
try_.defaults.configure_kitchen.set(True)
......@@ -102,4 +103,3 @@ try_.chromium_swangle_windows_builder(
name = 'win-swangle-try-x86',
pool = 'luci.chromium.swangle.deps.win.x86.try',
)
......@@ -34,6 +34,22 @@ exec('//versioned/milestones/m83/buckets/try.star')
# *** After this point everything is trunk only ***
[try_.list_view(
name = name,
) for name in (
'tryserver.blink',
'tryserver.chromium.android',
'tryserver.chromium.angle',
'tryserver.chromium.chromiumos',
'tryserver.chromium.dawn',
'tryserver.chromium.linux',
'tryserver.chromium.mac',
'tryserver.chromium.swangle',
'tryserver.chromium.win',
)]
try_.defaults.add_to_list_view.set(True)
try_.defaults.bucket.set('try')
try_.defaults.cq_group.set('cq')
......
luci.list_view(
name = 'angle.try',
entries = [
'android_angle_deqp_rel_ng',
'android_angle_vk32_deqp_rel_ng',
'android_angle_vk64_deqp_rel_ng',
'android_angle_rel_ng',
'android_angle_vk32_rel_ng',
'android_angle_vk64_rel_ng',
'fuchsia-angle-rel',
'linux-angle-rel',
'linux_angle_deqp_rel_ng',
'linux_angle_ozone_rel_ng',
'mac-angle-rel',
'win-angle-deqp-rel-32',
'win-angle-deqp-rel-64',
'win-angle-rel-32',
'win-angle-rel-64',
],
)
......@@ -188,7 +188,7 @@ links {
}
links {
text: "angle"
url: "/p/chromium/g/angle.try/builders"
url: "/p/chromium/g/tryserver.chromium.angle/builders"
alt: "Angle"
}
links {
......
luci.list_view(
name = 'tryserver.blink',
entries = [
'try/linux-blink-rel',
'try/mac10.10-blink-rel',
'try/mac10.11-blink-rel',
'try/mac10.12-blink-rel',
'try/mac10.13-blink-rel',
'try/mac10.13_retina-blink-rel',
'try/mac10.14-blink-rel',
'try/mac10.15-blink-rel',
'try/win10-blink-rel',
'try/win7-blink-rel',
],
)
luci.list_view(
name = 'tryserver.chromium.android',
entries = [
'try/android-asan',
'try/android-bfcache-rel',
'try/android-opus-kitkat-arm-rel',
'try/android_archive_rel_ng',
'try/android-binary-size',
'try/android_blink_rel',
'try/android_cfi_rel_ng',
'try/android_clang_dbg_recipe',
'try/android_compile_dbg',
'try/android_compile_x64_dbg',
'try/android_compile_x86_dbg',
'try/android_cronet',
'try/android-cronet-arm-dbg',
'try/android_cronet_tester',
'try/android_mojo',
'try/android-lollipop-arm-rel',
'try/android-marshmallow-arm64-rel',
'try/android-marshmallow-x86-fyi-rel',
'try/android-pie-arm64-rel',
'try/android-pie-x86-rel',
'try/android-10-arm64-rel',
'try/android-weblayer-pie-arm64-fyi-rel',
'try/android-webview-pie-arm64-fyi-rel',
'try/android_optional_gpu_tests_rel',
'try/android_unswarmed_pixel_aosp',
'try/cast_shell_android',
'try/linux_android_dbg_ng',
'try/android-kitkat-arm-rel',
'try/gpu-fyi-try-android-l-nexus-5-32',
'try/gpu-fyi-try-android-l-nexus-6-32',
'try/gpu-fyi-try-android-m-nexus-5x-64',
'try/gpu-fyi-try-android-m-nexus-5x-deqp-64',
'try/gpu-fyi-try-android-m-nexus-5x-skgl-64',
'try/gpu-fyi-try-android-m-nexus-6p-64',
'try/gpu-fyi-try-android-m-nexus-9-64',
'try/gpu-fyi-try-android-n-nvidia-shield-tv-64',
'try/gpu-fyi-try-android-p-pixel-2-32',
'try/gpu-fyi-try-android-p-pixel-2-skv-32',
'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32',
'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64',
'try/gpu-fyi-try-android-q-pixel-2-vk-32',
'try/gpu-fyi-try-android-q-pixel-2-vk-64',
'try/gpu-try-android-m-nexus-5x-64',
'try/android-deterministic-rel',
'try/android-deterministic-dbg',
'try/try-nougat-phone-tester',
'try/android-oreo-arm64-dbg',
'try/android-pie-arm64-dbg',
'try/android-webview-marshmallow-arm64-dbg',
'try/android-webview-nougat-arm64-dbg',
'try/android-webview-oreo-arm64-dbg',
'try/android-webview-pie-arm64-dbg',
],
)
luci.list_view(
name = 'tryserver.chromium.chromiumos',
entries = [
'try/chromeos-amd64-generic-dbg',
'try/chromeos-amd64-generic-rel',
'try/chromeos-arm-generic-dbg',
'try/chromeos-arm-generic-rel',
'try/chromeos-kevin-compile-rel',
'try/chromeos-kevin-rel',
'try/linux-chromeos-compile-dbg',
'try/linux-chromeos-dbg',
'try/linux-chromeos-rel',
],
)
luci.list_view(
name = 'tryserver.chromium.dawn',
entries = [
'try/dawn-linux-x64-deps-rel',
'try/dawn-mac-x64-deps-rel',
'try/dawn-win10-x64-deps-rel',
'try/dawn-win10-x86-deps-rel',
'try/linux-dawn-rel',
'try/mac-dawn-rel',
'try/win-dawn-rel',
],
)
luci.list_view(
name = 'tryserver.chromium.linux',
entries = [
'try/cast_shell_audio_linux',
'try/cast_shell_linux',
'try/chromium_presubmit',
'try/closure_compilation',
'try/fuchsia_arm64',
'try/fuchsia-arm64-cast',
'try/fuchsia-compile-x64-dbg',
'try/fuchsia-fyi-arm64-rel',
'try/fuchsia-fyi-x64-dbg',
'try/fuchsia-fyi-x64-rel',
'try/fuchsia_x64',
'try/fuchsia-x64-cast',
'try/gpu-fyi-try-linux-intel-dqp',
'try/gpu-fyi-try-linux-intel-exp',
'try/gpu-fyi-try-linux-intel-rel',
'try/gpu-fyi-try-linux-intel-sk-dawn-rel',
'try/gpu-fyi-try-linux-intel-skv',
'try/gpu-fyi-try-linux-nvidia-dbg',
'try/gpu-fyi-try-linux-nvidia-dqp',
'try/gpu-fyi-try-linux-nvidia-exp',
'try/gpu-fyi-try-linux-nvidia-rel',
'try/gpu-fyi-try-linux-nvidia-skv',
'try/gpu-fyi-try-linux-nvidia-tsn',
'try/gpu-try-linux-nvidia-dbg',
'try/gpu-try-linux-nvidia-rel',
'try/layout_test_leak_detection',
'try/leak_detection_linux',
'try/linux-annotator-rel',
'try/linux-autofill-assistant',
'try/linux-bfcache-rel',
'try/linux-dcheck-off-rel',
'try/linux-gcc-rel',
'try/linux-libfuzzer-asan-rel',
'try/linux-ozone-rel',
'try/linux-rel',
'try/linux-clang-tidy-dbg',
'try/linux-clang-tidy-rel',
'try/linux-trusty-rel',
'try/linux-webkit-msan-rel',
'try/linux_arm',
'try/linux_chromium_analysis',
'try/linux_chromium_archive_rel_ng',
'try/linux_chromium_asan_rel_ng',
'try/linux_chromium_cfi_rel_ng',
'try/linux_chromium_chromeos_asan_rel_ng',
'try/linux_chromium_chromeos_msan_rel_ng',
'try/linux_chromium_clobber_rel_ng',
'try/linux_chromium_compile_dbg_32_ng',
'try/linux_chromium_msan_rel_ng',
'try/linux_chromium_tsan_rel_ng',
'try/linux_chromium_ubsan_rel_ng',
'try/linux_layout_tests_composite_after_paint',
'try/linux-layout-tests-edit-ng',
'try/linux-layout-tests-fragment-item',
'try/linux_layout_tests_layout_ng_disabled',
'try/linux_mojo',
'try/linux_mojo_chromeos',
'try/linux_optional_gpu_tests_rel',
'try/linux_upload_clang',
'try/linux-viz-rel',
'try/linux_vr',
],
)
luci.list_view(
name = 'tryserver.chromium.mac',
entries = [
'try/gpu-fyi-try-mac-amd-dqp',
'try/gpu-fyi-try-mac-amd-pro-rel',
'try/gpu-fyi-try-mac-amd-retina-dbg',
'try/gpu-fyi-try-mac-amd-retina-exp',
'try/gpu-fyi-try-mac-amd-retina-rel',
'try/gpu-fyi-try-mac-asan',
'try/gpu-fyi-try-mac-intel-dbg',
'try/gpu-fyi-try-mac-intel-dqp',
'try/gpu-fyi-try-mac-intel-exp',
'try/gpu-fyi-try-mac-intel-rel',
'try/gpu-fyi-try-mac-nvidia-retina-dbg',
'try/gpu-fyi-try-mac-nvidia-retina-exp',
'try/gpu-fyi-try-mac-nvidia-retina-rel',
'try/gpu-try-mac-amd-retina-dbg',
'try/gpu-try-mac-intel-dbg',
'try/ios-device',
'try/ios-simulator-code-coverage',
'try/ios-simulator-cr-recipe',
'try/ios-simulator-cronet',
'try/ios-simulator-full-configs',
'try/ios-simulator-noncq',
'try/ios13-beta-simulator',
'try/ios13-sdk-simulator',
'try/mac-osxbeta-rel',
'try/mac-rel',
'try/mac_chromium_10.10',
'try/mac_chromium_10.12_rel_ng',
'try/mac_chromium_10.13_rel_ng',
'try/mac_chromium_10.14_rel_ng',
'try/mac_chromium_10.15_rel_ng',
'try/mac_chromium_archive_rel_ng',
'try/mac_chromium_asan_rel_ng',
'try/mac_chromium_compile_dbg_ng',
'try/mac_chromium_compile_rel_ng',
'try/mac_chromium_dbg_ng',
'try/mac_optional_gpu_tests_rel',
'try/mac_upload_clang',
],
)
luci.list_view(
name = 'tryserver.chromium.swangle',
entries = [
'linux-swangle-chromium-try-x64',
'linux-swangle-try-tot-angle-x64',
'linux-swangle-try-tot-angle-x86',
'linux-swangle-try-tot-swiftshader-x64',
'linux-swangle-try-tot-swiftshader-x86',
'linux-swangle-try-x64',
'linux-swangle-try-x86',
'mac-swangle-chromium-try-x64',
'win-swangle-chromium-try-x86',
'win-swangle-try-tot-angle-x64',
'win-swangle-try-tot-angle-x86',
'win-swangle-try-tot-swiftshader-x64',
'win-swangle-try-tot-swiftshader-x86',
'win-swangle-try-x64',
'win-swangle-try-x86',
],
)
luci.list_view(
name = 'tryserver.chromium.win',
entries = [
'try/gpu-fyi-try-win7-amd-dbg-32',
'try/gpu-fyi-try-win7-amd-dqp-32',
'try/gpu-fyi-try-win7-amd-rel-32',
'try/gpu-fyi-try-win7-nvidia-dqp-64',
'try/gpu-fyi-try-win7-nvidia-rel-32',
'try/gpu-fyi-try-win7-nvidia-rel-64',
'try/gpu-fyi-try-win10-intel-dqp-64',
'try/gpu-fyi-try-win10-intel-exp-64',
'try/gpu-fyi-try-win10-intel-rel-64',
'try/gpu-fyi-try-win10-nvidia-dbg-64',
'try/gpu-fyi-try-win10-nvidia-dqp-64',
'try/gpu-fyi-try-win10-nvidia-dx12vk-dbg-64',
'try/gpu-fyi-try-win10-nvidia-dx12vk-rel-64',
'try/gpu-fyi-try-win10-nvidia-exp-64',
'try/gpu-fyi-try-win10-nvidia-rel-32',
'try/gpu-fyi-try-win10-nvidia-rel-64',
'try/gpu-fyi-try-win10-nvidia-sk-dawn-rel-64',
'try/gpu-fyi-try-win10-nvidia-skgl-64',
'try/gpu-try-win10-nvidia-rel',
'try/win-asan',
'try/win-libfuzzer-asan-rel',
'try/win7-rel',
'try/win10_chromium_x64_dbg_ng',
'try/win10_chromium_x64_rel_ng',
'try/win_archive',
'try/win_chromium_compile_dbg_ng',
'try/win_chromium_compile_rel_ng',
'try/win_chromium_dbg_ng',
'try/win_chromium_x64_rel_ng',
'try/win_mojo',
'try/win_optional_gpu_tests_rel',
'try/win_upload_clang',
'try/win_x64_archive',
'try/win-annotator-rel',
],
)
This diff is collapsed.
......@@ -12,6 +12,8 @@ The `defaults` struct provides module-level defaults for the arguments to
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('@stdlib//internal/graph.star', 'graph')
load('@stdlib//internal/luci/common.star', 'keys')
load('./builders.star', 'builders')
load('./args.star', 'args')
......@@ -19,10 +21,50 @@ load('./args.star', 'args')
defaults = args.defaults(
extends=builders.defaults,
add_to_list_view = False,
cq_group = None,
list_view = args.COMPUTE,
)
def _sorted_list_view_graph_key(console_name):
return graph.key('@chromium', '', 'sorted_list_view', console_name)
def _sorted_list_view_impl(ctx, *, console_name):
key = _sorted_list_view_graph_key(console_name)
graph.add_node(key)
graph.add_edge(keys.project(), key)
return graph.keyset(key)
_sorted_list_view = lucicfg.rule(impl=_sorted_list_view_impl)
def _sort_consoles(ctx):
milo = ctx.output['luci-milo.cfg']
for console in milo.consoles:
graph_key = _sorted_list_view_graph_key(console.id)
node = graph.node(graph_key)
if node:
console.builders = sorted(console.builders, lambda b: list(b.name))
milo.consoles = sorted(milo.consoles, lambda c: c.id)
lucicfg.generator(_sort_consoles)
def list_view(*, name, **kwargs):
ret = luci.list_view(
name = name,
**kwargs
)
_sorted_list_view(
console_name = name,
)
return ret
def tryjob(
*,
disable_reuse=None,
......@@ -47,14 +89,29 @@ def tryjob(
)
def try_builder(*, name, cq_group=args.DEFAULT, tryjob=None, **kwargs):
def try_builder(
*,
name,
add_to_list_view=args.DEFAULT,
cq_group=args.DEFAULT,
list_view=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
name - name of the builder, will show up in UIs and logs. Required.
add_to_list_view - A bool indicating whether an entry should be
created for the builder in the console identified by
`list_view`. Supports a module-level default that defaults to
False.
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
list_view - A string identifying the ID of the list view to
add an entry to. Supports a module-level default that defaults to
the mastername of the builder, if provided. An entry will be added
only if `add_to_list_view` is True.
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
......@@ -65,10 +122,11 @@ def try_builder(*, name, cq_group=args.DEFAULT, tryjob=None, **kwargs):
)
bucket = defaults.get_value_from_kwargs('bucket', kwargs)
builder = '{}/{}'.format(bucket, name)
cq_group = defaults.get_value('cq_group', cq_group)
if tryjob != None:
luci.cq_tryjob_verifier(
builder = '{}/{}'.format(bucket, name),
builder = builder,
cq_group = cq_group,
disable_reuse = tryjob.disable_reuse,
experiment_percentage = tryjob.experiment_percentage,
......@@ -78,11 +136,26 @@ def try_builder(*, name, cq_group=args.DEFAULT, tryjob=None, **kwargs):
else:
# Allow CQ to trigger this builder if user opts in via CQ-Include-Trybots.
luci.cq_tryjob_verifier(
builder = '{}/{}'.format(bucket, name),
builder = builder,
cq_group = cq_group,
includable_only = True,
)
add_to_list_view = defaults.get_value('add_to_list_view', add_to_list_view)
if add_to_list_view:
list_view = defaults.get_value('list_view', list_view)
if list_view == args.COMPUTE:
list_view = defaults.get_value_from_kwargs('mastername', kwargs)
if list_view:
add_to_list_view = defaults.get_value(
'add_to_list_view', add_to_list_view)
luci.list_view_entry(
builder = builder,
list_view = list_view,
)
return ret
......@@ -309,6 +382,7 @@ try_ = struct(
defaults = defaults,
builder = try_builder,
job = tryjob,
list_view = list_view,
blink_builder = blink_builder,
blink_mac_builder = blink_mac_builder,
......
......@@ -103,7 +103,6 @@ exec('//buckets/webrtc.star')
exec('//buckets/webrtc.fyi.star')
exec('//consoles/android.packager.star')
exec('//consoles/angle.try.star')
exec('//consoles/chromium.goma.star')
exec('//consoles/chromium.goma.fyi.star')
exec('//consoles/chromium.goma.migration.star')
......@@ -117,14 +116,6 @@ exec('//consoles/sheriff.ios.star')
exec('//consoles/try-m80.star')
exec('//consoles/try-m81.star')
exec('//consoles/try-m83.star')
exec('//consoles/tryserver.blink.star')
exec('//consoles/tryserver.chromium.android.star')
exec('//consoles/tryserver.chromium.chromiumos.star')
exec('//consoles/tryserver.chromium.dawn.star')
exec('//consoles/tryserver.chromium.linux.star')
exec('//consoles/tryserver.chromium.mac.star')
exec('//consoles/tryserver.chromium.swangle.star')
exec('//consoles/tryserver.chromium.win.star')
exec('//notifiers.star')
......
......@@ -52,6 +52,7 @@ luci.cq_group(
],
)
try_.defaults.add_to_list_view.set(vars.is_master)
try_.defaults.bucket.set(vars.try_bucket)
try_.defaults.cq_group.set(vars.cq_group)
......
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