blob: 69285b11b51e43fb46a629fe5a654e58f6445fca [file] [log] [blame]
#!/usr/bin/env lucicfg
# Copyright 2020 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Configurations for devicelab staging tests.
The schedulers pull commits indirectly from GoB repo (https://chromium.googlesource.com/external/github.com/flutter/flutter)
which is mirrored from https://github.com/flutter/flutter.
"""
load("//lib/common.star", "common")
load("//lib/repos.star", "repos")
load("//lib/timeout.star", "timeout")
# Global OS variables
MAC_OS = "Mac"
# Default caches for Linux builders
LINUX_DEFAULT_CACHES = [
# Android SDK
swarming.cache(name = "android_sdk", path = "android"),
# Chrome
swarming.cache(name = "chrome_and_driver", path = "chrome"),
# OpenJDK
swarming.cache(name = "openjdk", path = "java"),
# PubCache
swarming.cache(name = "pub_cache", path = ".pub-cache"),
# Flutter SDK code
swarming.cache(name = "flutter_sdk", path = "flutter sdk"),
# Builder
swarming.cache(name = "builder_linux_devicelab_staging", path = "builder"),
]
# Default caches for Mac android builders
MAC_ANDROID_DEFAULT_CACHES = [
# Android SDK
swarming.cache(name = "android_sdk", path = "android"),
# Chrome
swarming.cache(name = "chrome_and_driver", path = "chrome"),
# OpenJDK
swarming.cache(name = "openjdk", path = "java"),
# PubCache
swarming.cache(name = "pub_cache", path = ".pub-cache"),
# Flutter SDK code
swarming.cache(name = "flutter_sdk", path = "flutter sdk"),
# Builder
swarming.cache(name = "builder_mac_devicelab_staging", path = "builder"),
]
# Default caches for Mac builders
MAC_DEFAULT_CACHES = [
# Pub cache
swarming.cache(name = "pub_cache", path = ".pub-cache"),
# Flutter SDK code
swarming.cache(name = "flutter_sdk", path = "flutter sdk"),
# Xcode
swarming.cache("xcode_binary"),
swarming.cache("osx_sdk"),
# Builder
swarming.cache(name = "builder_mac_devicelab_staging", path = "builder"),
]
def _setup():
devicelab_staging_prod_config()
def short_name(task_name):
"""Create a short name for task name."""
task_name = task_name.replace("__", "_")
words = task_name.split("_")
return "".join([w[0] for w in words])[:5]
def devicelab_staging_prod_config():
"""Staging configurations for the framework repository."""
drone_recipe_name = "devicelab/devicelab_drone"
luci.recipe(
name = drone_recipe_name,
cipd_package = "flutter/recipe_bundles/flutter.googlesource.com/recipes",
cipd_version = "refs/heads/master",
use_bbagent = True,
)
# Defines console views.
console_view_name = "devicelab_staging"
luci.console_view(
name = console_view_name,
repo = repos.FLUTTER,
refs = [r"refs/heads/master"],
)
# Defines schedulers for staging builders.
trigger_name = "master-gitiles-trigger-devicelab-staging"
luci.gitiles_poller(
name = trigger_name,
bucket = "prod",
repo = repos.FLUTTER,
refs = [r"refs/heads/master"],
)
# Defines triggering policy
triggering_policy = scheduler.greedy_batching(
max_batch_size = 20,
max_concurrent_invocations = 1,
)
# Defines framework prod builders
# Mac prod builders.
mac_ios_tasks = [
"backdrop_filter_perf_ios__timeline_summary",
"basic_material_app_ios__compile",
"channels_integration_test_ios",
"complex_layout_ios__compile",
"complex_layout_ios__start_up",
"complex_layout_scroll_perf_ios__timeline_summary",
"external_ui_integration_test_ios",
"flavors_test_ios",
"flutter_gallery__transition_perf_e2e_ios",
"flutter_gallery_ios__compile",
"flutter_gallery_ios__start_up",
"flutter_gallery_ios__transition_perf",
"flutter_view_ios__start_up",
"hello_world_ios__compile",
"hot_mode_dev_cycle_macos_target__benchmark",
"integration_test_test_ios",
"integration_ui_ios_driver",
"integration_ui_ios_frame_number",
"integration_ui_ios_keyboard_resize",
"integration_ui_ios_screenshot",
"integration_ui_ios_textfield",
"ios_app_with_extensions_test",
"ios_content_validation_test",
"ios_defines_test",
"ios_platform_view_tests",
"large_image_changer_perf_ios",
"macos_chrome_dev_mode",
"microbenchmarks_ios",
"new_gallery_ios__transition_perf",
"platform_channel_sample_test_ios",
"platform_channel_sample_test_swift",
"platform_interaction_test_ios",
"platform_view_ios__start_up",
"platform_views_scroll_perf_ios__timeline_summary",
"post_backdrop_filter_perf_ios__timeline_summary",
"simple_animation_perf_ios",
"smoke_catalina_hot_mode_dev_cycle_ios__benchmark",
"tiles_scroll_perf_ios__timeline_summary",
]
for task in mac_ios_tasks:
common.mac_prod_builder(
name = "Mac_ios_staging %s|%s" % (task, short_name(task)),
recipe = drone_recipe_name,
console_view_name = console_view_name,
triggered_by = [trigger_name],
triggering_policy = triggering_policy,
properties = {
"$flutter/devicelab_osx_sdk": {
"sdk_version": "12c33", # 12.3
},
"dependencies": [
{
"dependency": "xcode",
},
{
"dependency": "gems",
},
{
"dependency": "ios_signing",
},
],
"task_name": task,
"use_cas": True,
},
pool = "luci.flutter.staging",
os = MAC_OS,
category = "Mac_ios",
dimensions = {"device_os": "iOS-14.4.2"},
execution_timeout = timeout.LONG,
expiration_timeout = timeout.LONG_EXPIRATION,
caches = MAC_DEFAULT_CACHES,
)
mac_android_tasks = [
"android_semantics_integration_test",
"backdrop_filter_perf__timeline_summary",
"channels_integration_test",
"color_filter_and_fade_perf__timeline_summary",
"complex_layout_scroll_perf__memory",
"complex_layout_scroll_perf__timeline_summary",
"complex_layout__start_up",
"cubic_bezier_perf_sksl_warmup__timeline_summary",
"cubic_bezier_perf__timeline_summary",
"cull_opacity_perf__timeline_summary",
"drive_perf_debug_warning",
"embedded_android_views_integration_test",
"external_ui_integration_test",
"fading_child_animation_perf__timeline_summary",
"fast_scroll_large_images__memory",
"flavors_test",
"flutter_view__start_up",
"fullscreen_textfield_perf__timeline_summary",
"hello_world_android__compile",
"hello_world__memory",
"home_scroll_perf__timeline_summary",
"hot_mode_dev_cycle__benchmark",
"hybrid_android_views_integration_test",
"imagefiltered_transform_animation_perf__timeline_summary",
"integration_test_test",
"integration_ui_driver",
"integration_ui_frame_number",
"integration_ui_keyboard_resize",
"integration_ui_screenshot",
"integration_ui_textfield",
"microbenchmarks",
"new_gallery__transition_perf",
"picture_cache_perf__timeline_summary",
"platform_channel_sample_test",
"platform_interaction_test",
"platform_view__start_up",
"run_release_test",
"service_extensions_test",
"textfield_perf__timeline_summary",
"tiles_scroll_perf__timeline_summary",
]
for task in mac_android_tasks:
common.mac_prod_builder(
name = "Mac_android_staging %s|%s" % (task, short_name(task)),
recipe = drone_recipe_name,
console_view_name = console_view_name,
triggered_by = [trigger_name],
triggering_policy = triggering_policy,
properties = {
"dependencies": [
{
"dependency": "android_sdk",
},
{
"dependency": "chrome_and_driver",
},
{
"dependency": "open_jdk",
},
],
"task_name": task,
"use_cas": True,
},
pool = "luci.flutter.staging",
os = MAC_OS,
category = "Mac_android",
dimensions = {"device_os": "N"},
expiration_timeout = timeout.LONG_EXPIRATION,
execution_timeout = timeout.SHORT,
caches = MAC_ANDROID_DEFAULT_CACHES,
)
# Linux prod builders.
linux_tasks = [
"analyzer_benchmark",
"android_defines_test",
"android_obfuscate_test",
"android_view_scroll_perf__timeline_summary",
"animated_placeholder_perf__e2e_summary",
]
for task in linux_tasks:
common.linux_prod_builder(
name = "Linux_staging %s|%s" % (task, short_name(task)),
recipe = drone_recipe_name,
console_view_name = console_view_name,
triggered_by = [trigger_name],
triggering_policy = triggering_policy,
properties = {
"dependencies": [
{
"dependency": "android_sdk",
},
{
"dependency": "chrome_and_driver",
},
{
"dependency": "open_jdk",
},
{
"dependency": "curl",
},
],
"task_name": task,
"use_cas": True,
},
pool = "luci.flutter.staging",
os = "Android",
dimensions = {"device_os": "N"},
expiration_timeout = timeout.LONG_EXPIRATION,
caches = LINUX_DEFAULT_CACHES,
)
# Windows prod builders.
win_tasks = [
"complex_layout_win__compile",
"basic_material_app_win__compile",
"flutter_gallery_win__compile",
"windows_chrome_dev_mode",
"flavors_test_win",
"channels_integration_test_win",
"hot_mode_dev_cycle_win__benchmark",
]
for task in win_tasks:
common.windows_prod_builder(
name = "Windows_staging %s|%s" % (task, short_name(task)),
recipe = drone_recipe_name,
console_view_name = console_view_name,
triggered_by = [trigger_name],
triggering_policy = triggering_policy,
properties = {
"dependencies": [
{"dependency": "android_sdk"},
{"dependency": "chrome_and_driver"},
{"dependency": "open_jdk"},
],
"task_name": task,
"use_cas": True,
},
pool = "luci.flutter.staging",
dimensions = {"device_os": "N"},
os = "Windows-10",
)
# Dart HHH Try Builds
list_view_name = "devicelab-hhh-try"
luci.list_view(
name = list_view_name,
title = "DeviceLab HHH try builders",
)
linux_try_tasks = [
"hot_mode_dev_cycle_linux__benchmark",
"flutter_gallery__start_up",
"multi_widget_construction_perf__e2e_summary",
]
for task in linux_try_tasks:
common.linux_try_builder(
name = "Linux_staging %s" % task,
recipe = drone_recipe_name,
list_view_name = list_view_name,
properties = {
"dependencies": [
{
"dependency": "android_sdk",
},
{
"dependency": "chrome_and_driver",
},
{
"dependency": "open_jdk",
},
{
"dependency": "curl",
},
],
"task_name": task,
"upload_metrics": False,
"upload_metrics_to_cas": True,
"use_cas": True,
"attached_device": True,
},
os = "Android",
dimensions = {"device_os": "N"},
execution_timeout = timeout.MEDIUM,
caches = LINUX_DEFAULT_CACHES,
category = "Linux_android",
pool = "luci.flutter.staging",
repo = repos.FLUTTER,
)
devicelab_staging_config = struct(setup = _setup)