container:
  image: gcr.io/flutter-cirrus/build-flutter-image:latest

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_PR == ''
  env:
    # Name the SDK directory to include a space so that we constantly
    # test path names with spaces in them.
    CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
    PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
    ANDROID_SDK_ROOT: "/opt/android_sdk"
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
  pub_cache:
    folder: $HOME/.pub-cache
    fingerprint_script: echo $OS; grep -r --include=pubspec.yaml 'PUBSPEC CHECKSUM' "$CIRRUS_WORKING_DIR"
  flutter_pkg_cache:
    folder: bin/cache/pkg
    fingerprint_script: echo $OS; cat bin/internal/*.version
  artifacts_cache:
    folder: bin/cache/artifacts
    fingerprint_script: echo $OS; cat bin/internal/*.version
  setup_script: ./dev/bots/cirrus_setup.sh
  matrix:
    - name: docs
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_drive/**', 'packages/flutter_localizations/**', 'packages/flutter_goldens/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        SHARD: docs
        # For uploading master docs to Firebase master branch staging site
        FIREBASE_MASTER_TOKEN: ENCRYPTED[eb768d18798fdc5abfe09b224e1724c4d82831d715ccf90df2c79d618c317216cbd99493278361f6fe7948b409b603f0]
        # For uploading beta docs to Firebase public live site
        FIREBASE_PUBLIC_TOKEN: ENCRYPTED[37e8b82f167864cae9a3f4d2cf3f37dea331d9375c295327c45de524f6c588fa6f6d63e5784f10f6d43ce29689f36c92]
      docs_script: ./dev/bots/docs.sh
    - name: deploy_gallery
      depends_on:
        - docs
        - analyze
        - build_tests-linux
      env:
        SHARD: deploy_gallery
        GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE: ENCRYPTED[d9ac1462c3c556fc2f8165c9d5566a16497d8ebc38a50357f7f3abf136b7f83e1d1d76dde36fee356cb0f9ebf7a89346]
        ANDROID_GALLERY_UPLOAD_KEY: ENCRYPTED[0f2aca35f05b26add5d9edea2a7449341269a2b7e22d5c667f876996e2e8bc44ff1369431ebf73b7c5581fd95d0e5902]
      test_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # See: https://github.com/flutter/flutter/issues/24935
        # This is a temporary workaround until we figure how to properly configure
        # a UTF8 locale on Cirrus (or until the Gradle bug is fixed).
        # TODO(amirh): Set the locale to UTF8.
        - echo "$CIRRUS_CHANGE_MESSAGE" > /tmp/cirrus_change_message.txt
        - echo "$CIRRUS_COMMIT_MESSAGE" > /tmp/cirrus_commit_message.txt
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - ./dev/bots/deploy_gallery.sh
        - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt`
        - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt`
    - name: analyze
      test_script:
        - dart --enable-asserts ./dev/bots/analyze.dart
    - name: tests_widgets-linux
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
        GOLDCTL: "$CIRRUS_WORKING_DIR/depot_tools/goldctl"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: ./dev/bots/download_goldctl.sh
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tests_framework_other-linux
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
        GOLDCTL: "$CIRRUS_WORKING_DIR/depot_tools/goldctl"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: ./dev/bots/download_goldctl.sh
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tests_extras-linux
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**', 'dev/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: extras
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    # all of the tests except the ones in test/integration and test/commands/create_test for packages/flutter_tools
    - name: tool_tests-linux
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: tool
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tool_tests_create-linux
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: create
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    # all of the tests in test/integration for packages/flutter_tools
    - name: tool_tests_integration-linux
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: integration
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tool_coverage-linux
      skip: "!changesInclude('packages/flutter_tools/**/*.dart') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        CODECOV_TOKEN: ENCRYPTED[7c76a7f8c9264f3b7f3fd63fcf186f93c62c4dfe43ec288861c2f506d456681032b89efe7b7a139c82156350ca2c752c]
        SHARD: tool_coverage
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
        - bash <(curl -s https://codecov.io/bash) -c -s ./packages/flutter_tools/coverage/ -f '*.lcov.info' -F flutter_tool
      container:
        cpu: 8
        memory: 24G
    - name: web_tests-linux
      allow_failures: true
      env:
        SHARD: web_tests
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: build_tests-linux
      env:
        SHARD: build_tests
    - name: integration_tests-linux
      env:
        SHARD: integration_tests
      test_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # See: https://github.com/flutter/flutter/issues/24935
        # This is a temporary workaround until we figure how to properly configure
        # a UTF8 locale on Cirrus (or until the Gradle bug is fixed).
        # TODO(amirh): Set the locale to UTF8.
        - echo "$CIRRUS_CHANGE_MESSAGE" > /tmp/cirrus_change_message.txt
        - echo "$CIRRUS_COMMIT_MESSAGE" > /tmp/cirrus_commit_message.txt
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - dart --enable-asserts ./dev/bots/test.dart
        - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt`
        - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt`
      container:
        cpu: 4
        memory: 12G
    - name: integration_tests_gradle1-linux
      env:
        SHARD: integration_tests
        SUBSHARD: gradle1
      test_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # See: https://github.com/flutter/flutter/issues/24935
        # This is a temporary workaround until we figure how to properly configure
        # a UTF8 locale on Cirrus (or until the Gradle bug is fixed).
        # TODO(amirh): Set the locale to UTF8.
        - echo "$CIRRUS_CHANGE_MESSAGE" > /tmp/cirrus_change_message.txt
        - echo "$CIRRUS_COMMIT_MESSAGE" > /tmp/cirrus_commit_message.txt
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - dart --enable-asserts ./dev/bots/test.dart
        - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt`
        - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt`
      container:
        cpu: 4
        memory: 12G
    - name: integration_tests_gradle2-linux
      env:
        SHARD: integration_tests
        SUBSHARD: gradle2
      test_script:
        # Unsetting CIRRUS_CHANGE_MESSAGE and CIRRUS_COMMIT_MESSAGE as they
        # might include non-ASCII characters which makes Gradle crash.
        # See: https://github.com/flutter/flutter/issues/24935
        # This is a temporary workaround until we figure how to properly configure
        # a UTF8 locale on Cirrus (or until the Gradle bug is fixed).
        # TODO(amirh): Set the locale to UTF8.
        - echo "$CIRRUS_CHANGE_MESSAGE" > /tmp/cirrus_change_message.txt
        - echo "$CIRRUS_COMMIT_MESSAGE" > /tmp/cirrus_commit_message.txt
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - dart --enable-asserts ./dev/bots/test.dart
        - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt`
        - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt`
      container:
        cpu: 4
        memory: 12G
    - name: release_smoke_tests
      env:
        CLOUDSDK_CORE_DISABLE_PROMPTS: 1
        GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[1c140257edc48f5578fa5a0e5038b84c8e53270c405efa5a8e35ea303a4e0d135853989f448f72136206de854d17fbec]
      test_script:
        - echo "$CIRRUS_CHANGE_MESSAGE" > /tmp/cirrus_change_message.txt
        - echo "$CIRRUS_COMMIT_MESSAGE" > /tmp/cirrus_commit_message.txt
        - export CIRRUS_CHANGE_MESSAGE=""
        - export CIRRUS_COMMIT_MESSAGE=""
        - ./dev/bots/firebase_testlab.sh
        - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt`
        - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt`
    - name: customer_testing-linux
      script:
        - rm -rf bin/cache/pkg/tests
        - git clone https://github.com/flutter/tests.git bin/cache/pkg/tests
        - dart --enable-asserts dev/customer_testing/run_tests.dart --skip-on-fetch-failure --skip-template bin/cache/pkg/tests/registry/*.test

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_PR == ''
  windows_container:
    image: cirrusci/android-sdk:28-windowsservercore-2019
    os_version: 2019
    cpu: 4
  env:
    CIRRUS_WORKING_DIR: "C:\\Windows\\Temp\\flutter sdk"
    PATH: "$CIRRUS_WORKING_DIR/bin;$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin;$PATH"
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
  pub_cache:
    folder: $APPDATA\Pub\Cache
    fingerprint_script:
      - ps:  $Env:OS; Get-ChildItem -Path "$Env:CIRRUS_WORKING_DIR" pubspec.yaml -Recurse | Select-String -Pattern "PUBSPEC CHECKSUM" -SimpleMatch
  flutter_pkg_cache:
    folder: bin\cache\pkg
    fingerprint_script: echo %OS% & type bin\internal\*.version
  artifacts_cache:
    folder: bin\cache\artifacts
    fingerprint_script: echo %OS% & type bin\internal\engine.version
  setup_script:
    - flutter config --no-analytics
    - flutter doctor -v
    - flutter update-packages
    - git fetch origin master
  test_all_script:
    - dart --enable-asserts dev\bots\test.dart
  matrix:
    # all of the tests except test/integration and test/commands/create_test for packages/flutter_tools
    - name: tool_tests-windows
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: tool
        SHARD_INDEX: 1
    # all of the tests in test/commands/create_test
    - name: tool_tests_create-windows
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: create
    # all of the tests in test/integration for packages/flutter_tools
    - name: tool_tests_integration-windows
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: integration

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_PR == ''
  windows_container:
    image: cirrusci/android-sdk:28-windowsservercore-2019
    os_version: 2019
    cpu: 4
  env:
    CIRRUS_WORKING_DIR: "C:\\Windows\\Temp\\flutter sdk"
    PATH: "$CIRRUS_WORKING_DIR/bin;$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin;$PATH"
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
  pub_cache:
    folder: $APPDATA\Pub\Cache
    fingerprint_script:
      - ps:  $Env:OS; Get-ChildItem -Path "$Env:CIRRUS_WORKING_DIR" pubspec.yaml -Recurse | Select-String -Pattern "PUBSPEC CHECKSUM" -SimpleMatch
  flutter_pkg_cache:
    folder: bin\cache\pkg
    fingerprint_script: echo %OS% & type bin\internal\*.version
  artifacts_cache:
    folder: bin\cache\artifacts
    fingerprint_script: echo %OS% & type bin\internal\*.version
  setup_script:
    - flutter config --no-analytics
    - flutter doctor -v
    - flutter update-packages
    - git fetch origin master
  matrix:
    - name: tests_widgets-windows
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
        GOLDCTL: "C:\\Windows\\Temp\\depot_tools\\goldctl.exe"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: powershell dev\bots\download_goldctl.ps1
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: tests_framework_other-windows
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
        GOLDCTL: "C:\\Windows\\Temp\\depot_tools\\goldctl.exe"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: powershell dev\bots\download_goldctl.ps1
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: tests_extras-windows
      skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**', 'dev/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: extras
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: build_tests-windows
      env:
        SHARD: build_tests
      container:
        cpu: 4
        memory: 12G
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: integration_tests-windows
      env:
        SHARD: integration_tests
      container:
        cpu: 4
        memory: 12G
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: customer_testing-windows
      test_script:
        - CMD /S /C "IF EXIST "bin\cache\pkg\tests\" RMDIR /S /Q bin\cache\pkg\tests"
        - git clone https://github.com/flutter/tests.git bin\cache\pkg\tests
        - dart --enable-asserts dev\customer_testing\run_tests.dart --skip-on-fetch-failure --skip-template bin/cache/pkg/tests/registry/*.test
    - name: integration_tests_gradle1-windows
      env:
        SHARD: integration_tests
        SUBSHARD: gradle1
      test_script:
        - dart --enable-asserts dev\bots\test.dart
      container:
        cpu: 4
        memory: 12G
    - name: integration_tests_gradle2-windows
      env:
        SHARD: integration_tests
        SUBSHARD: gradle2
      test_script:
        - dart --enable-asserts dev\bots\test.dart
      container:
        cpu: 4
        memory: 12G

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
  name: deploy_gallery-macos
  depends_on:
    - analyze
  env:
    # Name the SDK directory to include a space so that we constantly
    # test path names with spaces in them.
    CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
    SHARD: deploy_gallery
    # Apple Fastlane password.
    FASTLANE_PASSWORD: ENCRYPTED[4b1f0b8d52874e9de965acd46c79743f3b81f3a513614179b9be7cf53dc8258753e257bdadb11a298ee455259df21865]
    # Private repo for publishing certificates.
    PUBLISHING_MATCH_CERTIFICATE_REPO: ENCRYPTED[3c0e78877d933fc80107aa6f3790fd1cf927250b852d6cb53202be696b4903ed8ca839b809626aaf18050bf7e436fab7]
    PUBLISHING_MATCH_REPO_TOKEN: ENCRYPTED[3d1230b744c6ed6c788a91bec741b769401dbcd426b18f9af8080bfeefdfc21913ca4047980c5b5b7ce823f12e7b6b19]
    # Apple Certificates Match Passphrase
    MATCH_PASSWORD: ENCRYPTED[db07f252234397090e3ec59152d9ec1831f5ecd0ef97d247b1dca757bbb9ef9b7c832a39bce2caf1949ccdf097e59a73]
  osx_instance:
    image: mojave-xcode-10.1
  # occasionally the clock on these machines is out of sync
  # with the actual time - this should help to verify
  print_date_script:
    - date
  install_cocoapods_script:
    - sudo gem install cocoapods --no-document
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD
  setup_script:
    - bin/flutter config --no-analytics
    - bin/flutter update-packages
  test_all_script:
    - ./dev/bots/deploy_gallery.sh

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
  osx_instance:
    image: mojave-xcode-10.1
  depends_on:
    - analyze
  env:
    CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
    COCOAPODS_DISABLE_STATS: true
  print_date_script:
    - date
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
  setup_script:
    - bin/flutter config --no-analytics
    - bin/flutter doctor -v
    - bin/flutter update-packages
  test_all_script:
    - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
    - bin/cache/dart-sdk/bin/dart --enable-asserts dev/bots/test.dart
  matrix:
    # all of the tests except test/integration and test/commands/create_test for packages/flutter_tools
    - name: tool_tests-macos
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: tool
        SHARD_INDEX: 1
    # all of the tests in test/commands/create_test
    - name: tool_tests_create-macos
      skip: "!changesInclude('packages/flutter_tools/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master'"
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: create
    # all of the tests in test/integration for packages/flutter_tools
    - name: tool_tests_integration-macos
      only_if: $CIRRUS_BRANCH == 'master'
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tool_tests
        SUBSHARD: integration

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
  osx_instance:
    image: mojave-xcode-10.2
  depends_on:
    - analyze
  env:
    CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
    COCOAPODS_DISABLE_STATS: true
    PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
  # occasionally the clock on these machines is out of sync
  # with the actual time - this should help to verify
  print_date_script:
    - date
  install_cocoapods_script:
    - sudo gem install cocoapods --no-document
  git_fetch_script:
    - git clean -xfd
    - git fetch origin
    - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work
  setup_script:
    - bin/flutter config --no-analytics
    - bin/flutter doctor -v
    - bin/flutter update-packages
  matrix:
    - name: tests_widgets-macos
      only_if: $CIRRUS_BRANCH == 'master'
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
        GOLDCTL: "$CIRRUS_WORKING_DIR/depot_tools/goldctl"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: ./dev/bots/download_goldctl.sh
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
      on_failure:
        print_failure_time_script: date
    - name: tests_framework_other-macos
      only_if: $CIRRUS_BRANCH == 'master'
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
        GOLDCTL: "$CIRRUS_WORKING_DIR/depot_tools/goldctl"
        GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
      goldctl_script: ./dev/bots/download_goldctl.sh
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
      on_failure:
        print_failure_time_script: date
    - name: integration_tests-macos
      only_if: $CIRRUS_BRANCH == 'master'
      env:
        SHARD: integration_tests
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
    - name: add2app-macos
      env:
        SHARD: add2app_test
      setup_xcpretty_script:
        - sudo gem install xcpretty
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
    - name: customer_testing-macos
      test_script:
        - rm -rf bin/cache/pkg/tests
        - git clone https://github.com/flutter/tests.git bin/cache/pkg/tests
        - dart --enable-asserts dev/customer_testing/run_tests.dart --skip-on-fetch-failure --skip-template bin/cache/pkg/tests/registry/*.test

docker_builder:
  # Only build a new docker image when we tag a release (for dev, beta, or release.)
  only_if: $CIRRUS_TAG != ''
  env:
    GCLOUD_CREDENTIALS: ENCRYPTED[f7c098d4dd7f5ee1bfee0bb7e944cce72efbe10e97ad6440ae72de4de6a1c24d23f421a2619c668e94377fb64b0bb3e6]
  depends_on:
    - docs
    - analyze
    - tests_widgets-linux
    - tests_framework_other-linux
    - tests_extras-linux
    - tool_tests-linux
    - tool_tests_create-linux
    - tool_tests_integration-linux
    - build_tests-linux
    - integration_tests-linux
    - integration_tests_gradle-linux
  build_script: "$CIRRUS_WORKING_DIR/dev/ci/docker_linux/docker_build.sh"
  login_script: "$CIRRUS_WORKING_DIR/dev/ci/docker_linux/docker_login.sh"
  push_script: "$CIRRUS_WORKING_DIR/dev/ci/docker_linux/docker_push.sh"