zip.yml 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. name: zip
  2. on:
  3. pull_request:
  4. paths:
  5. - 'ReleaseTooling/Sources/**'
  6. - '.github/workflows/zip.yml'
  7. - 'scripts/build_non_firebase_sdks.sh'
  8. - 'scripts/build_zip.sh'
  9. - 'scripts/setup_quickstart_framework.sh'
  10. - 'Gemfile*'
  11. # Don't run based on any markdown only changes.
  12. - '!ReleaseTooling/*.md'
  13. schedule:
  14. # Run every day at 9pm (PDT) / 12am (EDT) - cron uses UTC times
  15. - cron: '0 4 * * *'
  16. workflow_dispatch:
  17. inputs:
  18. custom_spec_repos:
  19. description: 'Custom Podspec repos'
  20. required: true
  21. default: 'https://github.com/firebase/SpecsStaging.git'
  22. concurrency:
  23. group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  24. cancel-in-progress: true
  25. jobs:
  26. package-release:
  27. # Don't run on private repo.
  28. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  29. runs-on: macos-14
  30. steps:
  31. - uses: actions/checkout@v4
  32. - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
  33. with:
  34. cache_key: package-release
  35. - name: Xcode 16.2
  36. run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
  37. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  38. - name: Setup Bundler
  39. run: ./scripts/setup_bundler.sh
  40. - name: ZipBuildingTest
  41. run: |
  42. mkdir -p release_zip_dir
  43. sh -x scripts/build_zip.sh release_zip_dir \
  44. "${{ github.event.inputs.custom_spec_repos || 'https://github.com/firebase/SpecsStaging.git' }}" \
  45. build-release \
  46. static
  47. - uses: actions/upload-artifact@v4
  48. with:
  49. name: Firebase-release-zip-zip
  50. # Zip the entire output directory since the builder adds subdirectories we don't know the
  51. # name of.
  52. path: release_zip_dir
  53. build:
  54. # Don't run on private repo unless it is a PR.
  55. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  56. runs-on: macos-14
  57. steps:
  58. - uses: actions/checkout@v4
  59. - name: Xcode 16.2
  60. run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
  61. - name: Build
  62. run: |
  63. cd ReleaseTooling
  64. swift build -v
  65. package-head:
  66. # Don't run on private repo.
  67. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  68. needs: build
  69. strategy:
  70. matrix:
  71. linking_type: [static, dynamic]
  72. runs-on: macos-14
  73. steps:
  74. - uses: actions/checkout@v4
  75. - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
  76. with:
  77. cache_key: package-head
  78. - name: Xcode 16.2
  79. run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
  80. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  81. - name: Setup Bundler
  82. run: ./scripts/setup_bundler.sh
  83. - name: ZipBuildingTest
  84. run: |
  85. mkdir -p zip_output_dir
  86. sh -x scripts/build_zip.sh \
  87. zip_output_dir "${{ github.event.inputs.custom_spec_repos || 'https://github.com/firebase/SpecsStaging.git,https://github.com/firebase/SpecsDev.git' }}" \
  88. build-head \
  89. ${{ matrix.linking_type }}
  90. - uses: actions/upload-artifact@v4
  91. if: ${{ always() }}
  92. with:
  93. name: ${{ matrix.linking_type == 'static' && 'Firebase-actions-dir' || 'Firebase-actions-dir-dynamic' }}
  94. # Zip the entire output directory since the builder adds subdirectories we don't know the
  95. # name of.
  96. path: zip_output_dir
  97. quickstart_framework_abtesting:
  98. # Don't run on private repo.
  99. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  100. needs: package-head
  101. env:
  102. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  103. SDK: "ABTesting"
  104. strategy:
  105. matrix:
  106. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  107. build-env:
  108. - os: macos-15
  109. xcode: Xcode_16.4
  110. runs-on: ${{ matrix.build-env.os }}
  111. steps:
  112. - uses: actions/checkout@v4
  113. - name: Get framework dir
  114. uses: actions/download-artifact@v4.1.7
  115. with:
  116. name: ${{ matrix.artifact }}
  117. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  118. - name: Xcode
  119. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  120. - name: Setup Bundler
  121. run: ./scripts/setup_bundler.sh
  122. - name: Move frameworks
  123. run: |
  124. mkdir -p "${HOME}"/ios_frameworks/
  125. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  126. - uses: actions/checkout@v4
  127. - name: Setup quickstart
  128. env:
  129. LEGACY: true
  130. run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  131. "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \
  132. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \
  133. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \
  134. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \
  135. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \
  136. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework
  137. - name: Install Secret GoogleService-Info.plist
  138. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \
  139. quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret"
  140. - name: Test Quickstart
  141. env:
  142. LEGACY: true
  143. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  144. - name: Remove data before upload
  145. env:
  146. LEGACY: true
  147. if: ${{ failure() }}
  148. run: scripts/remove_data.sh abtesting
  149. - uses: actions/upload-artifact@v4
  150. if: ${{ failure() }}
  151. with:
  152. name: quickstart_artifacts_abtesting
  153. path: quickstart-ios/
  154. quickstart_framework_auth:
  155. # Don't run on private repo.
  156. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  157. needs: package-head
  158. env:
  159. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  160. SDK: "Authentication"
  161. strategy:
  162. matrix:
  163. os: [macos-15]
  164. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  165. include:
  166. - os: macos-15
  167. xcode: Xcode_16.4
  168. runs-on: ${{ matrix.os }}
  169. steps:
  170. - uses: actions/checkout@v4
  171. - name: Get framework dir
  172. uses: actions/download-artifact@v4.1.7
  173. with:
  174. name: ${{ matrix.artifact }}
  175. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  176. - name: Xcode
  177. run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
  178. - name: Setup Bundler
  179. run: ./scripts/setup_bundler.sh
  180. - name: Move frameworks
  181. run: |
  182. mkdir -p "${HOME}"/ios_frameworks/
  183. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  184. - name: Setup Swift Quickstart
  185. run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \
  186. "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \
  187. "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \
  188. "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \
  189. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  190. - name: Install Secret GoogleService-Info.plist
  191. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \
  192. quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret"
  193. - name: Test Swift Quickstart
  194. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  195. - name: Remove data before upload
  196. if: ${{ failure() }}
  197. run: scripts/remove_data.sh authentiation
  198. - uses: actions/upload-artifact@v4
  199. if: ${{ failure() }}
  200. with:
  201. name: quickstart_artifacts_auth
  202. path: quickstart-ios/
  203. quickstart_framework_config:
  204. # Don't run on private repo.
  205. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  206. needs: package-head
  207. env:
  208. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  209. SDK: "Config"
  210. strategy:
  211. matrix:
  212. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  213. build-env:
  214. - os: macos-15
  215. xcode: Xcode_16.4
  216. runs-on: ${{ matrix.build-env.os }}
  217. steps:
  218. - uses: actions/checkout@v4
  219. - name: Get framework dir
  220. uses: actions/download-artifact@v4.1.7
  221. with:
  222. name: ${{ matrix.artifact }}
  223. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  224. - name: Xcode
  225. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  226. - name: Setup Bundler
  227. run: ./scripts/setup_bundler.sh
  228. - name: Move frameworks
  229. run: |
  230. mkdir -p "${HOME}"/ios_frameworks/
  231. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  232. - name: Setup Swift Quickstart
  233. run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  234. "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \
  235. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  236. - name: Install Secret GoogleService-Info.plist
  237. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \
  238. quickstart-ios/config/GoogleService-Info.plist "$plist_secret"
  239. - name: Test Swift Quickstart
  240. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  241. - name: Remove data before upload
  242. if: ${{ failure() }}
  243. run: scripts/remove_data.sh config
  244. - uses: actions/upload-artifact@v4
  245. if: ${{ failure() }}
  246. with:
  247. name: quickstart_artifacts_config
  248. path: quickstart-ios/
  249. quickstart_framework_crashlytics:
  250. # Don't run on private repo.
  251. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  252. needs: package-head
  253. env:
  254. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  255. SDK: "Crashlytics"
  256. strategy:
  257. matrix:
  258. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  259. build-env:
  260. - os: macos-15
  261. xcode: Xcode_16.4
  262. runs-on: ${{ matrix.build-env.os }}
  263. steps:
  264. - uses: actions/checkout@v4
  265. - name: Get framework dir
  266. uses: actions/download-artifact@v4.1.7
  267. with:
  268. name: ${{ matrix.artifact }}
  269. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  270. - name: Xcode
  271. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  272. - name: Setup Bundler
  273. run: ./scripts/setup_bundler.sh
  274. - name: Move frameworks
  275. run: |
  276. mkdir -p "${HOME}"/ios_frameworks/
  277. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  278. - uses: actions/checkout@v4
  279. - name: Setup quickstart
  280. env:
  281. LEGACY: true
  282. run: |
  283. SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  284. "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \
  285. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  286. cp quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Firebase/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart
  287. cp quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Firebase/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart
  288. chmod +x quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/run
  289. chmod +x quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/upload-symbols
  290. # TODO(#8057): Restore Swift Quickstart
  291. # - name: Setup swift quickstart
  292. # env:
  293. # LEGACY: true
  294. # run: |
  295. # SAMPLE="$SDK" TARGET="${SDK}ExampleSwift" NON_FIREBASE_SDKS="ReachabilitySwift" scripts/setup_quickstart_framework.sh \
  296. # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/*
  297. - name: Install Secret GoogleService-Info.plist
  298. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \
  299. quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret"
  300. - name: Test Quickstart
  301. env:
  302. LEGACY: true
  303. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  304. # TODO(#8057): Restore Swift Quickstart
  305. # - name: Test Swift Quickstart
  306. # env:
  307. # LEGACY: true
  308. # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}" swift)
  309. - name: Remove data before upload
  310. env:
  311. LEGACY: true
  312. if: ${{ failure() }}
  313. run: scripts/remove_data.sh crashlytics
  314. - uses: actions/upload-artifact@v4
  315. if: ${{ failure() }}
  316. with:
  317. name: quickstart_artifacts_crashlytics
  318. path: quickstart-ios/
  319. quickstart_framework_database:
  320. # Don't run on private repo.
  321. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  322. needs: package-head
  323. env:
  324. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  325. SDK: "Database"
  326. strategy:
  327. matrix:
  328. os: [macos-14]
  329. xcode: [Xcode_16.2]
  330. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  331. runs-on: ${{ matrix.os }}
  332. steps:
  333. - uses: actions/checkout@v4
  334. - name: Get framework dir
  335. uses: actions/download-artifact@v4.1.7
  336. with:
  337. name: ${{ matrix.artifact }}
  338. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  339. - name: Xcode
  340. run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
  341. - name: Setup Bundler
  342. run: ./scripts/setup_bundler.sh
  343. - name: Move frameworks
  344. run: |
  345. mkdir -p "${HOME}"/ios_frameworks/
  346. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  347. - uses: actions/checkout@v4
  348. - name: Setup quickstart
  349. run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \
  350. "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \
  351. "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \
  352. "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \
  353. "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \
  354. "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \
  355. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  356. - name: Install Secret GoogleService-Info.plist
  357. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-database.plist.gpg \
  358. quickstart-ios/database/GoogleService-Info.plist "$plist_secret"
  359. - name: Test Quickstart
  360. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  361. - name: Remove data before upload
  362. if: ${{ failure() }}
  363. run: scripts/remove_data.sh database
  364. - uses: actions/upload-artifact@v4
  365. if: ${{ failure() }}
  366. with:
  367. name: quickstart_artifacts database
  368. path: quickstart-ios/
  369. quickstart_framework_firestore:
  370. # Don't run on private repo.
  371. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  372. needs: package-head
  373. env:
  374. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  375. SDK: "Firestore"
  376. strategy:
  377. matrix:
  378. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  379. build-env:
  380. - os: macos-15
  381. xcode: Xcode_16.4
  382. runs-on: ${{ matrix.build-env.os }}
  383. steps:
  384. - uses: actions/checkout@v4
  385. - name: Get framework dir
  386. uses: actions/download-artifact@v4.1.7
  387. with:
  388. name: ${{ matrix.artifact }}
  389. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  390. - name: Xcode
  391. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  392. - name: Setup Bundler
  393. run: ./scripts/setup_bundler.sh
  394. - name: Move frameworks
  395. run: |
  396. mkdir -p "${HOME}"/ios_frameworks/
  397. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  398. - uses: actions/checkout@v4
  399. - name: Setup quickstart
  400. run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \
  401. "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \
  402. "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \
  403. "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \
  404. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  405. - name: Upload build logs on failure
  406. if: ${{ failure() }}
  407. uses: actions/upload-artifact@v4
  408. with:
  409. name: build_logs_firestore_${{ matrix.artifact }}_${{ matrix.build-env.os }}
  410. path: sdk_zip/build_logs/
  411. - name: Install Secret GoogleService-Info.plist
  412. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \
  413. quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret"
  414. - name: Test Quickstart
  415. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  416. - name: Remove data before upload and zip directory to reduce upload size.
  417. if: ${{ failure() }}
  418. run: scripts/remove_data.sh firestore; zip -r --symlinks quickstart_artifacts_firestore.zip quickstart-ios/
  419. - uses: actions/upload-artifact@v4
  420. if: ${{ failure() }}
  421. with:
  422. name: quickstart_artifacts_firestore_${{ matrix.artifact }}_${{ matrix.build-env.os }}
  423. path: quickstart_artifacts_firestore.zip
  424. check_framework_firestore_symbols:
  425. # Don't run on private repo.
  426. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  427. needs: package-head
  428. env:
  429. FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1
  430. runs-on: macos-14
  431. steps:
  432. - name: Xcode 16.2
  433. run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
  434. - uses: actions/checkout@v4
  435. - name: Get framework dir
  436. uses: actions/download-artifact@v4.1.7
  437. with:
  438. name: Firebase-actions-dir
  439. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  440. - name: Setup Bundler
  441. run: ./scripts/setup_bundler.sh
  442. - name: Install xcpretty
  443. run: gem install xcpretty
  444. - name: Move frameworks
  445. run: |
  446. mkdir -p "${HOME}"/ios_frameworks/
  447. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  448. - uses: actions/checkout@v4
  449. - name: Check linked Firestore.xcframework for unlinked symbols.
  450. run: |
  451. scripts/check_firestore_symbols.sh \
  452. $(pwd) \
  453. "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework
  454. quickstart_framework_inappmessaging:
  455. # Don't run on private repo.
  456. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  457. needs: package-head
  458. env:
  459. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  460. SDK: "InAppMessaging"
  461. strategy:
  462. matrix:
  463. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  464. build-env:
  465. - os: macos-15
  466. xcode: Xcode_16.4
  467. runs-on: ${{ matrix.build-env.os }}
  468. steps:
  469. - uses: actions/checkout@v4
  470. - name: Get framework dir
  471. uses: actions/download-artifact@v4.1.7
  472. with:
  473. name: ${{ matrix.artifact }}
  474. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  475. - name: Xcode
  476. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  477. - name: Setup Bundler
  478. run: ./scripts/setup_bundler.sh
  479. - name: Move frameworks
  480. run: |
  481. mkdir -p "${HOME}"/ios_frameworks/
  482. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  483. - uses: actions/checkout@v4
  484. - name: Setup quickstart
  485. run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  486. "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \
  487. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  488. - name: Setup swift quickstart
  489. run: SAMPLE="$SDK" TARGET="${SDK}ExampleSwift" scripts/setup_quickstart_framework.sh
  490. - name: Install Secret GoogleService-Info.plist
  491. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-inappmessaging.plist.gpg \
  492. quickstart-ios/inappmessaging/GoogleService-Info.plist "$plist_secret"
  493. - name: Test Quickstart
  494. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  495. - name: Test Swift Quickstart
  496. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}" swift)
  497. - name: Remove data before upload
  498. if: ${{ failure() }}
  499. run: scripts/remove_data.sh inappmessaging
  500. - uses: actions/upload-artifact@v4
  501. if: ${{ failure() }}
  502. with:
  503. name: quickstart_artifacts_inappmessaging
  504. path: quickstart-ios/
  505. quickstart_framework_messaging:
  506. # Don't run on private repo.
  507. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  508. needs: package-head
  509. env:
  510. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  511. SDK: "Messaging"
  512. strategy:
  513. matrix:
  514. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  515. build-env:
  516. - os: macos-15
  517. xcode: Xcode_16.4
  518. runs-on: ${{ matrix.build-env.os }}
  519. steps:
  520. - uses: actions/checkout@v4
  521. - name: Get framework dir
  522. uses: actions/download-artifact@v4.1.7
  523. with:
  524. name: ${{ matrix.artifact }}
  525. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  526. - name: Xcode
  527. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  528. - name: Setup Bundler
  529. run: ./scripts/setup_bundler.sh
  530. - name: Move frameworks
  531. run: |
  532. mkdir -p "${HOME}"/ios_frameworks/
  533. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  534. - uses: actions/checkout@v4
  535. - name: Setup quickstart
  536. run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  537. "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \
  538. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  539. - name: Setup swift quickstart
  540. run: SAMPLE="$SDK" TARGET="${SDK}ExampleSwift" scripts/setup_quickstart_framework.sh
  541. - name: Install Secret GoogleService-Info.plist
  542. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \
  543. quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret"
  544. - name: Test Quickstart
  545. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  546. - name: Test Swift Quickstart
  547. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}" swift)
  548. - name: Remove data before upload
  549. if: ${{ failure() }}
  550. run: scripts/remove_data.sh messaging
  551. - uses: actions/upload-artifact@v4
  552. if: ${{ failure() }}
  553. with:
  554. name: quickstart_artifacts_messaging
  555. path: quickstart-ios/
  556. quickstart_framework_storage:
  557. # Don't run on private repo.
  558. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
  559. needs: package-head
  560. env:
  561. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  562. SDK: "Storage"
  563. strategy:
  564. matrix:
  565. artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic]
  566. build-env:
  567. - os: macos-15
  568. xcode: Xcode_16.4
  569. runs-on: ${{ matrix.build-env.os }}
  570. steps:
  571. - uses: actions/checkout@v4
  572. - name: Get framework dir
  573. uses: actions/download-artifact@v4.1.7
  574. with:
  575. name: ${{ matrix.artifact }}
  576. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  577. - name: Xcode
  578. run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer
  579. - name: Setup Bundler
  580. run: ./scripts/setup_bundler.sh
  581. - name: Move frameworks
  582. run: |
  583. mkdir -p "${HOME}"/ios_frameworks/
  584. find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
  585. - uses: actions/checkout@v4
  586. - name: Setup quickstart
  587. env:
  588. LEGACY: true
  589. run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \
  590. "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \
  591. "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \
  592. "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/*
  593. - name: Setup swift quickstart
  594. env:
  595. LEGACY: true
  596. run: SAMPLE="$SDK" TARGET="${SDK}ExampleSwift" scripts/setup_quickstart_framework.sh
  597. - name: Install Secret GoogleService-Info.plist
  598. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \
  599. quickstart-ios/storage/GoogleService-Info.plist "$plist_secret"
  600. - name: Test Quickstart
  601. env:
  602. LEGACY: true
  603. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}")
  604. - name: Test Swift Quickstart
  605. env:
  606. LEGACY: true
  607. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}" swift)
  608. - name: Remove data before upload
  609. env:
  610. LEGACY: true
  611. if: ${{ failure() }}
  612. run: scripts/remove_data.sh storage
  613. - uses: actions/upload-artifact@v4
  614. if: ${{ failure() }}
  615. with:
  616. name: quickstart_artifacts_storage
  617. path: quickstart-ios/