.travis.yml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  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 FirebaseCoreDiagnostics.podspec --platforms=ios
  32. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos
  33. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos
  34. - stage: test
  35. osx_image: xcode10.3
  36. env:
  37. - PROJECT=Core METHOD=pod-lib-lint
  38. script:
  39. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=ios
  40. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  41. - stage: test
  42. if: type = cron
  43. env:
  44. - PROJECT=CoreCron METHOD=pod-lib-lint
  45. script:
  46. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-libraries
  47. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-libraries
  48. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-libraries
  49. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-modular-headers
  50. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-modular-headers
  51. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-modular-headers
  52. - stage: test
  53. env:
  54. - PROJECT=ABTesting METHOD=pod-lib-lint QUICKSTART=abtesting
  55. before_install:
  56. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  57. script:
  58. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios
  59. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh ABTesting
  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.3
  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 QUICKSTART=authentication
  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/test_quickstart.sh Authentication
  88. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos
  89. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos
  90. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  91. - stage: test
  92. osx_image: xcode10.3
  93. env:
  94. - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild
  95. before_install:
  96. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  97. script:
  98. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios
  99. - stage: test
  100. if: type = cron
  101. env:
  102. - PROJECT=AuthCron METHOD=pod-lib-lint
  103. script:
  104. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios --use-libraries
  105. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos --use-libraries
  106. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos --use-libraries
  107. - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios --use-modular-headers
  108. # The tvOS and macOS --use-modular-headers tests do not work on travis, perhaps because of interactive
  109. # keystore validation requirements? See https://travis-ci.org/firebase/firebase-ios-sdk/jobs/578656148
  110. # TODO(paulb777): Retry on next Xcode version update
  111. - stage: test
  112. env:
  113. - PROJECT=InstanceID METHOD=pod-lib-lint
  114. - FIR_IID_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  115. before_install:
  116. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  117. script:
  118. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  119. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos
  120. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos
  121. - stage: test
  122. osx_image: xcode10.3
  123. env:
  124. - PROJECT=InstanceID METHOD=pod-lib-lint
  125. - FIR_IID_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  126. before_install:
  127. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  128. script:
  129. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  130. - stage: test
  131. if: type = cron
  132. env:
  133. - PROJECT=InstanceIDCron 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/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios --use-libraries
  139. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos --use-libraries
  140. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos --use-libraries
  141. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios --use-modular-headers
  142. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=tvos --use-modular-headers
  143. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=macos --use-modular-headers
  144. - stage: test
  145. env:
  146. - PROJECT=Database PLATFORM=all METHOD=xcodebuild QUICKSTART=database
  147. before_install:
  148. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  149. script:
  150. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  151. # The pod lib lint tests are fast enough that it's not worth a separate stage.
  152. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  153. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Database
  154. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=tvos
  155. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=macos
  156. - stage: test
  157. osx_image: xcode10.3
  158. env:
  159. - PROJECT=Database PLATFORM=all METHOD=xcodebuild
  160. before_install:
  161. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  162. script:
  163. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  164. - stage: test
  165. if: type = cron
  166. env:
  167. - PROJECT=DatabaseCron METHOD=pod-lib-lint
  168. script:
  169. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=ios
  170. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=tvos
  171. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-libraries --skip-tests --platforms=macos
  172. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=ios
  173. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=tvos
  174. - travis_retry ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --use-modular-headers --skip-tests --platforms=macos
  175. - stage: test
  176. env:
  177. - PROJECT=DynamicLinks METHOD=pod-lib-lint QUICKSTART=dynamiclinks
  178. before_install:
  179. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  180. script:
  181. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh DynamicLinks
  182. - stage: test
  183. osx_image: xcode10.3
  184. env:
  185. - PROJECT=DynamicLinks METHOD=pod-lib-lint
  186. script:
  187. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec
  188. - stage: test
  189. env:
  190. - PROJECT=Messaging METHOD=pod-lib-lint QUICKSTART=messaging
  191. before_install:
  192. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  193. script:
  194. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  195. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Messaging
  196. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos
  197. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos
  198. - stage: test
  199. osx_image: xcode10.3
  200. env:
  201. - PROJECT=Messaging METHOD=pod-lib-lint
  202. script:
  203. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  204. - stage: test
  205. if: type = cron
  206. env:
  207. - PROJECT=MessagingCron METHOD=pod-lib-lint
  208. script:
  209. # FirebaseMessaging includes Swift unit tests so it is not testable with --use-libraries.
  210. # TODO(paulb777): Migrate FirebaseMessaging to pod gen driven tests with a separate test
  211. # target for Swift.
  212. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios --use-libraries --skip-tests
  213. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos --use-libraries --skip-tests
  214. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos --use-libraries --skip-tests
  215. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios --use-modular-headers
  216. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=tvos --use-modular-headers
  217. - travis_retry ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=macos --use-modular-headers
  218. - stage: test
  219. env:
  220. - PROJECT=RemoteConfig METHOD=pod-lib-lint QUICKSTART=config
  221. before_install:
  222. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  223. script:
  224. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios
  225. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Config
  226. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=tvos
  227. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=macos
  228. - stage: test
  229. osx_image: xcode10.3
  230. env:
  231. - PROJECT=RemoteConfig METHOD=pod-lib-lint
  232. script:
  233. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios
  234. - stage: test
  235. if: type = cron
  236. env:
  237. - PROJECT=RemoteConfigCron METHOD=pod-lib-lint
  238. script:
  239. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=ios
  240. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=tvos
  241. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --platforms=macos
  242. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=ios
  243. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=tvos
  244. - travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=macos
  245. - stage: test
  246. env:
  247. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild QUICKSTART=storage
  248. before_install:
  249. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  250. script:
  251. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Storage
  252. - stage: test
  253. osx_image: xcode10.3
  254. env:
  255. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild
  256. script:
  257. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=ios
  258. - stage: test
  259. if: type = cron
  260. env:
  261. - PROJECT=StorageCron METHOD=pod-lib-lint
  262. script:
  263. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=ios
  264. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=tvos
  265. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-libraries --skip-tests --platforms=macos
  266. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=ios
  267. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=tvos
  268. - travis_retry ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --use-modular-headers --skip-tests --platforms=macos
  269. - stage: test
  270. env:
  271. - PROJECT=Functions METHOD=pod-lib-lint QUICKSTART=functions
  272. before_install:
  273. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  274. script:
  275. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  276. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Functions
  277. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-libraries
  278. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-modular-headers
  279. - stage: test
  280. osx_image: xcode10.3
  281. env:
  282. - PROJECT=Functions METHOD=pod-lib-lint
  283. before_install:
  284. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  285. script:
  286. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  287. - stage: test
  288. env:
  289. #TODO(#4729) Restore quickstart testing.
  290. # - PROJECT=Crashlytics METHOD=pod-lib-lint QUICKSTART=crashlytics
  291. - PROJECT=Crashlytics METHOD=pod-lib-lint
  292. script:
  293. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec
  294. # - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Crashlytics
  295. - stage: test
  296. osx_image: xcode10.3
  297. env:
  298. - PROJECT=Crashlytics METHOD=pod-lib-lint
  299. script:
  300. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec
  301. - stage: test
  302. if: type = cron
  303. env:
  304. - PROJECT=CrashlyticsCron METHOD=pod-lib-lint
  305. script:
  306. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --use-libraries
  307. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --use-modular-headers
  308. - stage: test
  309. env:
  310. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild QUICKSTART=InAppMessaging
  311. before_install:
  312. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  313. script:
  314. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  315. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh InAppMessaging
  316. - stage: test
  317. osx_image: xcode10.3
  318. env:
  319. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild
  320. before_install:
  321. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  322. script:
  323. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  324. - stage: test
  325. if: type = cron
  326. env:
  327. - PROJECT=InAppMessaging PLATFORM=iPad METHOD=xcodebuild
  328. before_install:
  329. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  330. script:
  331. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  332. - stage: test
  333. env:
  334. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild QUICKSTART=firestore
  335. before_install:
  336. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  337. script:
  338. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  339. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Firestore
  340. - stage: test
  341. osx_image: xcode10.3
  342. env:
  343. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
  344. before_install:
  345. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  346. script:
  347. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  348. - stage: test
  349. env:
  350. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  351. script:
  352. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec
  353. - stage: test
  354. osx_image: xcode10.3
  355. env:
  356. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  357. script:
  358. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=ios
  359. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=tvos
  360. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=macos
  361. - stage: test
  362. if: type = cron
  363. env:
  364. - PROJECT=GoogleUtilitiesCron METHOD=pod-lib-lint
  365. script:
  366. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=ios
  367. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=tvos
  368. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=macos
  369. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=ios
  370. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=tvos
  371. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=macos
  372. - stage: test
  373. env:
  374. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  375. script:
  376. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  377. - stage: test
  378. osx_image: xcode10.3
  379. env:
  380. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  381. script:
  382. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  383. - stage: test
  384. if: type = cron
  385. env:
  386. - PROJECT=GoogleUtilitiesComponentsCron METHOD=pod-lib-lint
  387. script:
  388. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-libraries
  389. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-modular-headers
  390. - stage: test
  391. env:
  392. - PROJECT=Firebase METHOD=pod-lib-lint
  393. script:
  394. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec
  395. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec
  396. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnosticsInterop.podspec
  397. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec
  398. # pod lib lint to check build and warnings for static library build - only on cron jobs
  399. - stage: test
  400. if: type = cron
  401. env:
  402. - PROJECT=InAppMessagingCron METHOD=pod-lib-lint
  403. script:
  404. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries
  405. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers
  406. - stage: test
  407. osx_image: xcode10.3
  408. env:
  409. - PROJECT=GoogleDataTransport METHOD=pod-lib-lint
  410. script:
  411. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios
  412. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransportCCTSupport.podspec --platforms=ios
  413. - stage: test
  414. env:
  415. - PROJECT=FirebasePod PLATFORM=iOS METHOD=xcodebuild
  416. before_install:
  417. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  418. script:
  419. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  420. # Daily test for symbol collisions between Firebase and CocoaPods.
  421. - stage: test
  422. if: type = cron
  423. env:
  424. - PROJECT=SymbolCollision PLATFORM=iOS METHOD=xcodebuild
  425. before_install:
  426. - ./scripts/install_prereqs.sh
  427. script:
  428. - travis_retry ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  429. # Validate Cocoapods configurations
  430. # This may take long time, so we would like to run it only once all other tests pass
  431. # Validate Cocoapods 1.7.0 compatibility
  432. - stage: test
  433. if: type = cron
  434. env:
  435. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_frameworks
  436. script:
  437. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  438. - stage: test
  439. if: type = cron
  440. env:
  441. - POD_CONFIG_DIR=Cocoapods1_7_0_frameworks
  442. script:
  443. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  444. - stage: test
  445. if: type = cron
  446. env:
  447. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_staticLibs
  448. script:
  449. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  450. - stage: test
  451. if: type = cron
  452. env:
  453. - POD_CONFIG_DIR=Cocoapods1_7_0_staticLibs
  454. script:
  455. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  456. # Validate Cocoapods 1.6.1 compatibility
  457. - stage: test
  458. if: type = cron
  459. env:
  460. - POD_CONFIG_DIR=Cocoapods1_6_1_frameworks
  461. script:
  462. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  463. - stage: test
  464. if: type = cron
  465. env:
  466. - POD_CONFIG_DIR=Cocoapods1_6_1_staticLibs
  467. script:
  468. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  469. # FIS
  470. - stage: test
  471. env:
  472. - PROJECT=Installations PLATFORM=iOS METHOD=pod-lib-lint
  473. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  474. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  475. - QUICKSTART=installations
  476. before_install:
  477. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  478. script:
  479. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=ios --ignore-local-podspecs=FirebaseInstanceID.podspec
  480. - travis_retry ./scripts/if_changed.sh ./scripts/test_quickstart.sh Installations
  481. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=ios --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  482. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=ios --ignore-local-podspecs=FirebaseInstanceID.podspec
  483. - stage: test
  484. env:
  485. - PROJECT=Installations PLATFORM=macOS METHOD=pod-lib-lint
  486. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  487. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  488. before_install:
  489. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  490. script:
  491. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=macos --ignore-local-podspecs=FirebaseInstanceID.podspec
  492. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=macos --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  493. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=macos --ignore-local-podspecs=FirebaseInstanceID.podspec
  494. - stage: test
  495. env:
  496. - PROJECT=Installations PLATFORM=tvOS METHOD=pod-lib-lint
  497. - FIS_ALLOWS_INCOMPATIBLE_IID_VERSION=1
  498. - FIS_INTEGRATION_TESTS_REQUIRED=$(if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then echo "1"; else echo "0"; fi)
  499. before_install:
  500. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  501. script:
  502. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=tvos --ignore-local-podspecs=FirebaseInstanceID.podspec
  503. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --platforms=tvos --use-libraries --ignore-local-podspecs=FirebaseInstanceID.podspec
  504. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstallations.podspec --use-modular-headers --platforms=tvos --ignore-local-podspecs=FirebaseInstanceID.podspec
  505. allow_failures:
  506. # Run fuzz tests only on cron jobs.
  507. - stage: test
  508. if: type = cron
  509. env:
  510. - PROJECT=Firestore PLATFORM=iOS METHOD=fuzz
  511. before_install:
  512. - ./scripts/install_prereqs.sh
  513. script:
  514. # The travis_wait is necessary because fuzzing runs for 40 minutes.
  515. - travis_wait 45 ./scripts/fuzzing_ci.sh
  516. branches:
  517. only:
  518. - master