|  | #!/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 the flutter framework repository (flutter/flutter). | 
|  |  | 
|  | 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. | 
|  |  | 
|  | Try jobs use github directly but are also registered with luci-cq | 
|  | to take advantage of led recipe builder tests. | 
|  | """ | 
|  |  | 
|  | load("//lib/ci_yaml/ci_yaml.star", "ci_yaml") | 
|  | load("//lib/common.star", "common") | 
|  | load("//lib/release_branches/release_branches.star", "release_branches") | 
|  | load("//lib/repos.star", "repos") | 
|  |  | 
|  | def _flutter_properties(): | 
|  | properties = { | 
|  | "use_cas": True, | 
|  | } | 
|  | return properties | 
|  |  | 
|  | def _setup(): | 
|  | """Default configurations for branches and repos.""" | 
|  | master_triggering_policy = scheduler.greedy_batching( | 
|  | max_batch_size = 6, | 
|  | max_concurrent_invocations = 1, | 
|  | ) | 
|  | ci_yaml.generate( | 
|  | "flutter", | 
|  | "master", | 
|  | release_branches.master.version, | 
|  | release_branches.master.testing_ref, | 
|  | {}, | 
|  | _flutter_properties(), | 
|  | master_triggering_policy, | 
|  | recipes_ref = release_branches.master.recipes_ref, | 
|  | ) | 
|  | _drone_prod_builders("") | 
|  | _drone_try_builders() | 
|  |  | 
|  | def _drone_prod_builders(prefix): | 
|  | """Generate drone builders to help with subshards.""" | 
|  | recipes = ["flutter/flutter_drone", "devicelab/devicelab_test_drone"] | 
|  | for recipe in recipes: | 
|  | luci.recipe( | 
|  | name = "%s%s" % (prefix, recipe), | 
|  | recipe = recipe, | 
|  | cipd_package = "flutter/recipe_bundles/flutter.googlesource.com/recipes", | 
|  | cipd_version = "refs/heads/main", | 
|  | use_bbagent = True, | 
|  | ) | 
|  | ci_yaml_config = ci_yaml.ci_yaml("flutter", "master") | 
|  | platform_properties = ci_yaml.platform_properties(ci_yaml_config) | 
|  | common.linux_prod_builder( | 
|  | name = "%sLinux SDK Drone" % prefix, | 
|  | recipe = "flutter/flutter_drone", | 
|  | console_view_name = None, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "linux"), | 
|  | dimensions = {"device_type": "none"}, | 
|  | os = platform_properties["linux"]["os"], | 
|  | ) | 
|  | common.mac_prod_builder( | 
|  | name = "%sMac Devicelab Test Drone" % prefix, | 
|  | recipe = "devicelab/devicelab_test_drone", | 
|  | console_view_name = None, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "mac_ios"), | 
|  | dimensions = {"device_os": "iOS-16", "cpu": "x86"}, | 
|  | os = platform_properties["mac_ios"]["os"], | 
|  | # Uploads metrics only for master/main branches, where prefix is empty. | 
|  | properties = {"upload_metrics": True} if not prefix else {}, | 
|  | ) | 
|  | common.mac_prod_builder( | 
|  | name = "%sMac SDK Drone" % prefix, | 
|  | recipe = "flutter/flutter_drone", | 
|  | console_view_name = None, | 
|  | dimensions = {"device_type": "none"}, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "mac"), | 
|  | os = platform_properties["mac"]["os"], | 
|  | ) | 
|  | common.windows_prod_builder( | 
|  | name = "%sWindows SDK Drone" % prefix, | 
|  | recipe = "flutter/flutter_drone", | 
|  | console_view_name = None, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "windows"), | 
|  | dimensions = {"device_type": "none"}, | 
|  | os = platform_properties["windows"]["os"], | 
|  | ) | 
|  |  | 
|  | def _drone_try_builders(): | 
|  | """Generate drone builders to help with subshards.""" | 
|  | list_view_name = "flutter-try" | 
|  | ci_yaml_config = ci_yaml.ci_yaml("flutter", "master") | 
|  | platform_properties = ci_yaml.platform_properties(ci_yaml_config) | 
|  | common.linux_try_builder( | 
|  | name = "Linux SDK Drone|drn", | 
|  | recipe = "flutter/flutter_drone", | 
|  | repo = repos.GIT_REMOTE["flutter"], | 
|  | list_view_name = list_view_name, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "linux"), | 
|  | dimensions = {"device_type": "none"}, | 
|  | os = platform_properties["linux"]["os"], | 
|  | ) | 
|  | common.mac_try_builder( | 
|  | name = "Mac SDK Drone|drn", | 
|  | recipe = "flutter/flutter_drone", | 
|  | repo = repos.GIT_REMOTE["flutter"], | 
|  | list_view_name = list_view_name, | 
|  | dimensions = {"device_type": "none"}, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "mac"), | 
|  | os = platform_properties["mac"]["os"], | 
|  | ) | 
|  | common.windows_try_builder( | 
|  | name = "Windows SDK Drone|drn", | 
|  | recipe = "flutter/flutter_drone", | 
|  | repo = repos.GIT_REMOTE["flutter"], | 
|  | list_view_name = list_view_name, | 
|  | caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "windows"), | 
|  | dimensions = {"device_type": "none"}, | 
|  | os = platform_properties["windows"]["os"], | 
|  | ) | 
|  |  | 
|  | flutter_config = struct(setup = _setup) |