# 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 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: 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 - 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 # 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: 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