#!/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 = ""):
    properties = {
        "use_cas": True,
        "gcs_goldens_bucket": gcs_goldens_bucket,
    }
    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:).*",
            notify_emails = ["flutter-engine@grotations.appspotmail.com"],
            template = luci.notifier_template(
                name = "test_build_failure",
                body = io.read_file("luci-notify/email-templates/test_build_failure.template"),
            ),
        ),
        luci.notifier(
            name = "engine_build_flake_notification",
            on_occurrence = ["SUCCESS"],
            failed_step_regexp = "(.*test:).*",
            notify_emails = ["flutter-engine@grotations.appspotmail.com"],
            template = luci.notifier_template(
                name = "test_flake",
                body = io.read_file("luci-notify/email-templates/test_flake.template"),
            ),
        ),
    ]
    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.main)
    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_v2_builders()
    _drone_try_builders()

def _drone_prod_builders(prefix, branch):
    """Generate drone builders to help with subshards."""
    recipes = ["engine/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 = branch.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/engine_builder",
        console_view_name = None,
        priority = 30,
        caches = _caches(platform_properties, "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,
        priority = 28,
        caches = _caches(platform_properties, "linux"),
        os = platform_properties["linux"]["os"],
    )
    common.mac_prod_builder(
        name = "%sMac Engine Drone" % prefix,
        recipe = "engine/engine_builder",
        console_view_name = None,
        priority = 30,
        caches = _caches(platform_properties, "mac"),
        os = platform_properties["mac"]["os"],
    )
    common.windows_prod_builder(
        name = "%sWindows Engine Drone" % prefix,
        recipe = "engine/engine_builder",
        console_view_name = None,
        priority = 30,
        caches = _caches(platform_properties, "windows"),
        os = platform_properties["windows"]["os"],
    )

def _caches(platform_properties, platform, enforce_xcode_cache = False):
    properties = {k: v for k, v in platform_properties[platform].items()}
    osx_sdk = properties.get("$flutter/osx_sdk", {})
    dependencies = {}
    if "dependencies" in properties:
        dependencies = properties["dependencies"]
    swarming_caches = ci_yaml.swarming_caches("engine", "main", dependencies, osx_sdk)
    if enforce_xcode_cache:
        swarming_caches.append(swarming.cache(name = "flutter_xcode", path = "osx_sdk"))
    return swarming_caches

def _drone_v2_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,
        )
    env_to_bucket = {"Staging": "staging", "Production": "prod"}
    ci_yaml_config = ci_yaml.ci_yaml("engine", "main")
    platform_properties = ci_yaml.platform_properties(ci_yaml_config)
    for environment in ("Staging", "Production"):
        common.linux_prod_builder(
            name = "Linux %s Engine Drone|drn" % environment,
            recipe = engine_v2_builder_recipe_name,
            repo = repos.GIT_REMOTE["engine"],
            bucket = env_to_bucket.get(environment),
            pool = "luci.flutter.%s" % env_to_bucket.get(environment),
            console_view_name = None,
            priority = 30,
            caches = _caches(platform_properties, "linux", enforce_xcode_cache = True),
            os = platform_properties["linux"]["os"],
        )
        common.mac_prod_builder(
            name = "Mac %s Engine Drone|drn" % environment,
            recipe = engine_v2_builder_recipe_name,
            repo = repos.GIT_REMOTE["engine"],
            bucket = env_to_bucket.get(environment),
            pool = "luci.flutter.%s" % env_to_bucket.get(environment),
            console_view_name = None,
            priority = 30,
            caches = _caches(platform_properties, "mac"),
            os = platform_properties["mac"]["os"],
        )
        common.windows_prod_builder(
            name = "Windows %s Engine Drone|drn" % environment,
            recipe = engine_v2_builder_recipe_name,
            repo = repos.GIT_REMOTE["engine"],
            bucket = env_to_bucket.get(environment),
            pool = "luci.flutter.%s" % env_to_bucket.get(environment),
            console_view_name = None,
            priority = 30,
            caches = _caches(platform_properties, "windows"),
            os = platform_properties["windows"]["os"],
        )

    # Temporarily add a stagigng builder for legacy builders.
    # TODO(godofredoc): https://github.com/flutter/flutter/issues/125924
    common.linux_prod_builder(
        name = "Linux Engine Drone|drn",
        recipe = "engine/engine_builder",
        repo = repos.GIT_REMOTE["engine"],
        bucket = env_to_bucket.get("Staging"),
        pool = "luci.flutter.staging",
        console_view_name = None,
        priority = 30,
        caches = _caches(platform_properties, "linux", enforce_xcode_cache = True),
        os = platform_properties["linux"]["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/engine_builder",
        repo = repos.GIT_REMOTE["engine"],
        list_view_name = list_view_name,
        caches = _caches(platform_properties, "linux"),
        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",
        ),
        caches = _caches(platform_properties, "linux"),
        os = platform_properties["linux"]["os"],
    )
    common.mac_try_builder(
        name = "Mac Engine Drone|drn",
        recipe = "engine/engine_builder",
        repo = repos.GIT_REMOTE["engine"],
        list_view_name = list_view_name,
        caches = _caches(platform_properties, "mac"),
        os = platform_properties["mac"]["os"],
    )
    common.windows_try_builder(
        name = "Windows Engine Drone|drn",
        recipe = "engine/engine_builder",
        repo = repos.GIT_REMOTE["engine"],
        list_view_name = list_view_name,
        caches = _caches(platform_properties, "windows"),
        os = platform_properties["windows"]["os"],
    )

engine_config = struct(setup = _setup)
