5
5
- bundler
6
6
- cocoapods
7
7
8
+ stages :
9
+ - checks
10
+ - test
11
+ - name : cocoapods_compatibility_check
12
+ if : type = cron
13
+
8
14
jobs :
9
15
include :
10
16
- stage : checks
13
19
- brew install clang-format
14
20
- brew install swiftformat
15
21
script :
16
- - ./scripts/check_whitespace.sh
17
- - ./scripts/check_copyright.sh
18
- - ./scripts/check_no_module_imports.sh
19
- - ./scripts/check_test_inclusion.py
20
- - ./scripts/style.sh test-only $TRAVIS_COMMIT_RANGE
21
- # Google C++ style compliance
22
- - ./scripts/lint.sh $TRAVIS_COMMIT_RANGE
22
+ - ./scripts/check.sh --test-only $TRAVIS_COMMIT_RANGE
23
23
24
24
# The order of builds matters (even though they are run in parallel):
25
25
# Travis will schedule them in the same order they are listed here.
@@ -89,38 +89,40 @@ jobs:
89
89
script :
90
90
# Eliminate the one warning from BoringSSL when CocoaPods 1.6.0 is available.
91
91
# The travis_wait is necessary because the command takes more than 10 minutes.
92
- - travis_wait 45 ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseFirestore.podspec --allow-warnings --no-subspecs
92
+ - travis_wait 30 ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseFirestore.podspec --platforms=ios --allow-warnings --no-subspecs
93
93
94
94
# pod lib lint to check build and warnings for static library build - only on cron jobs
95
95
- stage : test
96
+ if : type = cron
96
97
env :
97
98
- PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint
98
99
before_install :
99
- - ./scripts/if_cron.sh ./scripts/ install_prereqs.sh
100
+ - ./scripts/install_prereqs.sh
100
101
script :
101
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh GoogleUtilities.podspec --use-libraries
102
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseCore.podspec --use-libraries
103
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseAnalyticsInterop.podspec --use-libraries
104
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseAuth.podspec --use-libraries
105
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseAuthInterop.podspec --use-libraries
106
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseDatabase.podspec --use-libraries
107
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseDynamicLinks.podspec --use-libraries
108
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseInstanceID.podspec --use-libraries
102
+ - travis_retry ./scripts/pod_lib_lint.sh GoogleUtilities.podspec --use-libraries
103
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseCore.podspec --use-libraries
104
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseAnalyticsInterop.podspec --use-libraries
105
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseAuth.podspec --use-libraries
106
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseAuthInterop.podspec --use-libraries
107
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseDatabase.podspec --use-libraries
108
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseDynamicLinks.podspec --use-libraries
109
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseInstanceID.podspec --use-libraries
109
110
# The Protobuf dependency of FirebaseMessaging has warnings with --use-libraries
110
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseMessaging.podspec --use-libraries --allow-warnings
111
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseStorage.podspec --use-libraries
112
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseInAppMessaging.podspec --use-libraries
113
- - travis_retry ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseInAppMessagingDisplay.podspec --use-libraries
111
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseMessaging.podspec --use-libraries --allow-warnings
112
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseStorage.podspec --use-libraries
113
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseInAppMessaging.podspec --use-libraries
114
+ - travis_retry ./scripts/pod_lib_lint.sh FirebaseInAppMessagingDisplay.podspec --use-libraries
114
115
115
116
- stage : test
117
+ if : type = cron
116
118
env :
117
119
- PROJECT=Firestore PLATFORM=iOS METHOD=pod-lib-lint
118
120
before_install :
119
- - ./scripts/if_cron.sh ./scripts/ install_prereqs.sh
121
+ - ./scripts/install_prereqs.sh
120
122
script :
121
123
# TBD - non-portable path warnings
122
124
# The travis_wait is necessary because the command takes more than 10 minutes.
123
- - travis_wait 45 ./scripts/if_cron.sh ./scripts/ pod_lib_lint.sh FirebaseFirestore.podspec --use-libraries --allow-warnings --no-subspecs
125
+ - travis_wait 45 ./scripts/pod_lib_lint.sh FirebaseFirestore.podspec --use-libraries --allow-warnings --no-subspecs
124
126
125
127
# GoogleDataTransport unit tests and pod linting using the default Xcode version.
126
128
- stage : test
@@ -144,12 +146,13 @@ jobs:
144
146
145
147
# Daily test for symbol collisions between Firebase and CocoaPods.
146
148
- stage : test
149
+ if : type = cron
147
150
env :
148
151
- PROJECT=SymbolCollision PLATFORM=iOS METHOD=xcodebuild
149
152
before_install :
150
- - ./scripts/if_cron.sh ./scripts/ install_prereqs.sh
153
+ - ./scripts/install_prereqs.sh
151
154
script :
152
- - travis_retry ./scripts/if_cron.sh ./scripts/ build.sh $PROJECT $PLATFORM $METHOD
155
+ - travis_retry ./scripts/build.sh $PROJECT $PLATFORM $METHOD
153
156
154
157
# Alternative platforms
155
158
@@ -181,6 +184,22 @@ jobs:
181
184
script :
182
185
- travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
183
186
187
+ - stage : test
188
+ env :
189
+ - PROJECT=Firestore PLATFORM=macOS METHOD=xcodebuild
190
+ before_install :
191
+ - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
192
+ script :
193
+ - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
194
+
195
+ - stage : test
196
+ env :
197
+ - PROJECT=Firestore PLATFORM=tvOS METHOD=xcodebuild
198
+ before_install :
199
+ - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
200
+ script :
201
+ - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
202
+
184
203
# Firestore sanitizers
185
204
186
205
- stage : test
@@ -219,16 +238,57 @@ jobs:
219
238
script :
220
239
- travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
221
240
241
+ # Validate Cocoapods configurations
242
+ # This may take long time, so we would like to run it only once all other tests pass
243
+ # Validate Cocoapods 1.7.0 compatibility
244
+ - stage : cocoapods_compatibility_check
245
+ env :
246
+ - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_frameworks
247
+ script :
248
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
249
+
250
+ - stage : cocoapods_compatibility_check
251
+ env :
252
+ - POD_CONFIG_DIR=Cocoapods1_7_0_frameworks
253
+ script :
254
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
255
+
256
+ - stage : cocoapods_compatibility_check
257
+ env :
258
+ - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_staticLibs
259
+ script :
260
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
261
+
262
+ - stage : cocoapods_compatibility_check
263
+ env :
264
+ - POD_CONFIG_DIR=Cocoapods1_7_0_staticLibs
265
+ script :
266
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
267
+
268
+ # Validate Cocoapods 1.6.1 compatibility
269
+ - stage : cocoapods_compatibility_check
270
+ env :
271
+ - POD_CONFIG_DIR=Cocoapods1_6_1_frameworks
272
+ script :
273
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
274
+
275
+ - stage : cocoapods_compatibility_check
276
+ env :
277
+ - POD_CONFIG_DIR=Cocoapods1_6_1_staticLibs
278
+ script :
279
+ - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
280
+
222
281
allow_failures :
223
282
# Run fuzz tests only on cron jobs.
224
283
- stage : test
284
+ if : type = cron
225
285
env :
226
286
- PROJECT=Firestore PLATFORM=iOS METHOD=fuzz
227
287
before_install :
228
- - ./scripts/if_cron.sh ./scripts/ install_prereqs.sh
288
+ - ./scripts/install_prereqs.sh
229
289
script :
230
290
# The travis_wait is necessary because fuzzing runs for 40 minutes.
231
- - travis_wait 45 ./scripts/if_cron.sh ./scripts/ fuzzing_ci.sh
291
+ - travis_wait 45 ./scripts/fuzzing_ci.sh
232
292
233
293
# TODO(varconst): UBSan for CMake. UBSan failures are non-fatal by default,
234
294
# need to make them fatal for the purposes of the test run.
@@ -242,6 +302,8 @@ jobs:
242
302
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=asan
243
303
- env :
244
304
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=tsan
305
+ - env :
306
+ - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild
245
307
246
308
# TODO(varconst): enable if it's possible to make this flag work on build
247
309
# stages. It's supposed to avoid waiting for jobs that are allowed to fail
0 commit comments