| #!/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 engine repository. |
| |
| The schedulers pull commits indirectly from GoB repo |
| (https://chromium.googlesource.com/external/github.com/flutter/engine) |
| which is mirrored from https://github.com/flutter/engine. |
| |
| 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 _engine_properties(gcs_goldens_bucket = "", no_lto = False): |
| properties = { |
| "use_cas": True, |
| "gcs_goldens_bucket": gcs_goldens_bucket, |
| } |
| if no_lto: |
| properties["no_lto"] = True |
| return properties |
| |
| def _setup(): |
| """Default configurations for branches and repos.""" |
| release_triggering_policy = scheduler.greedy_batching( |
| max_batch_size = 1, |
| max_concurrent_invocations = 3, |
| ) |
| notifies = [ |
| luci.notifier( |
| name = "engine_build_failure_notification", |
| on_occurrence = ["INFRA_FAILURE", "FAILURE"], |
| failed_step_regexp = "(^build|.*test:|.*step is flaky).*", |
| notify_emails = ["flutter-engine@grotations.appspotmail.com"], |
| ), |
| ] |
| ci_yaml.generate( |
| "engine", |
| "stable", |
| release_branches.stable.version, |
| release_branches.stable.testing_ref, |
| {}, |
| _engine_properties(), |
| release_triggering_policy, |
| recipes_ref = release_branches.stable.recipes_ref, |
| ) |
| _drone_prod_builders("stable-", release_branches.stable.recipes_ref) |
| ci_yaml.generate( |
| "engine", |
| "beta", |
| release_branches.beta.version, |
| release_branches.beta.testing_ref, |
| {}, |
| _engine_properties(), |
| release_triggering_policy, |
| recipes_ref = release_branches.beta.recipes_ref, |
| ) |
| _drone_prod_builders("beta-", release_branches.beta.recipes_ref) |
| ci_yaml.generate( |
| "engine", |
| "dev", |
| release_branches.dev.version, |
| release_branches.dev.testing_ref, |
| {}, |
| _engine_properties(), |
| release_triggering_policy, |
| recipes_ref = release_branches.dev.recipes_ref, |
| ) |
| _drone_prod_builders("dev-", release_branches.dev.recipes_ref) |
| ci_yaml.generate( |
| "engine", |
| "main", |
| release_branches.main.version, |
| release_branches.main.testing_ref, |
| {}, |
| _engine_properties(), |
| notifies = notifies, |
| recipes_ref = release_branches.main.recipes_ref, |
| ) |
| _drone_prod_builders("", release_branches.dev.recipes_ref) |
| for branch_name in release_branches.fuchsia.keys(): |
| branch = release_branches.fuchsia[branch_name] |
| ci_yaml.generate( |
| "engine", |
| branch_name, |
| branch.version, |
| branch.testing_ref, |
| {}, |
| _engine_properties(), |
| release_triggering_policy, |
| recipes_ref = branch.recipes_ref, |
| ) |
| |
| _drone_staging_prod_builders() |
| _drone_try_builders() |
| |
| def _drone_prod_builders(prefix, recipes_ref): |
| """Generate drone builders to help with subshards.""" |
| recipes = ["engine_builder", "engine/web_engine_drone"] |
| for recipe in recipes: |
| luci.recipe( |
| name = "%s%s" % (prefix, recipe), |
| cipd_package = "flutter/recipe_bundles/flutter.googlesource.com/recipes", |
| cipd_version = recipes_ref, |
| use_bbagent = True, |
| ) |
| ci_yaml_config = ci_yaml.ci_yaml("engine", "main") |
| platform_properties = ci_yaml.platform_properties(ci_yaml_config) |
| common.linux_prod_builder( |
| name = "%sLinux Engine Drone" % prefix, |
| recipe = "engine_builder", |
| console_view_name = None, |
| dimensions = {"device_type": "none"}, |
| priority = 30, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "linux"), |
| os = platform_properties["linux"]["os"], |
| ) |
| common.linux_prod_builder( |
| name = "%sLinux Web Drone" % prefix, |
| recipe = "engine/web_engine_drone", |
| properties = _engine_properties(gcs_goldens_bucket = "flutter_logs"), |
| console_view_name = None, |
| dimensions = {"device_type": "none"}, |
| priority = 28, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "linux"), |
| os = platform_properties["linux"]["os"], |
| ) |
| common.mac_prod_builder( |
| name = "%sMac Engine Drone" % prefix, |
| recipe = "engine_builder", |
| console_view_name = None, |
| priority = 30, |
| dimensions = {"device_type": "none"}, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "mac"), |
| os = platform_properties["mac"]["os"], |
| ) |
| common.windows_prod_builder( |
| name = "%sWindows Engine Drone" % prefix, |
| recipe = "engine_builder", |
| console_view_name = None, |
| dimensions = {"device_type": "none"}, |
| priority = 30, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "windows"), |
| os = platform_properties["windows"]["os"], |
| ) |
| |
| def _drone_staging_prod_builders(): |
| """Generate drone builders to help with subshards.""" |
| engine_v2_builder_recipe_name = "engine_v2/builder" |
| recipes = [engine_v2_builder_recipe_name] |
| for recipe in recipes: |
| luci.recipe( |
| name = recipe, |
| cipd_package = "flutter/recipe_bundles/flutter.googlesource.com/recipes", |
| cipd_version = "refs/heads/main", |
| use_bbagent = True, |
| ) |
| list_view_name = "engine-staging" |
| ci_yaml_config = ci_yaml.ci_yaml("engine", "main") |
| platform_properties = ci_yaml.platform_properties(ci_yaml_config) |
| common.linux_prod_builder( |
| name = "Linux Staging Engine Drone|drn", |
| recipe = engine_v2_builder_recipe_name, |
| repo = repos.GIT_REMOTE["engine"], |
| bucket = "staging", |
| pool = "luci.flutter.staging", |
| console_view_name = None, |
| priority = 30, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "linux"), |
| dimensions = {"device_type": "none"}, |
| os = platform_properties["linux"]["os"], |
| ) |
| common.mac_prod_builder( |
| name = "Mac Staging Engine Drone|drn", |
| recipe = engine_v2_builder_recipe_name, |
| repo = repos.GIT_REMOTE["engine"], |
| bucket = "staging", |
| pool = "luci.flutter.staging", |
| console_view_name = None, |
| priority = 30, |
| dimensions = {"device_type": "none"}, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "mac"), |
| os = platform_properties["mac"]["os"], |
| ) |
| common.windows_prod_builder( |
| name = "Windows Staging Engine Drone|drn", |
| recipe = engine_v2_builder_recipe_name, |
| repo = repos.GIT_REMOTE["engine"], |
| bucket = "staging", |
| pool = "luci.flutter.staging", |
| console_view_name = None, |
| priority = 30, |
| caches = ci_yaml.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 = "engine-try" |
| ci_yaml_config = ci_yaml.ci_yaml("engine", "main") |
| platform_properties = ci_yaml.platform_properties(ci_yaml_config) |
| common.linux_try_builder( |
| name = "Linux Engine Drone|drn", |
| recipe = "engine_builder", |
| repo = repos.GIT_REMOTE["engine"], |
| list_view_name = list_view_name, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "linux"), |
| dimensions = {"device_type": "none"}, |
| os = platform_properties["linux"]["os"], |
| ) |
| common.linux_try_builder( |
| name = "Linux Web Drone|webdrn", |
| recipe = "engine/web_engine_drone", |
| repo = repos.GIT_REMOTE["engine"], |
| list_view_name = list_view_name, |
| properties = _engine_properties( |
| gcs_goldens_bucket = "flutter_logs", |
| no_lto = True, |
| ), |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "linux"), |
| dimensions = {"device_type": "none"}, |
| os = platform_properties["linux"]["os"], |
| ) |
| common.mac_try_builder( |
| name = "Mac Engine Drone|drn", |
| recipe = "engine_builder", |
| repo = repos.GIT_REMOTE["engine"], |
| list_view_name = list_view_name, |
| dimensions = {"device_type": "none"}, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "mac"), |
| os = platform_properties["mac"]["os"], |
| ) |
| common.windows_try_builder( |
| name = "Windows Engine Drone|drn", |
| recipe = "engine_builder", |
| repo = repos.GIT_REMOTE["engine"], |
| list_view_name = list_view_name, |
| caches = ci_yaml.swarming_caches(ci_yaml_config, None, "windows"), |
| dimensions = {"device_type": "none"}, |
| os = platform_properties["windows"]["os"], |
| ) |
| |
| engine_config = struct(setup = _setup) |