# CIRRUS CONFIGURATION FILE # https://cirrus-ci.org/guide/writing-tasks/ environment: # For details about environment variables used in Cirrus, including how encrypted variables work, # see https://cirrus-ci.org/guide/writing-tasks/#environment-variables # 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" gcp_credentials: ENCRYPTED[!9e38557f08108136b3625b7e62c64cc9eccc50365ffeaaa55c6be52f1d8fd6225af5badc69983ca08484274f02f34424!] # LINUX SHARDS task: gke_container: dockerfile: "dev/ci/docker_linux/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: $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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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 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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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 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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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; dart __deprecated_pub get) - (cd packages/flutter_tools/test/data/asset_test/main; dart __deprecated_pub get) - (cd packages/flutter_tools/test/data/asset_test/font; dart __deprecated_pub get) - (cd dev/bots; dart __deprecated_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 != '' && $CIRRUS_BASE_BRANCH == 'master'" 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; dart __deprecated_pub get) - (cd dev/bots; dart __deprecated_pub get) - dart --enable-asserts ./dev/bots/test.dart - name: docs-linux # linux-only environment: CPU: 4 MEMORY: 12G only_if: "$CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'" script: - ./dev/bots/docs.sh - name: customer_testing-linux only_if: "$CIRRUS_PR != '' && $CIRRUS_BASE_BRANCH == 'master'" 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. SHOULD_UPDATE_PACKAGES: "FALSE" script: # Cirrus doesn't give us the master branch, so we have to fetch it for ourselves, # otherwise we won't be able to figure out how old or new our current branch is. - git config user.email "cirrus-bot@invalid" - git fetch origin master:master # The actual logic is in a shell script so that it can be shared between CIs. - (cd dev/customer_testing/; ./ci.sh)