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/engine.version
  artifacts_cache:
    folder: bin/cache/artifacts
    fingerprint_script: echo $OS; cat bin/internal/engine.version
  setup_script: ./dev/bots/cirrus_setup.sh
  matrix:
    - name: docs
      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
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tests_framework_other-linux
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
      test_script:
        - dart --enable-asserts ./dev/bots/test.dart
      container:
        cpu: 4
        memory: 12G
    - name: tests_extras-linux
      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
      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
      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
      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
    # TODO(jonahwilliams): re-enabled once we've determined causes for flakiness
    # - 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\engine.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
      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
      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
      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\engine.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
  matrix:
    - name: tests_widgets-windows
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: tests_framework_other-windows
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
      test_all_script:
        - dart --enable-asserts dev\bots\test.dart
    - name: tests_extras-windows
      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

task:
  use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
  name: deploy_gallery-macos
  pub_cache:
    folder: ~/.pub-cache
  depends_on:
    - analyze
    - build_tests-macos
  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
  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
  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/engine.version
  artifacts_cache:
    folder: bin/cache/artifacts
    fingerprint_script: echo $OS; cat bin/internal/engine.version
  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
      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
      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
      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.1
  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
  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/engine.version
  artifacts_cache:
    folder: bin/cache/artifacts
    fingerprint_script: echo $OS; cat bin/internal/engine.version
  setup_script:
    - bin/flutter config --no-analytics
    - bin/flutter doctor -v
    - bin/flutter update-packages
  matrix:
    - name: tests_widgets-macos
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: widgets
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
    - name: tests_framework_other-macos
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: framework_other
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
    - name: tests_extras-macos
      env:
        GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
        SHARD: tests
        SUBSHARD: extras
      test_all_script:
        - ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
        - dart --enable-asserts dev/bots/test.dart
    - name: build_tests-macos
      env:
        SHARD: build_tests # we should also enable integration_tests at some point, but it's too flaky right now
        COCOAPODS_DISABLE_STATS: true
        FLUTTER_FRAMEWORK_DIR: "/tmp/flutter sdk/bin/cache/artifacts/engine/ios/"
      osx_instance:
        image: mojave-flutter
      remove_preinstalled_flutter_script: rm -rf $FLUTTER_HOME
      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
      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"
