forked from flutter/flutter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.cirrus.yml
261 lines (243 loc) · 12.3 KB
/
.cirrus.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# 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
- 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
# As of October 2019, 1 CPU and 4G of RAM let deploy_gallery-linux finish in about 15
# minutes, once it got started.
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
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