prerelease.yml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. name: prerelease
  2. permissions:
  3. contents: write
  4. on:
  5. pull_request:
  6. # closed will be triggered when a pull request is merged. This is to keep https://github.com/firebase/SpecsTesting up to date.
  7. types: [closed]
  8. workflow_dispatch:
  9. schedule:
  10. # Run every day at 10pm (PDT) / 1am (EDT) - cron uses UTC times
  11. - cron: '0 5 * * *'
  12. env:
  13. FIREBASE_CI: true
  14. concurrency:
  15. group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  16. cancel-in-progress: true
  17. jobs:
  18. specs_checking:
  19. # Don't run on private repo unless it is a PR.
  20. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  21. runs-on: macos-15
  22. env:
  23. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  24. local_repo: specstesting
  25. podspec_repo_branch: main
  26. outputs:
  27. matrix: ${{ steps.generate_matrix.outputs.matrix }}
  28. steps:
  29. - name: Checkout code
  30. uses: actions/checkout@v4
  31. with:
  32. fetch-depth: 0
  33. - name: Xcode
  34. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  35. - name: Generate matrix
  36. id: generate_matrix
  37. run: |
  38. cd "${GITHUB_WORKSPACE}/ReleaseTooling"
  39. swift run manifest --sdk-repo-url "${GITHUB_WORKSPACE}" --output-file-path ./output.json --for-gha-matrix-generation
  40. echo "::set-output name=matrix::{\"include\":$( cat output.json )}"
  41. - name: Update SpecsTesting repo setup
  42. run: |
  43. podspec_repo_branch="${podspec_repo_branch}" \
  44. scripts/release_testing_setup.sh prerelease_testing
  45. env:
  46. BOT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  47. - name: Clean spec repo
  48. run: |
  49. git clone --quiet https://${botaccess}@github.com/Firebase/SpecsTesting.git "${local_repo}"
  50. cd "${local_repo}"
  51. # Remove all unhidden dirs, i.e. all podspec dir from the spec repo.
  52. rm -Rf -- */
  53. git add .
  54. # commit without diff will throw an error. `git diff --exit-code` can avoid such error.
  55. git diff --staged --exit-code || git commit -m "Empty spec repo."
  56. # Attempt to push. If it fails, print a detailed error message and exit.
  57. git push || {
  58. echo "--------------------------------------------------------------------------------"
  59. echo "ERROR: Failed to push to Firebase/SpecsTesting."
  60. echo "This is likely due to an expired Personal Access Token (PAT)."
  61. echo "Please take the following steps to resolve this:"
  62. echo "1. Refresh the OSS bot's scoped access token for the Firebase/SpecsTesting repo."
  63. echo " This can be done in the OSS bot's GitHub account settings. Ensure the token "
  64. echo " has the 'public_repo' scope."
  65. echo "2. Update the 'PRERELEASE_TESTING_PAT' secret in this repo's settings."
  66. echo " (https://github.com/Firebase/firebase-ios-sdk/settings/secrets/actions)"
  67. echo "--------------------------------------------------------------------------------"
  68. exit 1
  69. }
  70. - name: Clean Artifacts
  71. if: ${{ always() }}
  72. run: |
  73. rm -rf prerelease-testing-token.txt
  74. - uses: actions/upload-artifact@v4
  75. with:
  76. name: firebase-ios-sdk
  77. path: |
  78. *.podspec
  79. *.podspec.json
  80. buildup_SpecsTesting_repo_FirebaseCore:
  81. needs: specs_checking
  82. # Don't run on private repo unless it is a PR.
  83. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  84. runs-on: macos-15
  85. env:
  86. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  87. local_repo: specstesting
  88. local_sdk_repo_dir: /tmp/test/firebase-ios-sdk
  89. targeted_pod: FirebaseCore
  90. steps:
  91. - uses: actions/checkout@v4
  92. - name: Xcode
  93. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  94. - uses: actions/download-artifact@v4.1.7
  95. with:
  96. name: firebase-ios-sdk
  97. path: ${{ env.local_sdk_repo_dir }}
  98. # Addresses flaky pushes due to missing git config on runner.
  99. - name: Set git config
  100. run: |
  101. git config --global user.email "google-oss-bot@example.com"
  102. git config --global user.name "google-oss-bot"
  103. - name: Update SpecsTesting repo
  104. run: |
  105. cd scripts/create_spec_repo/
  106. swift build
  107. pod repo add --silent "${local_repo}" https://"$botaccess"@github.com/Firebase/SpecsTesting.git
  108. BOT_TOKEN="${botaccess}" ${GITHUB_WORKSPACE}/scripts/third_party/travis/retry.sh .build/debug/spec-repo-builder \
  109. --sdk-repo "${local_sdk_repo_dir}" \
  110. --local-spec-repo-name "${local_repo}" \
  111. --sdk-repo-name SpecsTesting \
  112. --github-account Firebase \
  113. --pod-sources 'https://${BOT_TOKEN}@github.com/Firebase/SpecsTesting' "https://github.com/firebase/SpecsDev.git" "https://github.com/firebase/SpecsStaging.git" "https://github.com/CocoaPods/Specs.git" \
  114. --include-pods "${targeted_pod}" --keep-repo
  115. - name: Clean Artifacts
  116. if: ${{ always() }}
  117. run: pod repo remove "${local_repo}"
  118. buildup_SpecsTesting_repo:
  119. needs: [buildup_SpecsTesting_repo_FirebaseCore, specs_checking]
  120. # Don't run on private repo unless it is a PR.
  121. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  122. runs-on: macos-15
  123. strategy:
  124. fail-fast: false
  125. matrix: ${{fromJson(needs.specs_checking.outputs.matrix)}}
  126. env:
  127. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  128. local_repo: specstesting
  129. local_sdk_repo_dir: /tmp/test/firebase-ios-sdk
  130. targeted_pod: ${{ matrix.podspec }}
  131. steps:
  132. - uses: actions/checkout@v4
  133. - name: Xcode
  134. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  135. - uses: actions/download-artifact@v4.1.7
  136. with:
  137. name: firebase-ios-sdk
  138. path: ${{ env.local_sdk_repo_dir }}
  139. # Addresses flaky pushes due to missing git config on runner.
  140. - name: Set git config
  141. run: |
  142. git config --global user.email "google-oss-bot@example.com"
  143. git config --global user.name "google-oss-bot"
  144. - name: Update SpecsTesting repo
  145. run: |
  146. [[ ${{ matrix.allowwarnings }} == true ]] && ALLOWWARNINGS=true
  147. cd scripts/create_spec_repo/
  148. swift build
  149. pod repo add --silent "${local_repo}" https://"$botaccess"@github.com/Firebase/SpecsTesting.git
  150. # ${ALLOWWARNINGS:+--allow-warnings} will add --allow-warnings to the
  151. # command if ${ALLOWWARNINGS} is not null.
  152. BOT_TOKEN="${botaccess}" ${GITHUB_WORKSPACE}/scripts/third_party/travis/retry.sh .build/debug/spec-repo-builder \
  153. --sdk-repo "${local_sdk_repo_dir}" \
  154. --local-spec-repo-name "${local_repo}" \
  155. --sdk-repo-name SpecsTesting \
  156. --github-account Firebase \
  157. --pod-sources 'https://${BOT_TOKEN}@github.com/Firebase/SpecsTesting' "https://github.com/firebase/SpecsDev.git" "https://github.com/firebase/SpecsStaging.git" "https://github.com/CocoaPods/Specs.git" \
  158. --include-pods "${targeted_pod}" \
  159. --keep-repo ${ALLOWWARNINGS:+--allow-warnings}
  160. - name: Clean Artifacts
  161. if: ${{ always() }}
  162. run: pod repo remove "${local_repo}"
  163. update_SpecsTesting_repo:
  164. # Don't run on private repo unless it is a PR.
  165. if: github.repository == 'Firebase/firebase-ios-sdk' && github.event.pull_request.merged == true
  166. runs-on: macos-15
  167. env:
  168. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  169. local_repo: specstesting
  170. podspec_repo_branch: main
  171. steps:
  172. - uses: actions/checkout@v4
  173. with:
  174. fetch-depth: 0
  175. - name: Xcode
  176. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  177. - name: Update SpecsTesting repo setup
  178. run: |
  179. # Update/create a nightly tag to the head of the main branch.
  180. podspec_repo_branch="${podspec_repo_branch}" \
  181. scripts/release_testing_setup.sh prerelease_testing
  182. env:
  183. BOT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  184. - name: Push updated podspecs
  185. run: |
  186. # Changes in post submit tests will be fetched by getting diff between
  187. # the HEAD and HEAD^ of the main branch.
  188. common_commit=$(git rev-parse HEAD^)
  189. git diff --name-only $common_commit remotes/origin/${podspec_repo_branch} > updated_files.txt
  190. updated_podspecs=()
  191. while IFS= read -r line;
  192. do
  193. echo $line
  194. if [ ${line: -8} == ".podspec" ]
  195. then
  196. updated_podspecs+=("$(basename -s .podspec ${line})")
  197. fi
  198. done < updated_files.txt
  199. if [ -z "$updated_podspecs" ]
  200. then
  201. exit
  202. fi
  203. cd scripts/create_spec_repo/
  204. swift build
  205. pod repo add --silent "${local_repo}" https://"$botaccess"@github.com/Firebase/SpecsTesting.git
  206. BOT_TOKEN="${botaccess}" .build/debug/spec-repo-builder --sdk-repo $(pwd) --local-spec-repo-name "${local_repo}" --sdk-repo-name SpecsTesting --github-account Firebase --pod-sources 'https://${BOT_TOKEN}@github.com/Firebase/SpecsTesting' "https://github.com/firebase/SpecsDev.git" "https://github.com/firebase/SpecsStaging.git" "https://cdn.cocoapods.org/" "FirebaseFirestoreTestingSupport" "FirebaseAuthTestingSupport" "FirebaseCombineSwift" --keep-repo --include-pods "${updated_podspecs[@]}"
  207. abtesting_quickstart:
  208. # Don't run on private repo unless it is a PR.
  209. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  210. needs: buildup_SpecsTesting_repo
  211. env:
  212. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  213. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  214. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  215. runs-on: macos-15
  216. steps:
  217. - uses: actions/checkout@v4
  218. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  219. - name: Xcode
  220. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  221. - name: Setup testing repo and quickstart
  222. env:
  223. LEGACY: true
  224. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh abtesting prerelease_testing
  225. - name: Install Secret GoogleService-Info.plist
  226. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \
  227. quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret"
  228. - name: Test swift quickstart
  229. env:
  230. LEGACY: true
  231. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh ABTesting true)
  232. - name: Remove data before upload
  233. env:
  234. LEGACY: true
  235. if: ${{ failure() }}
  236. run: scripts/remove_data.sh config
  237. - uses: actions/upload-artifact@v4
  238. if: ${{ failure() }}
  239. with:
  240. name: quickstart_artifacts_abtesting
  241. path: quickstart-ios/
  242. auth_quickstart:
  243. # Don't run on private repo unless it is a PR.
  244. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  245. needs: buildup_SpecsTesting_repo
  246. env:
  247. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  248. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  249. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  250. runs-on: macos-15
  251. steps:
  252. - uses: actions/checkout@v4
  253. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  254. - name: Xcode
  255. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  256. - name: Setup testing repo and quickstart
  257. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Authentication prerelease_testing
  258. - name: Install Secret GoogleService-Info.plist
  259. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \
  260. quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret"
  261. - name: Test swift quickstart
  262. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Authentication false)
  263. - name: Remove data before upload
  264. if: ${{ failure() }}
  265. run: scripts/remove_data.sh authentication
  266. - uses: actions/upload-artifact@v4
  267. if: ${{ failure() }}
  268. with:
  269. name: quickstart_artifacts_auth
  270. path: quickstart-ios/
  271. crashlytics_quickstart:
  272. # Don't run on private repo unless it is a PR.
  273. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  274. needs: buildup_SpecsTesting_repo
  275. env:
  276. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  277. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  278. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  279. testing_repo_dir: "/tmp/test/"
  280. testing_repo: "firebase-ios-sdk"
  281. runs-on: macos-15
  282. steps:
  283. - uses: actions/checkout@v4
  284. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  285. - name: Xcode
  286. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  287. - name: Setup testing repo and quickstart
  288. env:
  289. LEGACY: true
  290. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Crashlytics prerelease_testing
  291. - name: Install Secret GoogleService-Info.plist
  292. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \
  293. quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret"
  294. - name: Test swift quickstart
  295. env:
  296. LEGACY: true
  297. run: |
  298. mkdir -p quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics
  299. # Set the deployed pod location of run and upload-symbols with the development pod version.
  300. cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
  301. cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
  302. ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Crashlytics true swift)
  303. - name: Remove data before upload
  304. env:
  305. LEGACY: true
  306. if: ${{ failure() }}
  307. run: scripts/remove_data.sh crashlytics
  308. - uses: actions/upload-artifact@v4
  309. if: ${{ failure() }}
  310. with:
  311. name: quickstart_artifacts_crashlytics
  312. path: quickstart-ios/
  313. database_quickstart:
  314. # Don't run on private repo unless it is a PR.
  315. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  316. needs: buildup_SpecsTesting_repo
  317. env:
  318. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  319. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  320. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  321. testing_repo_dir: "/tmp/test/"
  322. testing_repo: "firebase-ios-sdk"
  323. runs-on: macos-15
  324. steps:
  325. - uses: actions/checkout@v4
  326. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  327. - name: Xcode
  328. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  329. - name: Setup testing repo and quickstart
  330. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh database prerelease_testing
  331. - name: Install Secret GoogleService-Info.plist
  332. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-database.plist.gpg \
  333. quickstart-ios/database/GoogleService-Info.plist "$plist_secret"
  334. - name: Test objc quickstart
  335. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false)
  336. - name: Test swift quickstart
  337. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false swift)
  338. - name: Remove data before upload
  339. if: ${{ failure() }}
  340. run: scripts/remove_data.sh database
  341. - uses: actions/upload-artifact@v4
  342. if: ${{ failure() }}
  343. with:
  344. name: quickstart_artifacts_database
  345. path: quickstart-ios/
  346. firestore_quickstart:
  347. # Don't run on private repo unless it is a PR.
  348. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  349. needs: buildup_SpecsTesting_repo
  350. env:
  351. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  352. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  353. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  354. testing_repo_dir: "/tmp/test/"
  355. testing_repo: "firebase-ios-sdk"
  356. runs-on: macos-15
  357. steps:
  358. - uses: actions/checkout@v4
  359. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  360. - name: Xcode
  361. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  362. - name: Setup testing repo and quickstart
  363. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh firestore prerelease_testing
  364. - name: Install Secret GoogleService-Info.plist
  365. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \
  366. quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret"
  367. - name: Test swift quickstart
  368. run: ([ -z $plist_secret ] ||
  369. scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Firestore false)
  370. - name: Remove data before upload
  371. if: ${{ failure() }}
  372. run: scripts/remove_data.sh firestore
  373. - uses: actions/upload-artifact@v4
  374. if: ${{ failure() }}
  375. with:
  376. name: quickstart_artifacts_firestore
  377. path: quickstart-ios/
  378. # TODO: The functions quickstart uses Material which isn't supported by Xcode 15
  379. #functions_quickstart:
  380. # Don't run on private repo unless it is a PR.
  381. # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  382. # needs: buildup_SpecsTesting_repo
  383. # env:
  384. # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  385. # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  386. # botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  387. # testing_repo_dir: "/tmp/test/"
  388. # testing_repo: "firebase-ios-sdk"
  389. # LEGACY: true
  390. # # TODO: The functions quickstart uses Material which isn't supported by Xcode 15
  391. # runs-on: macos-12
  392. # steps:
  393. # - uses: actions/checkout@v4
  394. # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  395. # - name: Xcode
  396. # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  397. # - name: Setup testing repo and quickstart
  398. # run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh functions prerelease_testing
  399. # - name: install secret googleservice-info.plist
  400. # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-functions.plist.gpg \
  401. # quickstart-ios/functions/GoogleService-Info.plist "$plist_secret"
  402. # - name: Setup custom URL scheme
  403. # run: sed -i '' 's/REVERSED_CLIENT_ID/com.googleusercontent.apps.1025801074639-6p6ebi8amuklcjrto20gvpe295smm8u6/' quickstart-ios/functions/LegacyFunctionsQuickstart/FunctionsExample/Info.plist
  404. # - name: Test objc quickstart
  405. # run: ([ -z $plist_secret ] ||
  406. # scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true)
  407. # - name: Test swift quickstart
  408. # run: ([ -z $plist_secret ] ||
  409. # scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true swift)
  410. # - name: Remove data before upload
  411. # if: ${{ failure() }}
  412. # run: scripts/remove_data.sh functions
  413. # - uses: actions/upload-artifact@v4
  414. # if: ${{ failure() }}
  415. # with:
  416. # name: quickstart_artifacts_functions
  417. # path: quickstart-ios/
  418. inappmessaging_quickstart:
  419. # Don't run on private repo unless it is a PR.
  420. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  421. needs: buildup_SpecsTesting_repo
  422. env:
  423. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  424. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  425. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  426. testing_repo_dir: "/tmp/test/"
  427. testing_repo: "firebase-ios-sdk"
  428. runs-on: macos-15
  429. steps:
  430. - uses: actions/checkout@v4
  431. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  432. - name: Xcode
  433. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  434. - name: Setup testing repo and quickstart
  435. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh inappmessaging prerelease_testing
  436. - name: install secret googleservice-info.plist
  437. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-inappmessaging.plist.gpg \
  438. quickstart-ios/inappmessaging/GoogleService-Info.plist "$plist_secret"
  439. - name: Test objc quickstart
  440. run: ([ -z $plist_secret ] ||
  441. scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true)
  442. - name: Test swift quickstart
  443. run: ([ -z $plist_secret ] ||
  444. scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true swift)
  445. - name: Remove data before upload
  446. if: ${{ failure() }}
  447. run: scripts/remove_data.sh inappmessaging
  448. - uses: actions/upload-artifact@v4
  449. if: ${{ failure() }}
  450. with:
  451. name: quickstart_artifacts_inappmessaging
  452. path: quickstart-ios/
  453. messaging_quickstart:
  454. # Don't run on private repo unless it is a PR.
  455. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  456. needs: buildup_SpecsTesting_repo
  457. env:
  458. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  459. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  460. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  461. testing_repo_dir: "/tmp/test/"
  462. testing_repo: "firebase-ios-sdk"
  463. runs-on: macos-15
  464. steps:
  465. - uses: actions/checkout@v4
  466. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  467. - name: Xcode
  468. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  469. - name: Setup testing repo and quickstart
  470. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh messaging prerelease_testing
  471. - name: Install Secret GoogleService-Info.plist
  472. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \
  473. quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret"
  474. - name: Test objc quickstart
  475. run: ([ -z $plist_secret ] ||
  476. scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false)
  477. - name: Test swift quickstart
  478. run: ([ -z $plist_secret ] ||
  479. scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false swift)
  480. - name: Remove data before upload
  481. if: ${{ failure() }}
  482. run: scripts/remove_data.sh messaging
  483. - uses: actions/upload-artifact@v4
  484. if: ${{ failure() }}
  485. with:
  486. name: quickstart_artifacts_messaging
  487. path: quickstart-ios/
  488. remoteconfig_quickstart:
  489. # Don't run on private repo unless it is a PR.
  490. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  491. needs: buildup_SpecsTesting_repo
  492. env:
  493. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  494. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  495. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  496. runs-on: macos-15
  497. steps:
  498. - uses: actions/checkout@v4
  499. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  500. - name: Xcode
  501. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  502. - name: Setup testing repo and quickstart
  503. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh config prerelease_testing
  504. - name: Install Secret GoogleService-Info.plist
  505. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \
  506. quickstart-ios/config/GoogleService-Info.plist "$plist_secret"
  507. - name: Test Swift Quickstart
  508. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Config true)
  509. - name: Remove data before upload
  510. if: ${{ failure() }}
  511. run: scripts/remove_data.sh config
  512. - uses: actions/upload-artifact@v4
  513. if: ${{ failure() }}
  514. with:
  515. name: quickstart_artifacts_config
  516. path: quickstart-ios/
  517. storage_quickstart:
  518. # Don't run on private repo unless it is a PR.
  519. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  520. needs: buildup_SpecsTesting_repo
  521. env:
  522. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  523. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  524. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  525. testing_repo_dir: "/tmp/test/"
  526. testing_repo: "firebase-ios-sdk"
  527. LEGACY: true
  528. runs-on: macos-15
  529. steps:
  530. - uses: actions/checkout@v4
  531. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  532. - name: Xcode
  533. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  534. - name: Setup testing repo and quickstart
  535. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh storage prerelease_testing
  536. - name: Install Secret GoogleService-Info.plist
  537. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \
  538. quickstart-ios/storage/GoogleService-Info.plist "$plist_secret"
  539. - name: Test swift quickstart
  540. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Storage true swift)
  541. - name: Remove data before upload
  542. if: ${{ failure() }}
  543. run: scripts/remove_data.sh storage
  544. - uses: actions/upload-artifact@v4
  545. if: ${{ failure() }}
  546. with:
  547. name: quickstart_artifacts_storage
  548. path: quickstart-ios/
  549. performance_quickstart:
  550. # Don't run on private repo unless it is a PR.
  551. if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
  552. needs: buildup_SpecsTesting_repo
  553. env:
  554. plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  555. signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
  556. botaccess: ${{ secrets.PRERELEASE_TESTING_PAT }}
  557. testing_repo_dir: "/tmp/test/"
  558. testing_repo: "firebase-ios-sdk"
  559. runs-on: macos-15
  560. steps:
  561. - uses: actions/checkout@v4
  562. - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
  563. - name: Xcode
  564. run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
  565. - name: Setup testing repo and quickstart
  566. run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Performance prerelease_testing
  567. - name: Install Secret GoogleService-Info.plist
  568. run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \
  569. quickstart-ios/performance/GoogleService-Info.plist "$plist_secret"
  570. - name: Test swift quickstart
  571. run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Performance true swift)
  572. - name: Remove data before upload
  573. if: ${{ failure() }}
  574. run: scripts/remove_data.sh performance
  575. - uses: actions/upload-artifact@v4
  576. if: ${{ failure() }}
  577. with:
  578. name: quickstart_artifacts_performance
  579. path: quickstart-ios/