gcp_credentials: ENCRYPTED[!cc769765170bebc37e0556e2da5915ca64ee37f4ec8c966ec147e2f59578b476c99e457eafce4e2f8b1a4e305f7096b8!]

# 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
        # version check overrides.
        # For post-submit, ignore platform version breaking version changes and
        # missing version/CHANGELOG detection; 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 --check-for-missing-changes --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"
      analyze_tool_script:
        - cd script/tool
        - dart analyze --fatal-infos
      analyze_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
      pathified_analyze_script:
        # Re-run analysis with path-based dependencies to ensure that publishing
        # the changes won't break analysis of other packages in the respository
        # that depend on it.
        - ./script/tool_runner.sh make-deps-path-based --target-dependencies-with-non-breaking-updates
        # This uses --run-on-dirty-packages rather than --packages-for-branch
        # since only the packages changed by 'make-deps-path-based' need to be
        # checked.
        - dart $PLUGIN_TOOL analyze --run-on-dirty-packages --log-timing --custom-analysis=script/configs/custom_analysis.yaml
        # Restore the tree to a clean state, to avoid accidental issues if
        # other script steps are added to this task.
        - git checkout .
    ### 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 5"
          PLUGIN_SHARDING: "--shardIndex 1 --shardCount 5"
          PLUGIN_SHARDING: "--shardIndex 2 --shardCount 5"
          PLUGIN_SHARDING: "--shardIndex 3 --shardCount 5"
          PLUGIN_SHARDING: "--shardIndex 4 --shardCount 5"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
        MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550]
        GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[de02374f8d2d14d50792c6b521af2dfb86cbb522efed104f905002e4332546104d387d2bb8710956b729b4bd6533bba0]
      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
    - name: android-build_all_plugins
      env:
        BUILD_ALL_ARGS: "apk"
        matrix:
          CHANNEL: "master"
          CHANNEL: "stable"
      << : *BUILD_ALL_PLUGINS_APP_TEMPLATE
    ### Web tasks ###
    - name: web-platform_tests
      env:
        matrix:
          PLUGIN_SHARDING: "--shardIndex 0 --shardCount 2"
          PLUGIN_SHARDING: "--shardIndex 1 --shardCount 2"
        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"
      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
      drive_script:
        - ./script/tool_runner.sh drive-examples --macos
