.travis.yml 32 KB

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