| gcp_credentials: ENCRYPTED[!f1177d1ddb5330ffaa9ea11c9c9e8e0c542185e895c36071f18cec923dd31c50ece6d18da89c2f6f1cd2d1a98d0c2eea!] |
| |
| # Run on PRs and main branch post submit only. Don't run tests when tagging. |
| only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'main') |
| env: |
| CHANNEL: "master" # Default to master when not explicitly set by a task. |
| |
| install_chrome_linux_template: &INSTALL_CHROME_LINUX |
| env: |
| CHROME_NO_SANDBOX: true |
| CHROME_DOWNLOAD_DIR: /tmp/chromium |
| CHROME_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chrome-linux/chrome |
| CHROMEDRIVER_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chromedriver/chromedriver |
| PATH: $PATH:$CHROME_DOWNLOAD_DIR/chrome-linux |
| install_chromium_script: |
| # Install a pinned version of Chromium and its corresponding ChromeDriver. |
| # Setting CHROME_EXECUTABLE above causes this version to be used for tests. |
| - ./script/install_chromium.sh "$CHROME_DIR" |
| |
| tool_setup_template: &TOOL_SETUP_TEMPLATE |
| tool_setup_script: |
| - .ci/scripts/prepare_tool.sh |
| |
| 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' |
| macos_instance: |
| image: ghcr.io/cirruslabs/macos-monterey-xcode:13.4.1 |
| |
| flutter_upgrade_template: &FLUTTER_UPGRADE_TEMPLATE |
| upgrade_flutter_script: |
| # Channels that are part of our normal test matrix use a pinned, |
| # auto-rolled version to prevent out-of-band CI failures due to changes in |
| # Flutter. |
| - TARGET_TREEISH=$CHANNEL |
| - if [[ "$CHANNEL" == "master" || "$CHANNEL" == "stable" ]]; then |
| - TARGET_TREEISH=$(< .ci/flutter_$CHANNEL.version) |
| - fi |
| # 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 channel. |
| - git checkout $TARGET_TREEISH |
| # When using a branch rather than a hash or version tag, reset to the |
| # upstream branch rather than using pull, since the base image can sometimes |
| # be in a state where it has diverged from upstream (!). |
| - if [[ "$TARGET_TREEISH" == "$CHANNEL" ]] && [[ "$CHANNEL" != *"."* ]]; then |
| - git reset --hard @{u} |
| - fi |
| # Run doctor to allow auditing of what version of Flutter the run is using. |
| - flutter doctor -v |
| << : *TOOL_SETUP_TEMPLATE |
| |
| task: |
| 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: 8G |
| << : *FLUTTER_UPGRADE_TEMPLATE |
| matrix: |
| ### Platform-agnostic tasks ### |
| - name: format+analyze |
| always: |
| format_script: ./script/tool_runner.sh format --fail-on-change |
| license_script: dart pub global run flutter_plugin_tools license-check |
| analyze_script: |
| - ./script/tool_runner.sh analyze --custom-analysis=script/configs/custom_analysis.yaml |
| pathified_analyze_script: |
| # 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 pub global run flutter_plugin_tools analyze --run-on-dirty-packages --custom-analysis=script/configs/custom_analysis.yaml |
| # Restore the tree to a clean state |
| - git checkout . |
| pubspec_script: ./script/tool_runner.sh pubspec-check |
| readme_script: |
| - ./script/tool_runner.sh readme-check |
| # Re-run with --require-excerpts, skipping packages that still need |
| # to be converted. Once https://github.com/flutter/flutter/issues/102679 |
| # has been fixed, this can be removed and there can just be a single |
| # run with --require-excerpts and no exclusions. |
| - ./script/tool_runner.sh readme-check --require-excerpts --exclude=script/configs/temp_exclude_excerpt.yaml |
| - name: readme_excerpts |
| env: |
| CIRRUS_CLONE_SUBMODULES: true |
| script: ./script/tool_runner.sh update-excerpts --fail-on-change |
| # Does a sanity check that packages at least pass analysis on the N-1 and N-2 |
| # versions of Flutter stable if the package claims to support that version. |
| # This is to minimize accidentally making changes that break old versions |
| # (which we don't commit to supporting, but don't want to actively break) |
| # without updating the constraints. |
| # Note: The versions below should be manually updated after a new stable |
| # version comes out. |
| - name: legacy-version-analyze |
| depends_on: format+analyze |
| matrix: |
| env: |
| CHANNEL: "2.10.5" |
| DART_VERSION: "2.16.2" |
| env: |
| CHANNEL: "2.8.1" |
| DART_VERSION: "2.15.1" |
| package_prep_script: |
| # Allow analyzing packages that use a dev dependency with a higher |
| # minimum Flutter/Dart version than the package itself. |
| - ./script/tool_runner.sh remove-dev-dependencies |
| analyze_script: |
| - ./script/tool_runner.sh analyze --lib-only --skip-if-not-supporting-flutter-version="$CHANNEL" --skip-if-not-supporting-dart-version="$DART_VERSION" --custom-analysis=script/configs/custom_analysis.yaml |
| # Does a sanity check that packages pass analysis with the lowest possible |
| # versions of all dependencies. This is to catch cases where we add use of |
| # new APIs but forget to update minimum versions of dependencies to where |
| # those APIs are introduced. |
| - name: downgraded_analyze |
| depends_on: format+analyze |
| analyze_script: |
| - ./script/tool_runner.sh analyze --downgrade --custom-analysis=script/configs/custom_analysis.yaml |
| - name: publishable |
| env: |
| # TODO(stuartmorgan): Remove once the fix for https://github.com/dart-lang/pub/issues/3152 |
| # rolls into Flutter master. |
| CHANNEL: stable |
| CHANGE_DESC: "/tmp/change-description.txt" |
| version_script: |
| # For pre-submit, pass the PR description to the script to allow for |
| # version check overrides. |
| # For post-submit, ignore 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 |
| - else |
| - echo "$CIRRUS_CHANGE_MESSAGE" > "$CHANGE_DESC" |
| - ./script/tool_runner.sh version-check --check-for-missing-changes --change-description-file="$CHANGE_DESC" --pr-labels="$CIRRUS_PR_LABELS" |
| - fi |
| publishable_script: ./script/tool_runner.sh publish-check --allow-pre-release |
| depends_on: |
| - format+analyze |
| - name: dart_unit_tests |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| unit_test_script: |
| - ./script/tool_runner.sh test --exclude=script/configs/dart_unit_tests_exceptions.yaml |
| pathified_unit_test_script: |
| # Run tests with path-based dependencies to ensure that publishing |
| # the changes won't break tests of other packages in the respository |
| # that depend on it. |
| - ./script/tool_runner.sh make-deps-path-based --target-dependencies-with-non-breaking-updates |
| - dart pub global run flutter_plugin_tools test --run-on-dirty-packages --exclude=script/configs/dart_unit_tests_exceptions.yaml |
| depends_on: |
| - format+analyze |
| - name: linux-custom_package_tests |
| env: |
| PATH: $PATH:/usr/local/bin |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| << : *INSTALL_CHROME_LINUX |
| local_tests_script: |
| # pigeon tests currently don't support Linux: |
| # https://github.com/flutter/flutter/issues/100386 |
| # flutter_image |
| # https://github.com/flutter/flutter/issues/100387 |
| - if [[ "$CHANNEL" == "master" ]]; then |
| - ./script/tool_runner.sh custom-test --exclude=pigeon |
| - else |
| - ./script/tool_runner.sh custom-test --exclude=pigeon,flutter_image |
| - fi |
| ### Android tasks ### |
| - name: android-platform_tests |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| build_script: |
| # extension_google_sign_in_as_googleapis_auth is currently not building, see |
| # https://github.com/flutter/flutter/issues/89301 |
| - ./script/tool_runner.sh build-examples --apk --exclude=extension_google_sign_in_as_googleapis_auth |
| native_unit_test_scipt: |
| - ./script/tool_runner.sh native-test --android --no-integration |
| depends_on: |
| - format+analyze |
| ### Web tasks ### |
| - name: web-platform_tests |
| env: |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| << : *INSTALL_CHROME_LINUX |
| chromedriver_background_script: |
| - $CHROMEDRIVER_EXECUTABLE --port=4444 |
| build_script: |
| - ./script/tool_runner.sh build-examples --web |
| drive_script: |
| - ./script/tool_runner.sh drive-examples --web |
| - name: web_benchmarks_test |
| env: |
| matrix: |
| CHROMIUM_BUILD: "768968" # Chromium 84.0.4147.0 |
| CHROMIUM_BUILD: "950363" # Chromium 98.0.4758.0 |
| << : *INSTALL_CHROME_LINUX |
| script: |
| - cd packages/web_benchmarks/testing/test_app |
| - flutter packages get |
| - cd ../.. |
| - flutter packages get |
| - dart testing/web_benchmarks_test.dart |
| ### Linux desktop tasks ### |
| - 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 |
| |
| task: |
| << : *FLUTTER_UPGRADE_TEMPLATE |
| << : *MACOS_TEMPLATE |
| matrix: |
| ### iOS tasks ### |
| - name: ios-platform_tests |
| env: |
| PATH: $PATH:/usr/local/bin |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| create_simulator_script: |
| - xcrun simctl list |
| - xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-13 com.apple.CoreSimulator.SimRuntime.iOS-15-5 | xargs xcrun simctl boot |
| build_script: |
| - ./script/tool_runner.sh build-examples --ios |
| native_test_script: |
| - ./script/tool_runner.sh native-test --ios --ios-destination "platform=iOS Simulator,name=iPhone 13,OS=latest" |
| - name: ios-custom_package_tests |
| # Run on macOS x64 image with Java runtime installed. |
| env: |
| PATH: $PATH:/usr/local/bin |
| matrix: |
| CHANNEL: "master" |
| CHANNEL: "stable" |
| local_tests_script: |
| # flutter_image |
| # https://github.com/flutter/flutter/issues/100387 |
| # cross_file |
| # Custom tests need Chrome. (They run in linux-custom_package_tests) |
| - if [[ "$CHANNEL" == "master" ]]; then |
| - ./script/tool_runner.sh custom-test --exclude=cross_file |
| - else |
| - ./script/tool_runner.sh custom-test --exclude=cross_file,flutter_image |
| - fi |
| ### macOS desktop tasks ### |
| - 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 |
| native_test_script: |
| - ./script/tool_runner.sh native-test --macos |