| gcp_credentials: ENCRYPTED[ec898795b6f1b54f9cc2ab4104909f1053651f65fcab96397cfdc33dae6df5fd0fa972e29ba19f4f95125de844ab1641] |
| |
| # 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_TOOLS: "dart run ./script/tool/lib/src/main.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: |
| - flutter channel $CHANNEL |
| - flutter upgrade |
| << : *TOOL_SETUP_TEMPLATE |
| |
| 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-12.5 |
| cocoapod_install_script: sudo gem install cocoapods |
| |
| # 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 # gce vm image |
| builder_image_project: flutter-cirrus |
| cluster_name: test-cluster |
| zone: us-central1-a |
| namespace: default |
| matrix: |
| ### Platform-agnostic tasks ### |
| - name: plugin_tools_tests |
| script: |
| - cd script/tool |
| - CIRRUS_BUILD_ID=null pub run test |
| - name: publishable |
| script: |
| - ./script/tool_runner.sh version-check |
| - ./script/tool_runner.sh publish-check |
| - name: format |
| format_script: ./script/tool_runner.sh format --fail-on-change |
| pubspec_script: ./script/tool_runner.sh pubspec-check |
| license_script: |
| - dart script/tool/lib/src/main.dart license-check |
| - name: test |
| 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: |
| - ./script/tool_runner.sh analyze |
| ### Android tasks ### |
| - name: build_all_plugins_apk |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| script: |
| - ./script/build_all_plugins_app.sh apk |
| ### Web tasks ### |
| - name: build_all_plugins_web |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| script: |
| - ./script/build_all_plugins_app.sh web |
| ### Linux desktop tasks ### |
| - name: build_all_plugins_linux |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| script: |
| - flutter config --enable-linux-desktop |
| - ./script/build_all_plugins_app.sh linux |
| - name: build-linux+drive-examples |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| build_script: |
| - flutter config --enable-linux-desktop |
| - ./script/tool_runner.sh build-examples --linux |
| 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 # 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: build-apks+java-test+firebase-test-lab |
| 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[07586610af1fdfc894e5969f70ef2458341b9b7e9c3b7c4225a663b4a48732b7208a4d91c3b7d45305a6b55fa2a37fc4] |
| 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="" |
| - ./script/tool_runner.sh build-examples --apk |
| - ./script/tool_runner.sh java-test # must come after apk build |
| - 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=flame,version=29 --device model=starqlteue,version=26 |
| - else |
| - echo "This user does not have permission to run Firebase Test Lab tests." |
| - fi |
| - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt` |
| - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt` |
| ### Web tasks ### |
| - name: build-web+drive-examples |
| env: |
| # Currently missing; see https://github.com/flutter/flutter/issues/81982 |
| # and https://github.com/flutter/flutter/issues/82211 |
| PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "file_selector,image_picker_for_web,shared_preferences_web" |
| 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 |
| - 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 $PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS |
| |
| # macOS tasks. |
| task: |
| << : *MACOS_TEMPLATE |
| << : *FLUTTER_UPGRADE_TEMPLATE |
| matrix: |
| ### iOS+macOS tasks *** |
| - name: lint_darwin_plugins |
| script: |
| - ./script/tool_runner.sh podspecs |
| ### iOS tasks ### |
| - name: build_all_plugins_ipa |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| script: |
| - ./script/build_all_plugins_app.sh ios --no-codesign |
| - name: build-ipas+drive-examples |
| env: |
| PATH: $PATH:/usr/local/bin |
| # in_app_purchase_ios is currently missing tests; see https://github.com/flutter/flutter/issues/81695 |
| # ios_platform_images is currently missing tests; see https://github.com/flutter/flutter/issues/82208 |
| # sensor hangs on CI. |
| PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "in_app_purchase_ios,ios_platform_images,sensors" |
| 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-14-5 | xargs xcrun simctl boot |
| build_script: |
| - ./script/tool_runner.sh build-examples --ipa |
| xctest_script: |
| - ./script/tool_runner.sh xctest --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 `xctest`, changing the order will result ci failure. |
| - ./script/tool_runner.sh drive-examples --ios --exclude $PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS |
| ### macOS desktop tasks ### |
| - name: build_all_plugins_macos |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| script: |
| - flutter config --enable-macos-desktop |
| - ./script/build_all_plugins_app.sh macos |
| - name: build-macos+drive-examples |
| 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 --no-ipa |
| drive_script: |
| - ./script/tool_runner.sh drive-examples --macos |