# Describes the targets run in continuous integration environment.
#
# Flutter infra uses this file to generate a checklist of tasks to be performed
# for every commit.
#
# More information at:
#  * https://github.com/flutter/cocoon/blob/main/CI_YAML.md
enabled_branches:
  - main
  - master

platform_properties:
  linux:
    properties:
      caches: >-
        [
        ]
      dependencies: >
        [
          {"dependency": "curl"}
        ]
      device_type: none
      os: Linux
  windows:
    properties:
      caches: >-
        [
          {"name": "vsbuild", "path": "vsbuild"},
          {"name": "pub_cache", "path": ".pub-cache"}
        ]
      dependencies: >
        [
          {"dependency": "certs"}
        ]
      device_type: none
      os: Windows

targets:
  - name: Windows win32-platform_tests master
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: windows_build_and_platform_tests.yaml
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows win32-platform_tests main
    bringup: true
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: windows_build_and_platform_tests.yaml
      channel: main
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows win32-platform_tests stable
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: windows_build_and_platform_tests.yaml
      channel: stable
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows windows-build_all_plugins master
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: build_all_plugins.yaml
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows windows-build_all_plugins main
    bringup: true
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: build_all_plugins.yaml
      channel: main
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows windows-build_all_plugins stable
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: build_all_plugins.yaml
      channel: stable
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows uwp-platform_tests master
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: uwp_build_and_platform_tests.yaml
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows uwp-platform_tests main
    bringup: true
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: uwp_build_and_platform_tests.yaml
      channel: main
      dependencies: >
        [
          {"dependency": "vs_build"}
        ]
    scheduler: luci

  - name: Windows plugin_tools_tests
    recipe: plugins/plugins
    timeout: 30
    properties:
      add_recipes_cq: "true"
      target_file: plugin_tools_tests.yaml
    scheduler: luci

  - name: Linux ci_yaml plugins roller
    recipe: infra/ci_yaml
    timeout: 30
    scheduler: luci
    runIf:
      - .ci.yaml
