.travis.yml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. env:
  25. - PROJECT=Core METHOD=pod-lib-lint
  26. script:
  27. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --skip-tests --platforms=ios
  28. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios
  29. - stage: test
  30. if: type = cron
  31. env:
  32. - PROJECT=CoreCron METHOD=pod-lib-lint
  33. script:
  34. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-libraries
  35. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-libraries
  36. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-libraries
  37. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=ios --use-modular-headers
  38. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=tvos --use-modular-headers
  39. - travis_retry ./scripts/pod_lib_lint.rb FirebaseCoreDiagnostics.podspec --platforms=macos --use-modular-headers
  40. - stage: test
  41. env:
  42. - PROJECT=ABTesting METHOD=pod-lib-lint
  43. script:
  44. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=ios
  45. - stage: test
  46. env:
  47. - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild
  48. script:
  49. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios
  50. - stage: test
  51. env:
  52. - PROJECT=InstanceID METHOD=pod-lib-lint
  53. script:
  54. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --platforms=ios
  55. - stage: test
  56. env:
  57. - PROJECT=Database PLATFORM=all METHOD=xcodebuild
  58. script:
  59. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDatabase.podspec --skip-tests --platforms=ios
  60. - stage: test
  61. env:
  62. - PROJECT=DynamicLinks METHOD=pod-lib-lint
  63. script:
  64. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseDynamicLinks.podspec
  65. - stage: test
  66. env:
  67. - PROJECT=Messaging METHOD=pod-lib-lint
  68. script:
  69. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec --platforms=ios
  70. - stage: test
  71. env:
  72. - PROJECT=RemoteConfig METHOD=pod-lib-lint
  73. script:
  74. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios --skip-tests
  75. - stage: test
  76. env:
  77. - PROJECT=Storage PLATFORM=all METHOD=xcodebuild
  78. script:
  79. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseStorage.podspec --skip-tests --platforms=ios
  80. - stage: test
  81. env:
  82. - PROJECT=Functions METHOD=pod-lib-lint
  83. before_install:
  84. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh # Start integration test server
  85. script:
  86. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseFunctions.podspec
  87. - stage: test
  88. env:
  89. - PROJECT=Crashlytics METHOD=pod-lib-lint
  90. script:
  91. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --platforms=ios
  92. - stage: test
  93. env:
  94. - PROJECT=InAppMessaging 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/build.sh $PROJECT $PLATFORM
  99. - stage: test
  100. if: type = cron
  101. env:
  102. - PROJECT=InAppMessaging PLATFORM=iPad METHOD=xcodebuild
  103. before_install:
  104. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  105. script:
  106. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
  107. - stage: test
  108. env:
  109. - PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
  110. before_install:
  111. - ./scripts/if_changed.sh ./scripts/install_prereqs.sh
  112. script:
  113. - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
  114. - stage: test
  115. env:
  116. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  117. script:
  118. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec
  119. - stage: test
  120. env:
  121. - PROJECT=GoogleUtilities METHOD=pod-lib-lint
  122. script:
  123. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=ios
  124. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=tvos
  125. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --platforms=macos
  126. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-static-frameworks --platforms=ios
  127. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-static-frameworks --platforms=tvos
  128. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-static-frameworks --platforms=macos
  129. - stage: test
  130. if: type = cron
  131. env:
  132. - PROJECT=GoogleUtilitiesCron METHOD=pod-lib-lint
  133. script:
  134. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=ios --skip-tests
  135. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=tvos --skip-tests
  136. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries --platforms=macos --skip-tests
  137. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=ios
  138. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=tvos
  139. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers --platforms=macos
  140. - stage: test
  141. env:
  142. - PROJECT=GoogleUtilitiesComponents METHOD=pod-lib-lint
  143. script:
  144. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec
  145. - stage: test
  146. if: type = cron
  147. env:
  148. - PROJECT=GoogleUtilitiesComponentsCron METHOD=pod-lib-lint
  149. script:
  150. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-libraries
  151. - travis_retry ./scripts/pod_lib_lint.rb GoogleUtilitiesComponents.podspec --use-modular-headers
  152. - stage: test
  153. env:
  154. - PROJECT=Firebase METHOD=pod-lib-lint
  155. script:
  156. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec
  157. - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-static-frameworks
  158. # pod lib lint to check build and warnings for static library build - only on cron jobs
  159. - stage: test
  160. if: type = cron
  161. env:
  162. - PROJECT=InAppMessagingCron METHOD=pod-lib-lint
  163. script:
  164. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries
  165. - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers
  166. # Validate Cocoapods configurations
  167. # This may take long time, so we would like to run it only once all other tests pass
  168. - stage: test
  169. if: type = cron
  170. env:
  171. - POD_CONFIG_DIR=Cocoapods_multiprojects_frameworks
  172. script:
  173. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  174. - stage: test
  175. if: type = cron
  176. env:
  177. - POD_CONFIG_DIR=Cocoapods_multiprojects_staticLibs
  178. script:
  179. - travis_retry ./CocoapodsIntegrationTest/scripts/build_with_environment.sh --gemfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Gemfile --podfile=./CocoapodsIntegrationTest/TestEnvironments/${POD_CONFIG_DIR}/Podfile
  180. allow_failures:
  181. # Run fuzz tests only on cron jobs.
  182. - stage: test
  183. # if: type = cron
  184. env:
  185. - PROJECT=Firestore PLATFORM=iOS METHOD=fuzz
  186. before_install:
  187. - ./scripts/install_prereqs.sh
  188. script:
  189. # The travis_wait is necessary because fuzzing runs for 40 minutes.
  190. - travis_wait 45 ./scripts/fuzzing_ci.sh
  191. branches:
  192. only:
  193. - master