.travis.yml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. os: osx
  2. osx_image: xcode11
  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. - test
  12. jobs:
  13. include:
  14. # The order of builds matters (even though they are run in parallel):
  15. # Travis will schedule them in the same order they are listed here.
  16. - stage: test
  17. env:
  18. - PROJECT=Core METHOD=pod-lib-lint
  19. script:
  20. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  21. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos
  22. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos
  23. - stage: test
  24. osx_image: xcode10.3
  25. env:
  26. - PROJECT=Core METHOD=pod-lib-lint
  27. script:
  28. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --skip-tests --platforms=ios
  29. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  30. - stage: test
  31. if: type = cron
  32. env:
  33. - PROJECT=CoreCron METHOD=pod-lib-lint
  34. script:
  35. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-libraries
  36. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-libraries
  37. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-libraries
  38. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-modular-headers
  39. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-modular-headers
  40. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-modular-headers
  41. - stage: test
  42. osx_image: xcode10.3
  43. env:
  44. - PROJECT=ABTesting METHOD=pod-lib-lint
  45. script:
  46. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios
  47. - stage: test
  48. osx_image: xcode10.3
  49. env:
  50. - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild
  51. script:
  52. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios
  53. - stage: test
  54. osx_image: xcode10.3
  55. env:
  56. - PROJECT=InstanceID METHOD=pod-lib-lint
  57. script:
  58. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  59. - stage: test
  60. osx_image: xcode10.3
  61. env:
  62. - PROJECT=Database PLATFORM=all METHOD=xcodebuild
  63. script:
  64. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  65. - stage: test
  66. osx_image: xcode10.3
  67. env:
  68. - PROJECT=DynamicLinks METHOD=pod-lib-lint
  69. script:
  70. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec
  71. - stage: test
  72. osx_image: xcode10.3
  73. env:
  74. - PROJECT=Messaging METHOD=pod-lib-lint
  75. script:
  76. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  77. - stage: test
  78. osx_image: xcode10.3
  79. env:
  80. - PROJECT=RemoteConfig METHOD=pod-lib-lint
  81. script:
  82. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios --skip-tests
  83. - stage: test
  84. osx_image: xcode10.3
  85. env:
  86. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild
  87. script:
  88. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=ios
  89. - stage: test
  90. env:
  91. - PROJECT=Functions METHOD=pod-lib-lint
  92. before_install:
  93. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  94. script:
  95. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  96. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-libraries
  97. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec --use-modular-headers
  98. - stage: test
  99. osx_image: xcode10.3
  100. env:
  101. - PROJECT=Functions METHOD=pod-lib-lint
  102. before_install:
  103. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  104. script:
  105. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  106. - stage: test
  107. osx_image: xcode10.3
  108. env:
  109. - PROJECT=Crashlytics METHOD=pod-lib-lint
  110. script:
  111. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec
  112. - stage: test
  113. env:
  114. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild
  115. before_install:
  116. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  117. script:
  118. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  119. - stage: test
  120. osx_image: xcode10.3
  121. env:
  122. - PROJECT=InAppMessaging PLATFORM=iOS METHOD=xcodebuild
  123. before_install:
  124. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  125. script:
  126. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  127. - stage: test
  128. if: type = cron
  129. env:
  130. - PROJECT=InAppMessaging PLATFORM=iPad METHOD=xcodebuild
  131. before_install:
  132. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  133. script:
  134. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  135. - stage: test
  136. osx_image: xcode10.3
  137. env:
  138. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
  139. before_install:
  140. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  141. script:
  142. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  143. - stage: test
  144. env:
  145. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  146. script:
  147. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec
  148. - stage: test
  149. osx_image: xcode10.3
  150. env:
  151. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  152. script:
  153. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=ios
  154. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=tvos
  155. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=macos
  156. - stage: test
  157. if: type = cron
  158. env:
  159. - PROJECT=GoogleUtilitiesCron METHOD=pod-lib-lint
  160. script:
  161. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=ios
  162. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=tvos
  163. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=macos
  164. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=ios
  165. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=tvos
  166. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=macos
  167. - stage: test
  168. env:
  169. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  170. script:
  171. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  172. - stage: test
  173. osx_image: xcode10.3
  174. env:
  175. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  176. script:
  177. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  178. - stage: test
  179. if: type = cron
  180. env:
  181. - PROJECT=GoogleUtilitiesComponentsCron METHOD=pod-lib-lint
  182. script:
  183. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-libraries
  184. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-modular-headers
  185. - stage: test
  186. env:
  187. - PROJECT=Firebase METHOD=pod-lib-lint
  188. script:
  189. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec
  190. # pod lib lint to check build and warnings for static library build - only on cron jobs
  191. - stage: test
  192. if: type = cron
  193. env:
  194. - PROJECT=InAppMessagingCron METHOD=pod-lib-lint
  195. script:
  196. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries
  197. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers
  198. - stage: test
  199. osx_image: xcode10.3
  200. env:
  201. - PROJECT=GoogleDataTransport METHOD=pod-lib-lint
  202. script:
  203. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleDataTransport.podspec --platforms=ios
  204. # Validate Cocoapods configurations
  205. # This may take long time, so we would like to run it only once all other tests pass
  206. # Validate Cocoapods 1.7.0 compatibility
  207. - stage: test
  208. if: type = cron
  209. env:
  210. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_frameworks
  211. script:
  212. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  213. - stage: test
  214. if: type = cron
  215. env:
  216. - POD_CONFIG_DIR=Cocoapods1_7_0_frameworks
  217. script:
  218. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  219. - stage: test
  220. if: type = cron
  221. env:
  222. - POD_CONFIG_DIR=Cocoapods1_7_0_multiprojects_staticLibs
  223. script:
  224. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  225. - stage: test
  226. if: type = cron
  227. env:
  228. - POD_CONFIG_DIR=Cocoapods1_7_0_staticLibs
  229. script:
  230. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  231. # Validate Cocoapods 1.6.1 compatibility
  232. - stage: test
  233. if: type = cron
  234. env:
  235. - POD_CONFIG_DIR=Cocoapods1_6_1_frameworks
  236. script:
  237. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  238. - stage: test
  239. if: type = cron
  240. env:
  241. - POD_CONFIG_DIR=Cocoapods1_6_1_staticLibs
  242. script:
  243. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  244. allow_failures:
  245. # Run fuzz tests only on cron jobs.
  246. - stage: test
  247. if: type = cron
  248. env:
  249. - PROJECT=Firestore PLATFORM=iOS METHOD=fuzz
  250. before_install:
  251. - ./scripts/install_prereqs.sh
  252. script:
  253. # The travis_wait is necessary because fuzzing runs for 40 minutes.
  254. - travis_wait 45 ./scripts/fuzzing_ci.sh
  255. branches:
  256. only:
  257. - master