#!/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 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 xcode version for flutter/devicelab tests.
XCODE_VERSION = "12c33"

# Global OS variables
LINUX_OS = "Linux"
WINDOWS_OS = "Windows-10"
WINDOWS_OS_DEVICELAB = "Windows-10"
MAC_OS = "Mac-10.15"

# Linux caches
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"),
    # Gradle cache
    swarming.cache(name = "gradle", path = "gradle"),
    # Builder cache
    swarming.cache(name = "builder_linux_devicelab", 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"),
    # Gradle cache
    swarming.cache(name = "gradle", path = "gradle"),
    # Builder cache
    swarming.cache(name = "builder_mac_devicelab", path = "builder"),
]

# Mac caches
MAC_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"),
    # Xcode
    swarming.cache("xcode_binary"),
    swarming.cache("osx_sdk"),
    # Gradle cache
    swarming.cache(name = "gradle", path = "gradle"),
    # Builder cache
    swarming.cache(name = "builder_mac_devicelab", path = "builder"),
]

# Windows caches
WIN_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"),
    # Gradle cache
    swarming.cache(name = "gradle", path = "gradle"),
    # Builder cache
    swarming.cache(name = "builder_win_devicelab", path = "builder"),
]

def _setup(branches):
    devicelab_prod_config("stable", branches.stable.version, branches.stable.testing_ref)
    devicelab_prod_config("beta", branches.beta.version, branches.beta.testing_ref)
    devicelab_prod_config("dev", branches.dev.version, branches.dev.testing_ref)
    devicelab_prod_config("master", branches.master.version, branches.master.testing_ref)

    devicelab_try_config()

def devicelab_prod_config(branch, version, ref):
    """Prod configurations for the framework repository.

    Args:
      branch(str): The branch name we are creating configurations for.
      version(str): One of dev|beta|stable.
      ref(str): The git ref we are creating configurations for.
    """

    # Feature toggle for collecting DeviceLab tests on LUCI. This change landed
    # in flutter/flutter#70702 and must roll through before enabling for more
    # branches beyond master (eg dev, beta, stable).
    UPLOAD_METRICS_CHANNELS = ("master")

    branched_builder_prefix = "" if branch == "master" else " " + branch

    # TODO(godofredoc): Merge the recipe names once we remove the old one.
    drone_recipe_name = ("devicelab/devicelab_drone_" + version if version else "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 for prod builders
    console_view_name = ("devicelab" if branch == "master" else "%s_devicelab" % branch)
    luci.console_view(
        name = console_view_name,
        repo = repos.FLUTTER,
        refs = [ref],
    )

    # Defines prod schedulers
    trigger_name = branch + "-gitiles-trigger-devicelab"
    luci.gitiles_poller(
        name = trigger_name,
        bucket = "prod",
        repo = repos.FLUTTER,
        refs = [ref],
    )

    # Defines triggering policy
    if branch == "master":
        triggering_policy = scheduler.greedy_batching(
            max_batch_size = 3,
            max_concurrent_invocations = 1,
        )

        # DeviceLab has limited resources and we want to bundle
        # as much as possible to ensure we are always testing ToT.
        devicelab_triggering_policy = scheduler.greedy_batching(
            max_batch_size = 20,
            max_concurrent_invocations = 1,
        )
        priority = 30
    else:
        triggering_policy = scheduler.greedy_batching(
            max_batch_size = 1,
            max_concurrent_invocations = 3,
        )
        devicelab_triggering_policy = triggering_policy
        priority = 29

    # Defines framework prod builders

    # Linux prod builders.
    common.linux_prod_builder(
        name = "Linux%s build_aar_module_test|arr" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_java8_compile_test|gjc" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_java8_compile_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_non_android_plugin_test|gnap" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_desugar_classes_test|gnap" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_desugar_classes_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_plugin_bundle_test|gpb" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_plugin_fat_apk_test|gpfa" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s gradle_plugin_light_apk_test|gpla" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s module_host_with_custom_build_test|mhwcb" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s module_custom_host_app_name_test|mchan" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s module_test|mod" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s plugin_dependencies_test|pd" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}],
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_prod_builder(
        name = "Linux%s plugin_test|plugin" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )

    # Linux prod builders with a device.
    linux_tasks = [
        "analyzer_benchmark",
        "android_defines_test",
        "android_obfuscate_test",
        "android_stack_size_test",
        "android_view_scroll_perf__timeline_summary",
        "animated_image_gc_perf",
        "animated_placeholder_perf__e2e_summary",
        "backdrop_filter_perf__e2e_summary",
        "basic_material_app_android__compile",
        "color_filter_and_fade_perf__e2e_summary",
        "complex_layout_android__compile",
        "complex_layout_android__scroll_smoothness",
        "complex_layout_scroll_perf__devtools_memory",
        "complex_layout_semantics_perf",
        "cubic_bezier_perf__e2e_summary",
        "cubic_bezier_perf_sksl_warmup__e2e_summary",
        "cull_opacity_perf__e2e_summary",
        "devtools_profile_start_test",
        "fast_scroll_heavy_gridview__memory",
        "flutter_engine_group_performance",
        "flutter_gallery__back_button_memory",
        "flutter_gallery__image_cache_memory",
        "flutter_gallery__memory_nav",
        "flutter_gallery__start_up",
        "flutter_gallery__transition_perf_e2e",
        "flutter_gallery__transition_perf_hybrid",
        "flutter_gallery__transition_perf_with_semantics",
        "flutter_gallery__transition_perf",
        "flutter_gallery_android__compile",
        "flutter_gallery_sksl_warmup__transition_perf_e2e",
        "flutter_gallery_sksl_warmup__transition_perf",
        "flutter_gallery_v2_chrome_run_test",
        "flutter_gallery_v2_web_compile_test",
        "flutter_test_performance",
        "frame_policy_delay_test_android",
        "hot_mode_dev_cycle_linux__benchmark",
        "image_list_jit_reported_duration",
        "image_list_reported_duration",
        "large_image_changer_perf_android",
        "linux_chrome_dev_mode",
        "multi_widget_construction_perf__e2e_summary",
        "new_gallery__crane_perf",
        "picture_cache_perf__e2e_summary",
        "platform_channels_benchmarks",
        "platform_views_scroll_perf__timeline_summary",
        "routing_test",
        "textfield_perf__e2e_summary",
        "web_size__compile_test",
    ]

    for task in linux_tasks:
        common.linux_prod_builder(
            name = "Linux%s %s|%s" % (branched_builder_prefix, task, common.short_name(task)),
            recipe = drone_recipe_name,
            console_view_name = console_view_name,
            triggered_by = [trigger_name],
            triggering_policy = devicelab_triggering_policy,
            properties = {
                "dependencies": [
                    {
                        "dependency": "android_sdk",
                    },
                    {
                        "dependency": "chrome_and_driver",
                    },
                    {
                        "dependency": "open_jdk",
                    },
                    {
                        "dependency": "curl",
                    },
                ],
                "task_name": task,
                "upload_metrics": branch in UPLOAD_METRICS_CHANNELS,
                "use_cas": True,
                "attached_device": True,
            },
            pool = "luci.flutter.prod",
            os = "Android",
            dimensions = {"device_os": "N"},
            execution_timeout = timeout.MEDIUM,
            caches = LINUX_DEFAULT_CACHES,
            category = "Linux_android",
        )

    # Linux prod builders.
    linux_vm_tasks = [
        "technical_debt__cost",
        "web_benchmarks_canvaskit",
        "web_benchmarks_html",
    ]
    for task in linux_vm_tasks:
        common.linux_prod_builder(
            name = "Linux%s %s|%s" % (branched_builder_prefix, task, common.short_name(task)),
            recipe = drone_recipe_name,
            console_view_name = console_view_name,
            triggered_by = [trigger_name],
            triggering_policy = triggering_policy,
            priority = priority,
            properties = {
                "dependencies": [
                    {
                        "dependency": "android_sdk",
                    },
                    {
                        "dependency": "chrome_and_driver",
                    },
                    {
                        "dependency": "curl",
                    },
                ],
                "task_name": task,
                "upload_metrics": branch in UPLOAD_METRICS_CHANNELS,
                "use_cas": True,
            },
            caches = LINUX_DEFAULT_CACHES,
            os = LINUX_OS,
        )

    # Mac host with android phones
    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",
        "smoke_catalina_start_up",
        "textfield_perf__timeline_summary",
        "tiles_scroll_perf__timeline_summary",
    ]

    for task in mac_android_tasks:
        common.mac_prod_builder(
            name = "Mac_android%s %s|%s" % (branched_builder_prefix, task, common.short_name(task)),
            recipe = drone_recipe_name,
            console_view_name = console_view_name,
            triggered_by = [trigger_name],
            triggering_policy = triggering_policy,
            priority = priority,
            properties = {
                "dependencies": [
                    {
                        "dependency": "android_sdk",
                    },
                    {
                        "dependency": "chrome_and_driver",
                    },
                    {
                        "dependency": "open_jdk",
                    },
                ],
                "task_name": task,
                "upload_metrics": branch in UPLOAD_METRICS_CHANNELS,
                "use_cas": True,
                "attached_device": True,
            },
            pool = "luci.flutter.prod",
            os = MAC_OS,
            category = "Mac_android",
            dimensions = {"device_os": "N"},
            expiration_timeout = timeout.XL,
            execution_timeout = timeout.MEDIUM,
            caches = MAC_ANDROID_DEFAULT_CACHES,
        )

    # Mac host with ios phones
    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",
        "cubic_bezier_perf_ios_sksl_warmup__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_gallery_ios_sksl_warmup__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_channels_benchmarks_ios",
        "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%s %s|%s" % (branched_builder_prefix, task, common.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": XCODE_VERSION,
                },
                "dependencies": [
                    {
                        "dependency": "xcode",
                    },
                    {
                        "dependency": "gems",
                    },
                    {
                        "dependency": "ios_signing",
                    },
                ],
                "task_name": task,
                "upload_metrics": branch in UPLOAD_METRICS_CHANNELS,
                "use_cas": True,
                "attached_device": True,
            },
            pool = "luci.flutter.prod",
            os = MAC_OS,
            category = "Mac_ios",
            dimensions = {"device_os": "iOS-14.4.2"},
            execution_timeout = timeout.MEDIUM,
            expiration_timeout = timeout.LONG_EXPIRATION,
            caches = MAC_DEFAULT_CACHES,
        )

    # Mac host with ios32
    mac_ios32_tasks = [
        "native_ui_tests_ios32",
        "flutter_gallery__transition_perf_e2e_ios32",
    ]
    for task in mac_ios32_tasks:
        common.mac_prod_builder(
            name = "Mac_ios%s %s|%s" % (branched_builder_prefix, task, common.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": XCODE_VERSION,
                },
                "dependencies": [
                    {
                        "dependency": "xcode",
                    },
                    {
                        "dependency": "gems",
                    },
                    {
                        "dependency": "ios_signing",
                    },
                ],
                "task_name": task,
                "upload_metrics": branch in UPLOAD_METRICS_CHANNELS,
                "use_cas": True,
                "attached_device": True,
            },
            pool = "luci.flutter.prod",
            os = MAC_OS,
            dimensions = {"device_os": "iOS-9.3.6"},
            execution_timeout = timeout.LONG,
            expiration_timeout = timeout.LONG_EXPIRATION,
            caches = MAC_DEFAULT_CACHES,
            category = "Mac_ios32",
        )

    # Mac prod builders.
    common.mac_prod_builder(
        name = "Mac%s build_aar_module_test|aarm" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s gradle_non_android_plugin_test|gnap" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s gradle_plugin_bundle_test|gpbt" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s gradle_plugin_fat_apk_test|gpfa" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s gradle_plugin_light_apk_test|gpla" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s module_host_with_custom_build_test|mhwcb" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s module_custom_host_app_name_test|mchan" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s module_test|mod" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s plugin_dependencies_test|pd" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s module_test_ios|mios" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_test_ios",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s build_ios_framework_module_test|bifm" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "build_ios_framework_module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    common.mac_prod_builder(
        name = "Mac%s plugin_lint_mac|plm" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_lint_mac",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s plugin_test|plugin" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_prod_builder(
        name = "Mac%s dart_plugin_registry_test|dart_plugin" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        properties = {
            "dependencies": [
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "dart_plugin_registry_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    # Windows prod builders
    common.windows_prod_builder(
        name = "Windows%s build_aar_module_test|aarm" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s gradle_non_android_plugin_test|gnap" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s gradle_plugin_bundle_test|gpbt" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s gradle_plugin_fat_apk_test|gpfa" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s gradle_plugin_light_apk_test|gpla" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s module_host_with_custom_build_test|mhwcb" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s module_custom_host_app_name_test|mchan" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s module_test|mod" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s plugin_dependencies_test|pd" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}],
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_prod_builder(
        name = "Windows%s plugin_test|plugin" % ("" if branch == "master" else " " + branch),
        recipe = drone_recipe_name,
        console_view_name = console_view_name,
        triggered_by = [trigger_name],
        triggering_policy = triggering_policy,
        priority = priority,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )

    # Desktop Windows prod builders
    # Currently Windows is only supported on master and dev.
    if ref in (r"refs/heads/master", r"refs/heads/dev"):
        windows_desktop_tasks = [
            "hot_mode_dev_cycle_win_target__benchmark",
        ]
        for task in windows_desktop_tasks:
            common.windows_prod_builder(
                name = "Windows%s %s|%s" % (branched_builder_prefix, task, common.short_name(task)),
                recipe = drone_recipe_name,
                console_view_name = console_view_name,
                triggered_by = [trigger_name],
                triggering_policy = triggering_policy,
                priority = priority,
                properties = {
                    "task_name": task,
                    "use_cas": True,
                    "dependencies": [{"dependency": "certs"}],
                },
                caches = WIN_DEFAULT_CACHES,
                os = WINDOWS_OS,
            )

    # Windows host with android phone.
    windows_android_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 windows_android_tasks:
        common.windows_prod_builder(
            name = "Windows_android%s %s|%s" % (branched_builder_prefix, task, common.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,
                "attached_device": True,
            },
            pool = "luci.flutter.prod",
            dimensions = {"device_os": "N"},
            os = WINDOWS_OS_DEVICELAB,
            caches = WIN_DEFAULT_CACHES,
            category = "Windows_android",
        )

def devicelab_try_config():
    """Try configurations for the framework repository."""

    drone_recipe_name = "devicelab/devicelab_drone"

    # Defines a list view for try builders
    list_view_name = "devicelab-try"
    luci.list_view(
        name = "devicelab-try",
        title = "devicelab try builders",
    )

    # Defines devicelab try builders

    # Linux try builders.
    common.linux_try_builder(
        name = "Linux build_aar_module_test|aarm",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        add_cq = True,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_desugar_classes_test|gjet",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_desugar_classes_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_java8_compile_test|gjc",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_java8_compile_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_jetifier_test|gjet",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_jetifier_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )

    # TODO(fujino): remove once https://github.com/flutter/flutter/pull/80161
    # rolls to stable
    common.linux_try_builder(
        name = "Linux gradle_non_android_plugin_test|gnap",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_plugin_bundle_test|gpbt",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_plugin_fat_apk_test|gpfa",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux gradle_plugin_light_apk_test|gpla",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux module_host_with_custom_build_test|mhwcb",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux module_custom_host_app_name_test|mchan",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux module_test|module",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux plugin_dependencies_test|pd",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux plugin_test|plugin",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )
    common.linux_try_builder(
        name = "Linux web_benchmarks_html|wbh",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "curl"}],
            "task_name": "web_benchmarks_html",
            "use_cas": True,
        },
        caches = LINUX_DEFAULT_CACHES,
        os = LINUX_OS,
    )

    # Desktop Linux try builders
    linux_desktop_tasks = [
        "hot_mode_dev_cycle_linux_target__benchmark",
    ]
    for task in linux_desktop_tasks:
        common.linux_try_builder(
            name = "Linux %s|%s" % (task, common.short_name(task)),
            recipe = drone_recipe_name,
            repo = repos.FLUTTER,
            list_view_name = list_view_name,
            properties = {
                "dependencies": [
                    {
                        "dependency": "clang",
                    },
                    {
                        "dependency": "cmake",
                    },
                    {
                        "dependency": "ninja",
                    },
                    {
                        "dependency": "curl",
                    },
                ],
                "task_name": task,
                "use_cas": True,
            },
            caches = LINUX_DEFAULT_CACHES,
            os = LINUX_OS,
        )

    # Mac try builders.
    common.mac_try_builder(
        name = "Mac build_aar_module_test|aarm",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        add_cq = True,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    # TODO(fujino): remove once https://github.com/flutter/flutter/pull/80161
    # rolls to stable
    common.mac_try_builder(
        name = "Mac gradle_non_android_plugin_test|gnap",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac gradle_plugin_bundle_test|gpbt",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac gradle_plugin_fat_apk_test|gpfa",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac gradle_plugin_light_apk_test|gpla",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac module_host_with_custom_build_test|mhwcb",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac module_custom_host_app_name_test|mchan",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac module_test|mod",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac module_test_ios|mios",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "module_test_ios",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac build_ios_framework_module_test|bifm",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "build_ios_framework_module_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    common.mac_try_builder(
        name = "Mac plugin_dependencies_test|pd",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    common.mac_try_builder(
        name = "Mac plugin_lint_mac|plm",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_lint_mac",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac plugin_test|plugin",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "android_sdk",
                },
                {
                    "dependency": "open_jdk",
                },
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )
    common.mac_try_builder(
        name = "Mac dart_plugin_registry_test|dart_plugin",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [
                {
                    "dependency": "xcode",
                },
                {
                    "dependency": "gems",
                },
            ],
            "$flutter/osx_sdk": {
                "sdk_version": XCODE_VERSION,
            },
            "task_name": "dart_plugin_registry_test",
            "use_cas": True,
        },
        caches = MAC_DEFAULT_CACHES,
        dimensions = {"device_type": "none"},
        os = MAC_OS,
    )

    # Windows try builders.
    common.windows_try_builder(
        name = "Windows build_aar_module_test|aarm",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        add_cq = True,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "build_aar_module_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )

    # TODO(fujino): remove once https://github.com/flutter/flutter/pull/80161
    # rolls to stable
    common.windows_try_builder(
        name = "Windows gradle_non_android_plugin_test|gnap",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_non_android_plugin_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows gradle_plugin_bundle_test|gpbt",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_bundle_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows gradle_plugin_fat_apk_test|gpfa",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_fat_apk_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows gradle_plugin_light_apk_test|gpla",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "gradle_plugin_light_apk_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows module_host_with_custom_build_test|mhwcb",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_host_with_custom_build_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows module_custom_host_app_name_test|mchan",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_custom_host_app_name_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows module_test|mod",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "module_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows plugin_dependencies_test|pd",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "plugin_dependencies_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )
    common.windows_try_builder(
        name = "Windows plugin_test|plugin",
        recipe = drone_recipe_name,
        repo = repos.FLUTTER,
        list_view_name = list_view_name,
        properties = {
            "dependencies": [{"dependency": "android_sdk"}, {"dependency": "chrome_and_driver"}, {"dependency": "open_jdk"}, {"dependency": "certs"}],
            "task_name": "plugin_test",
            "use_cas": True,
        },
        caches = WIN_DEFAULT_CACHES,
        os = WINDOWS_OS,
    )

    # Desktop Windows try builders
    windows_desktop_tasks = [
        "hot_mode_dev_cycle_win_target__benchmark",
    ]
    for task in windows_desktop_tasks:
        common.windows_try_builder(
            name = "Windows %s|%s" % (task, common.short_name(task)),
            recipe = drone_recipe_name,
            repo = repos.FLUTTER,
            list_view_name = list_view_name,
            properties = {
                "task_name": task,
                "use_cas": True,
                "dependencies": [{"dependency": "certs"}],
            },
            caches = WIN_DEFAULT_CACHES,
            os = WINDOWS_OS,
        )

devicelab_config = struct(setup = _setup)
