forked from firebase/firebase-ios-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
187 lines (162 loc) · 7.08 KB
/
.travis.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
os: osx
osx_image: xcode9.3
language: objective-c
cache:
- bundler
- cocoapods
rvm: 2.3.1
jobs:
include:
- stage: checks
# This only needs to be run once, so restrict it to an arbitrary combination
before_install:
- brew install clang-format
- brew install swiftformat
script:
- ./scripts/check_whitespace.sh
- ./scripts/check_copyright.sh
- ./scripts/check_no_module_imports.sh
- ./scripts/check_test_inclusion.py
- ./scripts/style.sh test-only $TRAVIS_COMMIT_RANGE
# Google C++ style compliance
- ./scripts/lint.sh $TRAVIS_COMMIT_RANGE
# The order of builds matters (even though they are run in parallel):
# Travis will schedule them in the same order they are listed here.
# Primary platforms
# Run unit tests
- stage: test
env:
- PROJECT=Firebase PLATFORM=iOS METHOD=xcodebuild
before_install:
- npm install ios-sim -g
- ios-sim start --devicetypeid "com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus, 11.3"
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
- stage: test
env:
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
# TODO - add a script to make the lint checks more DRY.
# pod lib lint to check build and warnings for dynamic framework build (use_frameworks!)
- stage: test
env:
- PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseCore.podspec
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseAuth.podspec
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseDatabase.podspec
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseMessaging.podspec
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseStorage.podspec
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseFunctions.podspec
- stage: test
env:
- PROJECT=Firestore PLATFORM=iOS METHOD=pod-lib-lint
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
# Eliminate the one warning from BoringSSL when CocoaPods 1.6.0 is available.
# The travis_wait is necessary because the command takes more than 10 minutes.
- travis_wait ./scripts/if_changed.sh bundle exec pod lib lint FirebaseFirestore.podspec --allow-warnings --no-subspecs
# pod lib lint to check build and warnings for static library build - only on cron jobs
- stage: test
env:
- PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint
before_install:
- ./scripts/if_cron.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseCore.podspec --use-libraries
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseAuth.podspec --use-libraries
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseDatabase.podspec --use-libraries
# The Protobuf dependency of FirebaseMessaging has warnings with --use-libraries
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseMessaging.podspec --use-libraries --allow-warnings
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseStorage.podspec --use-libraries
- ./scripts/if_cron.sh bundle exec pod lib lint FirebaseFunctions.podspec --use-libraries
- stage: test
env:
- PROJECT=Firestore PLATFORM=iOS METHOD=pod-lib-lint
before_install:
- ./scripts/if_cron.sh ./scripts/install_prereqs.sh
script:
# TBD - non-portable path warnings
# The travis_wait is necessary because the command takes more than 10 minutes.
- travis_wait ./scripts/if_cron.sh bundle exec pod lib lint FirebaseFirestore.podspec --use-libraries --allow-warnings --no-subspecs
# Alternative platforms
- stage: test
env:
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
# Community-supported platforms
- stage: test
env:
- PROJECT=Firebase PLATFORM=macOS METHOD=xcodebuild
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
- stage: test
env:
- PROJECT=Firebase PLATFORM=tvOS METHOD=xcodebuild
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
# Firestore sanitizers
- stage: test
env:
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=asan
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
- stage: test
env:
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=tsan
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
# TODO(varconst): enable UBSan in xcodebuild. Right now if fails during
# linkage (it works if enabled together with ASan, but it's supposed to be
# usable on its own, too).
- stage: test
env:
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=asan
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
- stage: test
env:
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=tsan
before_install:
- ./scripts/if_changed.sh ./scripts/install_prereqs.sh
script:
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
# TODO(varconst): UBSan for CMake. UBSan failures are non-fatal by default,
# need to make them fatal for the purposes of the test run.
# TODO(varconst): disallow sanitizers to fail once we fix all existing issues.
allow_failures:
- env:
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=asan
- env:
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=tsan
- env:
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=asan
- env:
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=tsan
# TODO(varconst): enable if it's possible to make this flag work on build
# stages. It's supposed to avoid waiting for jobs that are allowed to fail
# before reporting the results.
# fast_finish: true
branches:
only:
- master