.travis.yml 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. os: osx
  2. osx_image: xcode11.3
  3. language: objective-c
  4. cache:
  5. bundler: true
  6. cocoapods: true
  7. directories:
  8. # Built-in support for ccache doesn't seem to pick this up
  9. - $HOME/.ccache
  10. stages:
  11. - checks
  12. - test
  13. before_script:
  14. - '[ ! -z $DANGER_GITHUB_API_TOKEN ] && bundle exec danger || echo "Skipping Danger for External Contributor"'
  15. jobs:
  16. include:
  17. - stage: checks
  18. # This only needs to be run once, so restrict it to an arbitrary combination
  19. before_install:
  20. - brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb
  21. - brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb
  22. - pip install flake8
  23. script:
  24. - ./scripts/check.sh --test-only
  25. # The order of builds matters (even though they are run in parallel):
  26. # Travis will schedule them in the same order they are listed here.
  27. - stage: test
  28. env:
  29. - PROJECT=Core METHOD=pod-lib-lint
  30. script:
  31. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=ios
  32. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=tvos
  33. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=macos
  34. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  35. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos
  36. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos
  37. - stage: test
  38. osx_image: xcode10.3
  39. env:
  40. - PROJECT=Core METHOD=pod-lib-lint
  41. script:
  42. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=ios
  43. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  44. - stage: test
  45. if: type = cron
  46. env:
  47. - PROJECT=CoreCron METHOD=pod-lib-lint
  48. script:
  49. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=ios --use-libraries --skip-tests
  50. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=tvos --use-libraries --skip-tests
  51. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=macos --use-libraries --skip-tests
  52. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=ios --use-modular-headers
  53. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=tvos --use-modular-headers
  54. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=macos --use-modular-headers
  55. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-libraries
  56. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-libraries
  57. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-libraries
  58. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-modular-headers
  59. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-modular-headers
  60. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-modular-headers
  61. - stage: test
  62. env:
  63. - PROJECT=ABTesting METHOD=pod-lib-lint QUICKSTART=abtesting
  64. before_install:
  65. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  66. script:
  67. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios
  68. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh ABTesting
  69. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=tvos
  70. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=macos
  71. - stage: test
  72. osx_image: xcode10.3
  73. env:
  74. - PROJECT=ABTesting METHOD=pod-lib-lint
  75. script:
  76. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios
  77. - stage: test
  78. if: type = cron
  79. env:
  80. - PROJECT=ABTestingCron METHOD=pod-lib-lint
  81. script:
  82. - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios --use-libraries
  83. - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=tvos --use-libraries
  84. - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=macos --use-libraries
  85. - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios --use-modular-headers
  86. # One of the next two consistently hang on Travis. Commenting for now.
  87. # - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=tvos --use-modular-headers
  88. # - travis_retry ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=macos --use-modular-headers
  89. - stage: test
  90. env:
  91. - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild QUICKSTART=authentication
  92. before_install:
  93. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  94. script:
  95. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios
  96. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Authentication
  97. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos
  98. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos
  99. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  100. - stage: test
  101. osx_image: xcode10.3
  102. env:
  103. - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild
  104. before_install:
  105. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  106. script:
  107. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios
  108. - stage: test
  109. if: type = cron
  110. env:
  111. - PROJECT=AuthCron METHOD=pod-lib-lint
  112. script:
  113. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios --use-libraries
  114. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos --use-libraries
  115. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos --use-libraries
  116. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios --use-modular-headers
  117. # The tvOS and macOS --use-modular-headers tests do not work on travis, perhaps because of interactive
  118. # keystore validation requirements? See https://travis-ci.org/firebase/firebase-ios-sdk/jobs/578656148
  119. # TODO(paulb777): Retry on next Xcode version update
  120. - stage: test
  121. env:
  122. - PROJECT=InstanceID METHOD=pod-lib-lint
  123. - FIR_IID_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  124. before_install:
  125. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  126. script:
  127. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  128. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos
  129. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos
  130. - stage: test
  131. osx_image: xcode10.3
  132. env:
  133. - PROJECT=InstanceID METHOD=pod-lib-lint
  134. - FIR_IID_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  135. before_install:
  136. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  137. script:
  138. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  139. - stage: test
  140. if: type = cron
  141. env:
  142. - PROJECT=InstanceIDCron METHOD=pod-lib-lint
  143. - FIR_IID_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  144. before_install:
  145. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  146. script:
  147. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios --use-libraries
  148. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos --use-libraries
  149. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos --use-libraries
  150. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios --use-modular-headers
  151. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos --use-modular-headers
  152. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos --use-modular-headers
  153. - stage: test
  154. env:
  155. - PROJECT=Database PLATFORM=all METHOD=xcodebuild QUICKSTART=database
  156. before_install:
  157. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  158. script:
  159. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  160. # The pod lib lint tests are fast enough that it's not worth a separate stage.
  161. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  162. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Database
  163. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=tvos
  164. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=macos
  165. - stage: test
  166. osx_image: xcode10.3
  167. env:
  168. - PROJECT=Database PLATFORM=all METHOD=xcodebuild
  169. before_install:
  170. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  171. script:
  172. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  173. - stage: test
  174. if: type = cron
  175. env:
  176. - PROJECT=DatabaseCron METHOD=pod-lib-lint
  177. script:
  178. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=ios
  179. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=tvos
  180. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=macos
  181. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=ios
  182. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=tvos
  183. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=macos
  184. - stage: test
  185. env:
  186. - PROJECT=DynamicLinks METHOD=pod-lib-lint QUICKSTART=dynamiclinks
  187. before_install:
  188. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  189. script:
  190. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec
  191. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh DynamicLinks
  192. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec --use-libraries
  193. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec --use-modular-headers
  194. - stage: test
  195. osx_image: xcode10.3
  196. env:
  197. - PROJECT=DynamicLinks METHOD=pod-lib-lint
  198. script:
  199. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec
  200. - stage: test
  201. env:
  202. - PROJECT=Messaging METHOD=pod-lib-lint QUICKSTART=messaging
  203. before_install:
  204. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  205. script:
  206. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  207. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Messaging
  208. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos
  209. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos
  210. - stage: test
  211. osx_image: xcode10.3
  212. env:
  213. - PROJECT=Messaging METHOD=pod-lib-lint
  214. script:
  215. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  216. - stage: test
  217. if: type = cron
  218. env:
  219. - PROJECT=MessagingCron METHOD=pod-lib-lint
  220. script:
  221. # FirebaseMessaging includes Swift unit tests so it is not testable with --use-libraries.
  222. # TODO(paulb777): Migrate FirebaseMessaging to pod gen driven tests with a separate test
  223. # target for Swift.
  224. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios --use-libraries --skip-tests
  225. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos --use-libraries --skip-tests
  226. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos --use-libraries --skip-tests
  227. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios --use-modular-headers
  228. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos --use-modular-headers
  229. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos --use-modular-headers
  230. - stage: test
  231. env:
  232. - PROJECT=RemoteConfig METHOD=pod-lib-lint QUICKSTART=config
  233. before_install:
  234. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  235. script:
  236. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios
  237. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Config
  238. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=tvos
  239. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=macos
  240. - stage: test
  241. osx_image: xcode10.3
  242. env:
  243. - PROJECT=RemoteConfig METHOD=pod-lib-lint
  244. script:
  245. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios
  246. - stage: test
  247. if: type = cron
  248. env:
  249. - PROJECT=RemoteConfigCron METHOD=pod-lib-lint
  250. script:
  251. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=ios
  252. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=tvos
  253. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=macos
  254. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=ios
  255. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=tvos
  256. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=macos
  257. - stage: test
  258. env:
  259. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild QUICKSTART=storage
  260. before_install:
  261. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  262. script:
  263. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  264. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=ios
  265. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Storage
  266. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=tvos
  267. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=macos
  268. - stage: test
  269. osx_image: xcode10.3
  270. env:
  271. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild
  272. script:
  273. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=ios
  274. - stage: test
  275. if: type = cron
  276. env:
  277. - PROJECT=StorageCron METHOD=pod-lib-lint
  278. script:
  279. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=ios
  280. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=tvos
  281. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=macos
  282. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=ios
  283. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=tvos
  284. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=macos
  285. - stage: test
  286. env:
  287. - PROJECT=Functions METHOD=pod-lib-lint QUICKSTART=functions
  288. before_install:
  289. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  290. script:
  291. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  292. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Functions
  293. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-libraries
  294. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-modular-headers
  295. - stage: test
  296. osx_image: xcode10.3
  297. env:
  298. - PROJECT=Functions METHOD=pod-lib-lint
  299. before_install:
  300. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  301. script:
  302. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  303. - stage: test
  304. env:
  305. - PROJECT=Crashlytics METHOD=pod-lib-lint QUICKSTART=crashlytics
  306. before_install:
  307. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  308. script:
  309. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec
  310. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Crashlytics
  311. - stage: test
  312. osx_image: xcode10.3
  313. env:
  314. - PROJECT=Crashlytics METHOD=pod-lib-lint
  315. before_install:
  316. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  317. script:
  318. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec
  319. - stage: test
  320. if: type = cron
  321. env:
  322. - PROJECT=CrashlyticsCron METHOD=pod-lib-lint
  323. script:
  324. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --use-libraries
  325. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --use-modular-headers
  326. - stage: test
  327. env:
  328. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild QUICKSTART=InAppMessaging
  329. before_install:
  330. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  331. script:
  332. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  333. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh InAppMessaging
  334. - stage: test
  335. osx_image: xcode10.3
  336. env:
  337. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild
  338. before_install:
  339. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  340. script:
  341. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  342. - stage: test
  343. if: type = cron
  344. env:
  345. - PROJECT=InAppMessaging PLATFORM=iPad METHOD=xcodebuild
  346. before_install:
  347. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  348. script:
  349. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  350. - stage: test
  351. env:
  352. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild QUICKSTART=firestore
  353. before_install:
  354. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  355. script:
  356. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  357. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Firestore
  358. - stage: test
  359. osx_image: xcode10.3
  360. env:
  361. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
  362. before_install:
  363. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  364. script:
  365. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  366. - stage: test
  367. env:
  368. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  369. script:
  370. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec
  371. - stage: test
  372. osx_image: xcode10.3
  373. env:
  374. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  375. script:
  376. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=ios
  377. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=tvos
  378. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=macos
  379. - stage: test
  380. if: type = cron
  381. env:
  382. - PROJECT=GoogleUtilitiesCron METHOD=pod-lib-lint
  383. script:
  384. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=ios
  385. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=tvos
  386. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=macos
  387. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=ios
  388. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=tvos
  389. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=macos
  390. - stage: test
  391. env:
  392. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  393. script:
  394. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  395. - stage: test
  396. osx_image: xcode10.3
  397. env:
  398. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  399. script:
  400. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  401. - stage: test
  402. if: type = cron
  403. env:
  404. - PROJECT=GoogleUtilitiesComponentsCron METHOD=pod-lib-lint
  405. script:
  406. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-libraries
  407. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-modular-headers
  408. - stage: test
  409. env:
  410. - PROJECT=Firebase METHOD=pod-lib-lint
  411. script:
  412. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec
  413. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec
  414. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnosticsInterop.podspec
  415. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec
  416. - stage: test
  417. env:
  418. - PROJECT=Firestore METHOD=pod-lib-lint
  419. script:
  420. # Eliminate the one warning from BoringSSL when CocoaPods 1.6.0 is available.
  421. # The travis_wait is necessary because the command takes more than 10 minutes.
  422. # Some of the Firestore dependencies fail to analyze.
  423. - travis_wait 30 ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFirestore.podspec --platforms=ios --allow-warnings --no-subspecs --no-analyze
  424. # pod lib lint to check build and warnings for static library build - only on cron jobs
  425. - stage: test
  426. if: type = cron
  427. env:
  428. - PROJECT=InAppMessagingCron METHOD=pod-lib-lint
  429. script:
  430. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries
  431. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers
  432. - stage: test
  433. if: type = cron
  434. env:
  435. - PROJECT=Firestore METHOD=pod-lib-lint
  436. script:
  437. # TBD - non-portable path warnings
  438. # The travis_wait is necessary because the command takes more than 10 minutes.
  439. - travis_wait 45 ./scripts/pod_lib_lint.rb FirebaseFirestore.podspec --use-libraries --allow-warnings --no-subspecs --no-analyze
  440. - stage: test
  441. env:
  442. - PROJECT=GoogleDataTransport METHOD=pod-lib-lint
  443. script:
  444. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios
  445. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=macos
  446. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=tvos
  447. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=ios
  448. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=macos
  449. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=tvos
  450. - stage: test
  451. osx_image: xcode10.3
  452. env:
  453. - PROJECT=GoogleDataTransport METHOD=pod-lib-lint
  454. script:
  455. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios
  456. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=ios
  457. - stage: test
  458. if: type = cron
  459. env:
  460. - PROJECT=GoogleDataTransportCron METHOD=pod-lib-lint
  461. script:
  462. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios --use-libraries
  463. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=macos --use-libraries
  464. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=tvos --use-libraries
  465. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios --use-modular-headers
  466. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=macos --use-modular-headers
  467. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=tvos --use-modular-headers
  468. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=ios --use-libraries
  469. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=macos --use-libraries
  470. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=tvos --use-libraries
  471. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=ios --use-modular-headers
  472. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=macos --use-modular-headers
  473. - travis_retry ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=tvos --use-modular-headers
  474. - stage: test
  475. env:
  476. - PROJECT=FirebasePod PLATFORM=iOS METHOD=xcodebuild
  477. before_install:
  478. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  479. script:
  480. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  481. # Daily test for symbol collisions between Firebase and CocoaPods.
  482. - stage: test
  483. if: type = cron
  484. env:
  485. - PROJECT=SymbolCollision PLATFORM=iOS METHOD=xcodebuild
  486. before_install:
  487. - ./scripts/install_prereqs.sh
  488. script:
  489. - travis_retry ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  490. # Alternative platforms
  491. - stage: test
  492. env:
  493. - PROJECT=Firestore PLATFORM=macOS METHOD=cmake
  494. before_install:
  495. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  496. script:
  497. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  498. # Test Firestore on Xcode 8 to use old llvm to ensure C++ portability.
  499. # Disabled while we resolve issues discussed in #4084 and #4085
  500. # - stage: test
  501. # osx_image: xcode8.3
  502. # env:
  503. # - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild XCODE_VERSION=8.3.3
  504. # before_install:
  505. # - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  506. # script:
  507. # - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  508. - stage: test
  509. env:
  510. - PROJECT=Firestore PLATFORM=macOS METHOD=xcodebuild
  511. before_install:
  512. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  513. script:
  514. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  515. - stage: test
  516. env:
  517. - PROJECT=Firestore PLATFORM=tvOS METHOD=xcodebuild
  518. before_install:
  519. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  520. script:
  521. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  522. # Firestore sanitizers
  523. - stage:
  524. env:
  525. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=asan
  526. before_install:
  527. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  528. script:
  529. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  530. - stage: test
  531. env:
  532. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=tsan
  533. before_install:
  534. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  535. script:
  536. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  537. # TODO(varconst): enable UBSan in xcodebuild. Right now if fails during
  538. # linkage (it works if enabled together with ASan, but it's supposed to be
  539. # usable on its own, too).
  540. - stage: test
  541. env:
  542. - PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=asan
  543. before_install:
  544. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  545. script:
  546. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  547. - stage: test
  548. env:
  549. - PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=tsan
  550. before_install:
  551. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  552. script:
  553. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  554. # Validate Cocoapods configurations
  555. # This may take long time, so we would like to run it only once all other tests pass
  556. # Validate Cocoapods 1.7.0 compatibility
  557. - stage: test
  558. if: type = cron
  559. env:
  560. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_frameworks
  561. script:
  562. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  563. - stage: test
  564. if: type = cron
  565. env:
  566. - POD_CONFIG_DIR=Cocoapods1_7_0_frameworks
  567. script:
  568. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  569. - stage: test
  570. if: type = cron
  571. env:
  572. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_staticLibs
  573. script:
  574. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  575. - stage: test
  576. if: type = cron
  577. env:
  578. - POD_CONFIG_DIR=Cocoapods1_7_0_staticLibs
  579. script:
  580. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  581. # Validate Cocoapods 1.6.1 compatibility
  582. - stage: test
  583. if: type = cron
  584. env:
  585. - POD_CONFIG_DIR=Cocoapods1_6_1_frameworks
  586. script:
  587. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  588. - stage: test
  589. if: type = cron
  590. env:
  591. - POD_CONFIG_DIR=Cocoapods1_6_1_staticLibs
  592. script:
  593. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  594. # FIS
  595. - stage: test
  596. env:
  597. - PROJECT=Installations PLATFORM=iOS METHOD=pod-lib-lint
  598. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  599. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  600. - QUICKSTART=installations
  601. before_install:
  602. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  603. script:
  604. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=ios --ignore-local-podspecs=FirebaseInstanceID.podspec
  605. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Installations
  606. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=ios --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  607. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=ios --ignore-local-podspecs=FirebaseInstanceID.podspec
  608. - stage: test
  609. env:
  610. - PROJECT=Installations PLATFORM=macOS METHOD=pod-lib-lint
  611. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  612. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  613. before_install:
  614. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  615. script:
  616. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=macos --ignore-local-podspecs=FirebaseInstanceID.podspec
  617. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=macos --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  618. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=macos --ignore-local-podspecs=FirebaseInstanceID.podspec
  619. - stage: test
  620. env:
  621. - PROJECT=Installations PLATFORM=tvOS METHOD=pod-lib-lint
  622. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  623. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  624. before_install:
  625. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  626. script:
  627. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=tvos --ignore-local-podspecs=FirebaseInstanceID.podspec
  628. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=tvos --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  629. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=tvos --ignore-local-podspecs=FirebaseInstanceID.podspec
  630. allow_failures:
  631. # Run fuzz tests only on cron jobs.
  632. - stage: test
  633. if: type = cron
  634. env:
  635. - PROJECT=Firestore PLATFORM=iOS METHOD=fuzz
  636. before_install:
  637. - ./scripts/install_prereqs.sh
  638. script:
  639. # The travis_wait is necessary because fuzzing runs for 40 minutes.
  640. - travis_wait 45 ./scripts/fuzzing_ci.sh
  641. # TODO(varconst): UBSan for CMake. UBSan failures are non-fatal by default,
  642. # need to make them fatal for the purposes of the test run.
  643. # TODO(varconst): disallow sanitizers to fail once we fix all existing issues.
  644. - env:
  645. - PROJECT=Firestore PLATFORM=macOS METHOD=cmake SANITIZERS=tsan
  646. - env:
  647. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild SANITIZERS=tsan
  648. - env:
  649. - PROJECT=GoogleDataTransportIntegrationTest PLATFORM=iOS METHOD=xcodebuild
  650. # TODO(varconst): enable if it's possible to make this flag work on build
  651. # stages. It's supposed to avoid waiting for jobs that are allowed to fail
  652. # before reporting the results.
  653. # fast_finish: true
  654. branches:
  655. only:
  656. - master