mirror of
https://github.com/flutter/packages.git
synced 2025-08-06 17:28:42 +08:00
283 lines
12 KiB
YAML
283 lines
12 KiB
YAML
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-ventura-xcode:14
|
|
|
|
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: 12G
|
|
<< : *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: "3.0.5"
|
|
DART_VERSION: "2.17.6"
|
|
env:
|
|
CHANNEL: "2.10.5"
|
|
DART_VERSION: "2.16.2"
|
|
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:
|
|
PACKAGE_SHARDING: "--shardIndex 0 --shardCount 2"
|
|
PACKAGE_SHARDING: "--shardIndex 1 --shardCount 2"
|
|
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-16-0 | 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: macos-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
|