blob: 8ad8e969f211742f44a5437dfdbcb591247dfb3a [file] [log] [blame] [edit]
# CIRRUS CONFIGURATION FILE
# https://cirrus-ci.org/guide/writing-tasks/
# YAML anchors used to share fields between tasks.
# See https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html
windows_shard_template: &WINDOWS_SHARD_TEMPLATE
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
script:
- dart --enable-asserts ./dev/bots/test.dart
macos_shard_template: &MACOS_SHARD_TEMPLATE
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941
script:
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
- dart --enable-asserts ./dev/bots/test.dart
firebase_shard_template: &FIREBASE_SHARD_TEMPLATE
environment:
# Empirically, this shard runs in 20-25 minutes with just one CPU and 4G of RAM, as of
# October 2019. It does not seem to be sensitive to the number of CPUs or amount of RAM;
# doubling CPUs had no effect (mere seconds under 20 minutes), increasing RAM to 24G left it
# on the high end of the 20-25 minute range. (This makes sense, as it's just driving the
# Firebase test lab remotely.) Less than 4G of RAM made it go OOM.
CLOUDSDK_CORE_DISABLE_PROMPTS: 1
GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[1c140257edc48f5578fa5a0e5038b84c8e53270c405efa5a8e35ea303a4e0d135853989f448f72136206de854d17fbec]
script:
- dart --enable-asserts ./dev/bots/test.dart
use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
environment:
# For details about environment variables used in Cirrus, including how encrypted variables work,
# see https://cirrus-ci.org/guide/writing-tasks/#environment-variables
GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb]
# We change Flutter's directory to include a space in its name (see $CIRRUS_WORKING_DIR) so that
# we constantly test path names with spaces in them. The FLUTTER_SDK_PATH_WITH_SPACE variable must
# therefore have a space in it.
FLUTTER_SDK_PATH_WITH_SPACE: "flutter sdk"
# We force BOT to true so that all our tools know we're in a CI environment. This avoids any
# dependency on precisely how Cirrus is detected by our tools.
BOT: "true"
# 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
# TODO(amirha): remove once we've migrated to newer Gradle
CIRRUS_CHANGE_MESSAGE: ""
CIRRUS_COMMIT_MESSAGE: ""
# LINUX SHARDS
task:
container:
# https://cirrus-ci.org/guide/docker-builder-vm/#dockerfile-as-a-ci-environment
dockerfile: "dev/ci/docker_linux/Dockerfile"
cpu: $CPU
memory: $MEMORY
use_in_memory_disk: $USE_IN_MEMORY_DISK
environment:
# We shrink our default resource requirement as much as possible because that way we are more
# likely to get scheduled. We require 4G of RAM because most of the shards (all but one as of
# October 2019) just get OOM-killed with less. Some shards may need more. When increasing the
# requirements for select shards, please leave a comment on those shards saying when you
# increased the requirements, what numbers you tried, and what the results were.
CPU: 1 # 0.1-8 without compute credits, 0.1-30 with (yes, you can go fractional)
MEMORY: 4G # 256M-24G without compute credits, 256M-90G with
CIRRUS_WORKING_DIR: "/tmp/$FLUTTER_SDK_PATH_WITH_SPACE"
CIRRUS_DOCKER_CONTEXT: "dev/"
PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
ANDROID_SDK_ROOT: "/opt/android_sdk"
SHOULD_UPDATE_PACKAGES: 'TRUE' # can be overridden at the task level
USE_IN_MEMORY_DISK: false
pub_cache:
folder: $HOME/.pub-cache
fingerprint_script: echo $OS; grep -r --include=pubspec.yaml 'PUBSPEC CHECKSUM' "$CIRRUS_WORKING_DIR"
reupload_on_changes: false
flutter_pkg_cache:
folder: bin/cache/pkg
fingerprint_script: echo $OS; cat bin/internal/*.version
reupload_on_changes: false
artifacts_cache:
folder: bin/cache/artifacts
fingerprint_script: echo $OS; cat bin/internal/*.version
reupload_on_changes: false
setup_script:
- date
- git clean -xffd --exclude=bin/cache/
- git fetch origin
- git fetch origin master # To set FETCH_HEAD, so that "git merge-base" works.
- flutter config --no-analytics
- if [ "$SHOULD_UPDATE_PACKAGES" == TRUE ]; then flutter update-packages; fi
- flutter doctor -v
- ./dev/bots/accept_android_sdk_licenses.sh
- date
on_failure:
failure_script:
- date
- which flutter
matrix:
- name: analyze-linux # linux-only
only_if: "$CIRRUS_PR != ''"
environment:
# Empirically, the analyze-linux shard runs surprisingly fast (under 15 minutes) with just 1
# CPU. We noticed OOM failures with 6GB 4/2020, so we increased the memory.
CPU: 1
MEMORY: 8G
script:
- dart --enable-asserts ./dev/bots/analyze.dart
- name: framework_tests-widgets-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# We use 3 CPUs because that's the minimum required to get framework_tests-widgets-linux
# running fast enough that it is not the long pole, as of October 2019.
CPU: 3
GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
script:
- dart --enable-asserts ./dev/bots/test.dart
- name: framework_tests-libraries-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# We use 3 CPUs because that's the minimum required to get the
# framework_tests-libraries-linux shard running fast enough that it is not the long pole, as
# of October 2019.
CPU: 3
GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
script:
- dart --enable-asserts ./dev/bots/test.dart
- name: framework_tests-misc-linux
# this includes the tests for directories in dev/
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_goldens/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# We use 3 CPUs because that's the minimum required to get framework_tests-misc-linux
# running fast enough that it is not the long pole, as of October 2019.
CPU: 3
script:
- dart --enable-asserts ./dev/bots/test.dart
- name: tool_tests-general-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# As of November 2019, the tool_tests-general-linux shard got faster with more CPUs up to 4
# CPUs, and needed at least 10G of RAM to not run out of memory.
CPU: 4
MEMORY: 10G
SHOULD_UPDATE_PACKAGES: "FALSE"
script:
- (cd packages/flutter_tools; pub get)
- (cd packages/flutter_tools/test/data/asset_test/main; pub get)
- (cd packages/flutter_tools/test/data/asset_test/font; pub get)
- (cd dev/bots; pub get)
- dart --enable-asserts ./dev/bots/test.dart
- name: tool_tests-commands-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# As of October 2019, the tool_tests-commands-linux shard got faster with more CPUs up to 6
# CPUs, and needed at least 8G of RAM to not run out of memory.
# Increased to 10GB on 19th Nov 2019 due to significant number of OOMKilled failures on PR builds.
CPU: 6
MEMORY: 10G
SHOULD_UPDATE_PACKAGES: "FALSE"
script:
- (cd packages/flutter_tools; pub get)
- (cd dev/bots; pub get)
- dart --enable-asserts ./dev/bots/test.dart
- name: tool_tests-integration-linux
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter_tools/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# As of October 2019, the tool_tests-integration-linux shard got faster with more CPUs up to
# 6 CPUs, and needed at least 8G of RAM to not run out of memory.
CPU: 6
MEMORY: 8G
CHROME_NO_SANDBOX: true
SHOULD_UPDATE_PACKAGES: "FALSE"
script:
- (cd packages/flutter_tools; pub get)
- (cd dev/bots; pub get)
- (cd dev/tools; pub get)
- dart --enable-asserts ./dev/bots/test.dart
- name: tool_coverage-linux # linux-only
skip: true # Skip while moving between Cirrus and LUCI
only_if: "$CIRRUS_BRANCH == 'master'"
environment:
# As of February 2020, the tool_coverage-linux shard needed at least 24G of RAM to run without
# getting OOM-killed, and even 8 CPUs took 25 minutes.
CPU: 8
MEMORY: 24G
CODECOV_TOKEN: ENCRYPTED[7c76a7f8c9264f3b7f3fd63fcf186f93c62c4dfe43ec288861c2f506d456681032b89efe7b7a139c82156350ca2c752c]
SHOULD_UPDATE_PACKAGES: "FALSE"
script:
- (cd packages/flutter_tools; pub get)
- (cd packages/flutter_tools/test/data/asset_test/main; pub get)
- (cd packages/flutter_tools/test/data/asset_test/font; pub get)
- (cd dev/bots; pub get)
- dart --enable-asserts ./dev/bots/test.dart
- bash <(curl -s https://codecov.io/bash) -c -f packages/flutter_tools/coverage/lcov.info -F flutter_tool
- name: web_integration_tests
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/**', 'packages/flutter_web_plugins/**', 'bin/**') && $CIRRUS_PR != ''"
environment:
# As of October 2019, the Web shards needed more than 6G of RAM.
CPU: 2
MEMORY: 8G
CHROME_NO_SANDBOX: true
GOLD_SERVICE_ACCOUNT: ENCRYPTED[3afeea5ac7201151c3d0dc9648862f0462b5e4f55dc600ca8b692319622f7c3eda3d577b1b16cc2ef0311b7314c1c095]
script:
- dart --enable-asserts ./dev/bots/test.dart
- name: docs-linux # linux-only
# TODO(fujino): Make this pre-submit only once #64212 is fixed
only_if: "changesInclude('.cirrus.yml', 'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_drive/**', 'packages/flutter_localizations/**', 'bin/**') || $CIRRUS_PR == ''"
environment:
# TODO(tvolkert): optimize CPU and MEMORY settings once #60646 is resolved.
CPU: 4
MEMORY: 8G
# For uploading master docs to Firebase master branch staging site
FIREBASE_MASTER_TOKEN: ENCRYPTED[eb768d18798fdc5abfe09b224e1724c4d82831d715ccf90df2c79d618c317216cbd99493278361f6fe7948b409b603f0]
# For uploading stable docs to Firebase public live site
FIREBASE_PUBLIC_TOKEN: ENCRYPTED[37e8b82f167864cae9a3f4d2cf3f37dea331d9375c295327c45de524f6c588fa6f6d63e5784f10f6d43ce29689f36c92]
script:
- ./dev/bots/docs.sh
- name: customer_testing-linux
only_if: "$CIRRUS_PR != ''"
# environment:
# Empirically, this shard runs fine at 1 CPU and 4G RAM as of October 2019. We will probably
# want to grow this container when we invite people to add their tests in large numbers.
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
# firebase_test_lab_tests are linux-only
- name: firebase_test_lab_tests-0-linux
<<: *FIREBASE_SHARD_TEMPLATE
- name: firebase_test_lab_tests-1-linux
<<: *FIREBASE_SHARD_TEMPLATE
- name: firebase_test_lab_tests-2_last-linux
<<: *FIREBASE_SHARD_TEMPLATE
- name: web_smoke_test
only_if: "changesInclude('.cirrus.yml', 'examples/hello_world/**' ,'dev/**', 'packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'packages/flutter_web_plugins/**', 'bin/**') || $CIRRUS_PR == ''"
environment:
# Tests Hello World with Flutter Web Engine using Flutter Driver. Should not need more resources.
CPU: 2
MEMORY: 2G
CHROME_NO_SANDBOX: true
script:
- flutter config --enable-web
- git clone https://github.com/flutter/web_installers.git
- cd web_installers/packages/web_drivers/
- pub get
- dart lib/web_driver_installer.dart &
- sleep 20
- chromedriver/chromedriver --port=4444 &
- sleep 5
- cd ../../../examples/hello_world/
- flutter drive --target=test_driver/smoke_web_engine.dart -d web-server --profile --browser-name=chrome
- name: deploy_gallery-linux # linux- and macos- only
# Do not add more tasks here. Nothing is currently deployed from master branch, so it is safe to run
# even if a test has failed. The behavior of failing dependencies is non-ideal for infra health.
# See also: https://github.com/flutter/flutter/pull/49454
depends_on:
- analyze-linux
environment:
# As of October 2019, 1 CPU and 4G of RAM let deploy_gallery-linux finish in about 15
# minutes, once it got started.
GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE: ENCRYPTED[d9ac1462c3c556fc2f8165c9d5566a16497d8ebc38a50357f7f3abf136b7f83e1d1d76dde36fee356cb0f9ebf7a89346]
ANDROID_GALLERY_UPLOAD_KEY: ENCRYPTED[0f2aca35f05b26add5d9edea2a7449341269a2b7e22d5c667f876996e2e8bc44ff1369431ebf73b7c5581fd95d0e5902]
script:
- ./dev/bots/deploy_gallery.sh
# WINDOWS SHARDS
task:
windows_container:
image: cirrusci/android-sdk:30-windowsservercore-2019
os_version: 2019
cpu: $CPU
memory: $MEMORY
environment:
CPU: 1 # 1-8 without compute credits, 1-30 with
MEMORY: 2G # 256M-24G without compute credits, 256M-90G with
CIRRUS_WORKING_DIR: "C:\\Windows\\Temp\\$FLUTTER_SDK_PATH_WITH_SPACE"
PATH: "$CIRRUS_WORKING_DIR/bin;$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin;$PATH"
SHOULD_UPDATE_PACKAGES: "TRUE"
pub_cache:
folder: $APPDATA\Pub\Cache
fingerprint_script:
- ps: $Environment:OS; Get-ChildItem -Path "$Environment:CIRRUS_WORKING_DIR" pubspec.yaml -Recurse | Select-String -Pattern "PUBSPEC CHECKSUM" -SimpleMatch
reupload_on_changes: false
flutter_pkg_cache:
folder: bin\cache\pkg
fingerprint_script: echo %OS% & type bin\internal\*.version
reupload_on_changes: false
artifacts_cache:
folder: bin\cache\artifacts
fingerprint_script: echo %OS% & type bin\internal\*.version
reupload_on_changes: false
setup_script:
- git clean -xffd --exclude=bin/cache/ # git wants forward slash path separators, even on Windows.
- git fetch origin
- git fetch origin master # To set FETCH_HEAD, so that "git merge-base" works.
- flutter config --no-analytics
- flutter doctor -v
- CMD /C IF "%SHOULD_UPDATE_PACKAGES%" EQU "TRUE" flutter update-packages
- git fetch origin master
matrix:
- name: hostonly_devicelab_tests-0-windows
<< : *WINDOWS_SHARD_TEMPLATE
environment:
# As of December 2019, the hostonly_devicelab_tests-0-windows shard needs at least 6G RAM to
# succeed. The shard got faster with more CPUs up to 6 CPUs and more RAM up to 8 GB
# (running in about 30 minutes).
CPU: 6
MEMORY: 8G
- name: hostonly_devicelab_tests-1-windows
<< : *WINDOWS_SHARD_TEMPLATE
environment:
# As of December 2019, the hostonly_devicelab_tests-1-windows shard requires 4 GB RAM to
# succeed. The optimal configuration was 4 CPUs and 6 GB RAM, running in ~26 minutes.
# Less CPU or RAM ran slower, and more CPU or RAM yielded no extra gain.
CPU: 4
MEMORY: 6G
- name: hostonly_devicelab_tests-2-windows
<< : *WINDOWS_SHARD_TEMPLATE
environment:
# As of December 2019, the hostonly_devicelab_tests-2-windows shard required 2 GB RAM to
# succeed. The optimal configuration was 4 CPUs and 8 GB RAM, running in ~33 minutes.
# Less CPU or RAM ran slower, and more CPU or RAM yielded no extra gain.
CPU: 4
MEMORY: 8G
- name: hostonly_devicelab_tests-3_last-windows
<< : *WINDOWS_SHARD_TEMPLATE
environment:
# As of December 2019, the hostonly_devicelab_tests-3_last-windows shard required 6 GB RAM
# to succeed. The optimal configuration was 4 CPUs and 6 GB RAM, running in ~43 minutes.
# Less CPU or RAM ran slower, and more CPU or RAM yielded no extra gain.
CPU: 4
MEMORY: 6G
# MACOS SHARDS
# Mac doesn't use caches because they apparently take longer to populate and save
# than just fetching the data in the first place.
task:
osx_instance:
image: catalina-xcode-12.0-flutter # see https://cirrus-ci.org/guide/macOS/ for list of images (we should update regularly)
# cpu is always 2
# memory is always 8G
environment:
CIRRUS_WORKING_DIR: "/tmp/$FLUTTER_SDK_PATH_WITH_SPACE"
FLUTTER_FRAMEWORK_DIR: "$CIRRUS_WORKING_DIR/bin/cache/artifacts/engine/ios/"
PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
COCOAPODS_DISABLE_STATS: true
CPU: 2
MEMORY: 8G
SHOULD_UPDATE_PACKAGES: 'TRUE'
setup_script:
- date
- which flutter
- bundle --version
- bundle config set system 'true'
- sudo bundle install --gemfile=dev/ci/mac/Gemfile
- git clean -xffd --exclude=bin/cache/
- git fetch origin
- git fetch origin master # To set FETCH_HEAD, so that "git merge-base" works.
- flutter config --no-analytics
- if [ "$SHOULD_UPDATE_PACKAGES" == TRUE ]; then flutter update-packages; fi
- flutter doctor -v
- date
- which flutter
on_failure:
failure_script:
- date
- which flutter
matrix:
# TODO(ianh): Enable Web tests on macOS.
- name: hostonly_devicelab_tests-0-macos
<< : *MACOS_SHARD_TEMPLATE
- name: hostonly_devicelab_tests-1-macos
<< : *MACOS_SHARD_TEMPLATE
- name: hostonly_devicelab_tests-2-macos
<< : *MACOS_SHARD_TEMPLATE
- name: hostonly_devicelab_tests-3_last-macos
<< : *MACOS_SHARD_TEMPLATE
- name: customer_testing-macos
script:
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
- 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
- name: deploy_gallery-macos # linux- and macos- only
# Do not add more tasks here. Nothing is currently deployed from master branch, so it is safe to run
# even if a test has failed. The behavior of failing dependencies is non-ideal for infra health.
# See also: https://github.com/flutter/flutter/pull/49454
depends_on:
- analyze-linux
environment:
# 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]
script:
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
- ./dev/bots/deploy_gallery.sh
- name: verify_binaries_codesigned-macos # macos-only
# TODO(fujino): remove this `only_if` after https://github.com/flutter/flutter/issues/44372
# Only run pre/post submit for release branches
only_if: "$CIRRUS_BASE_BRANCH == 'dev' || $CIRRUS_BRANCH == 'dev' || $CIRRUS_BASE_BRANCH == 'beta' || $CIRRUS_BRANCH == 'beta' || $CIRRUS_BASE_BRANCH == 'stable' || $CIRRUS_BRANCH == 'stable'"
depends_on:
- analyze-linux
script:
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
- dart --enable-asserts ./dev/bots/codesign.dart