gcp_credentials: ENCRYPTED[!48cff44dd32e9cc412d4d381c7fe68d373ca04cf2639f8192d21cb1a9ab5e21129651423a1cf88f3fd7fe2125c1cabd9!]

# Don't run on release tags since it creates O(n^2) tasks where n is the
# number of plugins
only_if: $CIRRUS_TAG == ''
env:
  CHANNEL: "master" # Default to master when not explicitly set by a task.
  PLUGIN_TOOL: "./script/tool/bin/flutter_plugin_tools.dart"

tool_setup_template: &TOOL_SETUP_TEMPLATE
  tool_setup_script:
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
    - cd script/tool
    - dart pub get

flutter_upgrade_template: &FLUTTER_UPGRADE_TEMPLATE
  upgrade_flutter_script:
    # Ensure that the repository has all the branches.
    - cd $FLUTTER_HOME
    - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
    - git fetch origin
    # Switch to the requested branch.
    - git checkout $CHANNEL
    # Reset to upstream branch, rather than using pull, since the base image
    # can sometimes be in a state where it has diverged from upstream (!).
    - git reset --hard @{u}
    # Run doctor to allow auditing of what version of Flutter the run is using.
    - flutter doctor -v
  << : *TOOL_SETUP_TEMPLATE

build_all_plugins_app_template: &BUILD_ALL_PLUGINS_APP_TEMPLATE
  create_all_plugins_app_script:
    - dart $PLUGIN_TOOL all-plugins-app --output-dir=. --exclude script/configs/exclude_all_plugins_app.yaml
  build_all_plugins_debug_script:
    - cd all_plugins
    - if [[ "$BUILD_ALL_ARGS" == "web" ]]; then
    -   echo "Skipping; web does not support debug builds"
    - else
    -   flutter build $BUILD_ALL_ARGS --debug
    - fi
  build_all_plugins_release_script:
    - cd all_plugins
    - flutter build $BUILD_ALL_ARGS --release

macos_template: &MACOS_TEMPLATE
  # Only one macOS task can run in parallel without credits, so use them for
  # PRs on macOS.
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
  osx_instance:
    image: big-sur-xcode-13

# Light-workload Linux tasks.
# These use default machines, with fewer CPUs, to reduce pressure on the
# concurrency limits.
task:
  << : *FLUTTER_UPGRADE_TEMPLATE
  gke_container:
    dockerfile: .ci/Dockerfile
    builder_image_name: docker-builder-linux # gce vm image
    builder_image_project: flutter-cirrus
    cluster_name: test-cluster
    zone: us-central1-a
    namespace: default
  matrix:
    ### Platform-agnostic tasks ###
    - name: Linux plugin_tools_tests
      script:
        - cd script/tool
        - dart pub run test
    - name: publishable
      env:
        # TODO (mvanbeusekom): Temporary override to "stable" because of failure on "master".
        # Remove override once https://github.com/dart-lang/pub/issues/3152 is resolved.
        CHANNEL: stable
        CHANGE_DESC: "$TMPDIR/change-description.txt"
      version_check_script:
        # For pre-submit, pass the PR description to the script to allow for
        # platform version breaking version change justifications.
        # For post-submit, ignore platform version breaking version changes.
        # The PR description isn't reliably part of the commit message, so using
        # the same flags as for presubmit would likely result in false-positive
        # post-submit failures.
        - if [[ $CIRRUS_PR == "" ]]; then
        -   ./script/tool_runner.sh version-check --ignore-platform-interface-breaks
        - else
        -   echo "$CIRRUS_CHANGE_MESSAGE" > "$CHANGE_DESC"
        -   ./script/tool_runner.sh version-check --change-description-file="$CHANGE_DESC"
        - fi
      publish_check_script: ./script/tool_runner.sh publish-check
    - name: format
      always:
        format_script: ./script/tool_runner.sh format --fail-on-change
        pubspec_script: ./script/tool_runner.sh pubspec-check
        license_script: dart $PLUGIN_TOOL license-check
    - name: federated_safety
      # This check is only meaningful for PRs, as it validates changes
      # rather than state.
      only_if: $CIRRUS_PR != ""
      script: ./script/tool_runner.sh federation-safety-check
    - name: dart_unit_tests
      env:
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      test_script:
        - ./script/tool_runner.sh test
    - name: analyze
      env:
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      tool_script:
        - cd script/tool
        - dart analyze --fatal-infos
      script:
        # DO NOT change the custom-analysis argument here without changing the Dart repo.
        # See the comment in script/configs/custom_analysis.yaml for details.
        - ./script/tool_runner.sh analyze --custom-analysis=script/configs/custom_analysis.yaml
    ### Android tasks ###
    - name: android-build_all_plugins
      env:
        BUILD_ALL_ARGS: "apk"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    ### Web tasks ###
    - name: web-build_all_plugins
      env:
        BUILD_ALL_ARGS: "web"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    ### Linux desktop tasks ###
    - name: linux-build_all_plugins
      env:
        BUILD_ALL_ARGS: "linux"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      setup_script:
        - flutter config --enable-linux-desktop
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    - name: linux-platform_tests
      env:
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      build_script:
        - flutter config --enable-linux-desktop
        - ./script/tool_runner.sh build-examples --linux
      native_test_script:
        - ./script/tool_runner.sh native-test --linux --no-integration
      drive_script:
        - xvfb-run ./script/tool_runner.sh drive-examples --linux

# Heavy-workload Linux tasks.
# These use machines with more CPUs and memory, so will reduce parallelization
# for non-credit runs.
task:
  << : *FLUTTER_UPGRADE_TEMPLATE
  gke_container:
    dockerfile: .ci/Dockerfile
    builder_image_name: docker-builder-linux # gce vm image
    builder_image_project: flutter-cirrus
    cluster_name: test-cluster
    zone: us-central1-a
    namespace: default
    cpu: 4
    memory: 12G
  matrix:
    ### Android tasks ###
    - name: android-platform_tests
      env:
        matrix:
          PLUGIN_SHARDING: "--shardIndex 0 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 1 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 2 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 3 --shardCount 4"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
        MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550]
        GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[!c9446a7b11d5520c2ebce3c64ccc82fe6d146272cb06a4a4590e22c389f33153f951347a25422522df1a81fe2f085e9a!]
      build_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # TODO(stuartmorgan): See https://github.com/flutter/flutter/issues/24935
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - ./script/tool_runner.sh build-examples --apk
      lint_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # TODO(stuartmorgan): See https://github.com/flutter/flutter/issues/24935
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - ./script/tool_runner.sh lint-android # must come after build-examples
      native_unit_test_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # TODO(stuartmorgan): See https://github.com/flutter/flutter/issues/24935
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        # Native integration tests are handled by firebase-test-lab below, so
        # only run unit tests.
        # Must come after build-examples.
        - ./script/tool_runner.sh native-test --android --no-integration --exclude script/configs/exclude_native_unit_android.yaml
      firebase_test_lab_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # TODO(stuartmorgan): See https://github.com/flutter/flutter/issues/24935
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - if [[ -n "$GCLOUD_FIREBASE_TESTLAB_KEY" ]]; then
        -   echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
        -   ./script/tool_runner.sh firebase-test-lab --device model=redfin,version=30 --device model=starqlteue,version=26 --exclude=script/configs/exclude_integration_android.yaml
        - else
        -   echo "This user does not have permission to run Firebase Test Lab tests."
        - fi
      # Upload the full lint results to Cirrus to display in the results UI.
      always:
        android-lint_artifacts:
          path: "**/reports/lint-results-debug.xml"
          type: text/xml
          format: android-lint
    ### Web tasks ###
    - name: web-platform_tests
      env:
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      install_script:
        - git clone https://github.com/flutter/web_installers.git
        - cd web_installers/packages/web_drivers/
        - dart pub get
      chromedriver_background_script:
        - cd web_installers/packages/web_drivers/
        - dart lib/web_driver_installer.dart chromedriver --install-only
        - ./chromedriver/chromedriver --port=4444
      build_script:
        - ./script/tool_runner.sh build-examples --web
      drive_script:
        - ./script/tool_runner.sh drive-examples --web --exclude=script/configs/exclude_integration_web.yaml

# macOS tasks.
task:
  << : *MACOS_TEMPLATE
  << : *FLUTTER_UPGRADE_TEMPLATE
  matrix:
    ### iOS+macOS tasks ***
    - name: darwin-lint_podspecs
      script:
        - ./script/tool_runner.sh podspecs
    ### iOS tasks ###
    - name: ios-build_all_plugins
      env:
        BUILD_ALL_ARGS: "ios --no-codesign"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    - name: ios-platform_tests
      env:
        PATH: $PATH:/usr/local/bin
        matrix:
          PLUGIN_SHARDING: "--shardIndex 0 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 1 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 2 --shardCount 4"
          PLUGIN_SHARDING: "--shardIndex 3 --shardCount 4"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
        SIMCTL_CHILD_MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550]
      create_simulator_script:
        - xcrun simctl list
        - xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-11 com.apple.CoreSimulator.SimRuntime.iOS-15-0 | xargs xcrun simctl boot
      build_script:
        - ./script/tool_runner.sh build-examples --ios
      xcode_analyze_script:
        - ./script/tool_runner.sh xcode-analyze --ios
      native_test_script:
        - ./script/tool_runner.sh native-test --ios --ios-destination "platform=iOS Simulator,name=iPhone 11,OS=latest" --exclude=script/configs/exclude_native_ios.yaml
      drive_script:
        # `drive-examples` contains integration tests, which changes the UI of the application.
        # This UI change sometimes affects `xctest`.
        # So we run `drive-examples` after `native-test`; changing the order will result ci failure.
        - ./script/tool_runner.sh drive-examples --ios --exclude=script/configs/exclude_integration_ios.yaml
    ### macOS desktop tasks ###
    - name: macos-build_all_plugins
      env:
        BUILD_ALL_ARGS: "macos"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      setup_script:
        - flutter config --enable-macos-desktop
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    - name: macos-platform_tests
      env:
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
        PATH: $PATH:/usr/local/bin
      build_script:
        - flutter config --enable-macos-desktop
        - ./script/tool_runner.sh build-examples --macos
      xcode_analyze_script:
        - ./script/tool_runner.sh xcode-analyze --macos
      native_test_script:
        - ./script/tool_runner.sh native-test --macos --exclude=script/configs/exclude_native_macos.yaml
      drive_script:
        - ./script/tool_runner.sh drive-examples --macos
