.travis.yml 35 KB

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