mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
194 lines
9.4 KiB
YAML
194 lines
9.4 KiB
YAML
# 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
|
|
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
|
|
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
|
|
script:
|
|
- dart --enable-asserts ./dev/bots/test.dart
|
|
|
|
- name: docs-linux # linux-only
|
|
# TODO(fujino): Make this pre-submit only once we have migrated docs generation to LUCI (https://github.com/flutter/flutter/issues/64212).
|
|
environment:
|
|
# TODO(tvolkert): optimize CPU and MEMORY settings once docs generation is more efficient (https://github.com/flutter/flutter/issues/60646).
|
|
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 chromedriver --install-only
|
|
- chromedriver/chromedriver --port=4444 &
|
|
- sleep 1
|
|
- cd ../../../examples/hello_world/
|
|
- flutter drive --target=test_driver/smoke_web_engine.dart -d web-server --profile --browser-name=chrome
|