From d7d478d5018be95dec087b384a5c124e3d0d0484 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Wed, 5 Nov 2025 17:15:00 -0500 Subject: [PATCH 01/18] demo --- .github/workflows/zip.yml | 521 ++++++++++++-------------------------- 1 file changed, 159 insertions(+), 362 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index db5055fb93e..fa43bdc9883 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -203,60 +203,36 @@ jobs: quickstart_framework_abtesting: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "ABTesting" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \ - quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_abtesting_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "ABTesting" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework + plist_src_path: scripts/gha-encrypted/qs-abtesting.plist.gpg + plist_dst_path: quickstart-ios/abtesting/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_auth: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Authentication" strategy: matrix: os: [macos-15] @@ -264,197 +240,108 @@ jobs: include: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup Swift Quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-authentication.plist.gpg \ - quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" - - name: Test Swift Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_auth_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Authentication" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Authentication" TARGET="AuthenticationExample" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg + plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + os: ${{ matrix.os }} + xcode: ${{ matrix.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_config: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Config" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup Swift Quickstart - - run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ - quickstart-ios/config/GoogleService-Info.plist "$plist_secret" - - name: Test Swift Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_config_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Config" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Config" TARGET="ConfigExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg + plist_dst_path: quickstart-ios/config/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_crashlytics: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Crashlytics" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: | + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Crashlytics" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseAnalytics* rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAppMeasurement* rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAds* - SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ + SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Add frameworks to Crashlytics watchOS target - run: | - cd quickstart-ios/crashlytics - "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" --target "CrashlyticsExample_(watchOS)_Extension" --framework_path Firebase/ - - name: Patch Crashlytics Run Script Path - run: scripts/patch_crashlytics_run_path.rb - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ - quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_crashlytics_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg + plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_database: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Database" strategy: matrix: os: [macos-14] xcode: [Xcode_16.2] artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-database.plist.gpg \ - quickstart-ios/database/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_database_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Database" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + os: ${{ matrix.os }} + xcode: ${{ matrix.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_firebaseai: needs: packaging_done @@ -512,201 +399,111 @@ jobs: quickstart_framework_firestore: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Firestore" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Upload build logs on failure - if: failure() - uses: actions/upload-artifact@v4 - with: - name: build_logs_firestore_${{ matrix.artifact }}_${{ matrix.build-env.os }} - path: sdk_zip/build_logs/ - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \ - quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - name: Remove data before upload and zip directory to reduce upload size. - if: always() - run: scripts/remove_data.sh firestore; zip -r --symlinks quickstart_artifacts_firestore.zip quickstart-ios/ - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_firestore_${{ matrix.artifact }}_${{ matrix.build-env.os }} - path: quickstart_artifacts_firestore.zip + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Firestore" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Firestore" TARGET="FirestoreExample" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg + plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_inappmessaging: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "InAppMessaging" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-inappmessaging.plist.gpg \ - quickstart-ios/inappmessaging/GoogleService-Info.plist "$plist_secret" - - name: Test Swift Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_inappmessaging_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "InAppMessaging" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg + plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_messaging: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Messaging" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Add frameworks to notification extension target - run: | + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Messaging" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Messaging" TARGET="MessagingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* cd quickstart-ios/messaging - "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Messaging" --target "NotificationServiceExtension" --framework_path Firebase/ - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ - quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_messaging_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb \ + --sdk "Messaging" \ + --target "NotificationServiceExtension" \ + --framework_path Firebase/ + plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg + plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_storage: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Storage" strategy: matrix: artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] build-env: - os: macos-15 xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}Example" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ - quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_storage_${{ matrix.artifact }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Storage" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Storage" TARGET="StorageExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg + plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + github_token: ${{ secrets.GITHUB_TOKEN }} From 521a68079dbbf4fec98af807cf1586f95c27b28b Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 6 Nov 2025 16:11:13 -0500 Subject: [PATCH 02/18] common --- .../workflows/common_quickstart_framework.yml | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/common_quickstart_framework.yml diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml new file mode 100644 index 00000000000..476c9591df5 --- /dev/null +++ b/.github/workflows/common_quickstart_framework.yml @@ -0,0 +1,92 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: common_quickstart_framework + +permissions: + contents: read + +on: + workflow_call: + inputs: + product: + required: true + type: string + zip_run_id: + required: true + type: string + artifact_name: + required: true + type: string + setup_command: + required: true + type: string + plist_src_path: + required: true + type: string + plist_dst_path: + required: true + type: string + os: + required: false + type: string + default: macos-15 + xcode: + required: false + type: string + default: Xcode_16.4 + secrets: + plist_secret: + required: true + github_token: + required: true + +jobs: + quickstart_framework: + if: ${{ !cancelled() }} + env: + plist_secret: ${{ secrets.plist_secret }} + SDK: ${{ inputs.product }} + runs-on: ${{ inputs.os }} + steps: + - uses: actions/checkout@v4 + - name: Get framework dir + uses: actions/download-artifact@v4.1.7 + with: + name: ${{ inputs.artifact_name }} + run-id: ${{ inputs.zip_run_id }} + github-token: ${{ secrets.github_token }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Xcode + run: sudo xcode-select -s /Applications/${{ inputs.xcode }}.app/Contents/Developer + - name: Setup Bundler + run: ./scripts/setup_bundler.sh + - name: Move frameworks + run: | + mkdir -p "${HOME}"/ios_frameworks/ + find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + - name: Setup quickstart + run: ${{ inputs.setup_command }} + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh ${{ inputs.plist_src_path }} \ + ${{ inputs.plist_dst_path }} "$plist_secret" + - name: Test Quickstart + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: quickstart_artifacts_${{ inputs.product }}_${{ inputs.artifact_name }} + path: | + quickstart-ios/ + !quickstart-ios/**/GoogleService-Info.plist From 5b614ed680c51eeee21719487c4d0bf2613933c2 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 13:25:20 -0500 Subject: [PATCH 03/18] remove copyright --- .github/workflows/common_quickstart_framework.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index 476c9591df5..00e2ac4b169 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -1,17 +1,3 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - name: common_quickstart_framework permissions: From d5a746ea3928b9f55e58ab086f706a0a5968a927 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 13:30:25 -0500 Subject: [PATCH 04/18] add todos --- .github/workflows/common_quickstart_framework.yml | 2 ++ .github/workflows/zip.yml | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index 00e2ac4b169..db08a213760 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -4,6 +4,7 @@ permissions: contents: read on: + # TODO(ncooke3): Document. workflow_call: inputs: product: @@ -68,6 +69,7 @@ jobs: run: scripts/decrypt_gha_secret.sh ${{ inputs.plist_src_path }} \ ${{ inputs.plist_dst_path }} "$plist_secret" - name: Test Quickstart + # TODO(ncooke3): Use retry action? run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - uses: actions/upload-artifact@v4 if: failure() diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index fa43bdc9883..c74fc273abf 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -343,6 +343,7 @@ jobs: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} github_token: ${{ secrets.GITHUB_TOKEN }} + # TODO(ncooke3): Migrate to use shared workflow. quickstart_framework_firebaseai: needs: packaging_done if: ${{ !cancelled() }} From 1745990c454ad2fdeca66446a649ed011d1dd4d0 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 13:35:43 -0500 Subject: [PATCH 05/18] disable inherited secret? --- .github/workflows/common_quickstart_framework.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index db08a213760..25f90e880b4 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -36,8 +36,9 @@ on: secrets: plist_secret: required: true - github_token: - required: true + # TODO(ncooke3): Delete? + # github_token: + # required: true jobs: quickstart_framework: From 4e59aca280a2dce0ba727e0b1c97d3a2a7d9e83e Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 13:36:55 -0500 Subject: [PATCH 06/18] [revert] disable passing secret --- .github/workflows/zip.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index c74fc273abf..3bcb0d4019e 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -228,7 +228,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_auth: needs: packaging_done @@ -257,7 +257,7 @@ jobs: xcode: ${{ matrix.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_config: needs: packaging_done @@ -283,7 +283,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_crashlytics: needs: packaging_done @@ -312,7 +312,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_database: needs: packaging_done @@ -341,7 +341,7 @@ jobs: xcode: ${{ matrix.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} # TODO(ncooke3): Migrate to use shared workflow. quickstart_framework_firebaseai: @@ -423,7 +423,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_inappmessaging: needs: packaging_done @@ -449,7 +449,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_messaging: needs: packaging_done @@ -480,7 +480,7 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_storage: needs: packaging_done @@ -507,4 +507,4 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - github_token: ${{ secrets.GITHUB_TOKEN }} + # github_token: ${{ secrets.GITHUB_TOKEN }} From 147224555c7b79da285a25116490b3048f94c0c8 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 13:51:46 -0500 Subject: [PATCH 07/18] pin run id --- .github/workflows/zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 3bcb0d4019e..3a623dc12da 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -16,7 +16,7 @@ permissions: env: # When a run_id is specified, build jobs will be skipped and the specified # run's artifacts will be used for testing. - PINNED_RUN_ID: '' + PINNED_RUN_ID: '19657830493' on: pull_request: From aa9cfe4d3e983421b3791617f7496f6adac15c15 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:32:12 -0500 Subject: [PATCH 08/18] fix csh --- .github/workflows/zip.yml | 607 +++++++++++++++++++------------------- 1 file changed, 306 insertions(+), 301 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 3a623dc12da..3425feae99b 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -169,121 +169,121 @@ jobs: echo "run_id=${{ github.run_id }}" >> $GITHUB_OUTPUT fi - check_framework_firestore_symbols: - needs: packaging_done - if: ${{ !cancelled() }} - env: - FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 - runs-on: macos-14 - steps: - - name: Xcode 16.2 - run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: Firebase-actions-dir - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Install xcpretty - run: gem install xcpretty - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - name: Check linked Firestore.xcframework for unlinked symbols. - run: | - scripts/check_firestore_symbols.sh \ - $(pwd) \ - "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework + # check_framework_firestore_symbols: + # needs: packaging_done + # if: ${{ !cancelled() }} + # env: + # FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 + # runs-on: macos-14 + # steps: + # - name: Xcode 16.2 + # run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer + # - uses: actions/checkout@v4 + # - name: Get framework dir + # uses: actions/download-artifact@v4.1.7 + # with: + # name: Firebase-actions-dir + # run-id: ${{ needs.packaging_done.outputs.run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: ./scripts/setup_bundler.sh + # - name: Install xcpretty + # run: gem install xcpretty + # - name: Move frameworks + # run: | + # mkdir -p "${HOME}"/ios_frameworks/ + # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + # - name: Check linked Firestore.xcframework for unlinked symbols. + # run: | + # scripts/check_firestore_symbols.sh \ + # $(pwd) \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework - quickstart_framework_abtesting: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "ABTesting" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework - plist_src_path: scripts/gha-encrypted/qs-abtesting.plist.gpg - plist_dst_path: quickstart-ios/abtesting/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_abtesting: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "ABTesting" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework + # plist_src_path: scripts/gha-encrypted/qs-abtesting.plist.gpg + # plist_dst_path: quickstart-ios/abtesting/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_auth: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - os: [macos-15] - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - include: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Authentication" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Authentication" TARGET="AuthenticationExample" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg - plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist - os: ${{ matrix.os }} - xcode: ${{ matrix.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_auth: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # os: [macos-15] + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # include: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Authentication" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Authentication" TARGET="AuthenticationExample" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + # "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg + # plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + # os: ${{ matrix.os }} + # xcode: ${{ matrix.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_config: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Config" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Config" TARGET="ConfigExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg - plist_dst_path: quickstart-ios/config/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_config: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Config" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Config" TARGET="ConfigExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg + # plist_dst_path: quickstart-ios/config/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_crashlytics: needs: packaging_done @@ -306,6 +306,11 @@ jobs: SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + cd quickstart-ios/crashlytics + "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ + --target "CrashlyticsExample_(watchOS)_Extension" \ + --framework_path Firebase/ + scripts/patch_crashlytics_run_path.rb plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist os: ${{ matrix.build-env.os }} @@ -314,197 +319,197 @@ jobs: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_database: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - os: [macos-14] - xcode: [Xcode_16.2] - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Database" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg - plist_dst_path: quickstart-ios/database/GoogleService-Info.plist - os: ${{ matrix.os }} - xcode: ${{ matrix.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_database: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # os: [macos-14] + # xcode: [Xcode_16.2] + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Database" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + # plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + # os: ${{ matrix.os }} + # xcode: ${{ matrix.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - # TODO(ncooke3): Migrate to use shared workflow. - quickstart_framework_firebaseai: - needs: packaging_done - if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "FirebaseAI" - # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. - SWIFT_SUFFIX: "Zip" - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} - steps: - - uses: actions/checkout@v4 - - name: Get framework dir - uses: actions/download-artifact@v4.1.7 - with: - name: ${{ matrix.artifact }} - run-id: ${{ needs.packaging_done.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: Setup Bundler - run: ./scripts/setup_bundler.sh - - name: Move frameworks - run: | - mkdir -p "${HOME}"/ios_frameworks/ - find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - - uses: actions/checkout@v4 - - name: Setup quickstart - run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ - quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" - - name: Test Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - - name: Remove data before upload - if: failure() - run: scripts/remove_data.sh firebaseai - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} - path: | - quickstart-ios/ - !quickstart-ios/**/GoogleService-Info.plist + # # TODO(ncooke3): Migrate to use shared workflow. + # quickstart_framework_firebaseai: + # needs: packaging_done + # if: ${{ !cancelled() }} + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # SDK: "FirebaseAI" + # # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. + # SWIFT_SUFFIX: "Zip" + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # runs-on: ${{ matrix.build-env.os }} + # steps: + # - uses: actions/checkout@v4 + # - name: Get framework dir + # uses: actions/download-artifact@v4.1.7 + # with: + # name: ${{ matrix.artifact }} + # run-id: ${{ needs.packaging_done.outputs.run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Xcode + # run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer + # - name: Setup Bundler + # run: ./scripts/setup_bundler.sh + # - name: Move frameworks + # run: | + # mkdir -p "${HOME}"/ios_frameworks/ + # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + # - uses: actions/checkout@v4 + # - name: Setup quickstart + # run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ + # quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" + # - name: Test Quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") + # - name: Remove data before upload + # if: failure() + # run: scripts/remove_data.sh firebaseai + # - uses: actions/upload-artifact@v4 + # if: failure() + # with: + # name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} + # path: | + # quickstart-ios/ + # !quickstart-ios/**/GoogleService-Info.plist - quickstart_framework_firestore: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Firestore" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Firestore" TARGET="FirestoreExample" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg - plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_firestore: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Firestore" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Firestore" TARGET="FirestoreExample" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg + # plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_inappmessaging: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "InAppMessaging" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg - plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_inappmessaging: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "InAppMessaging" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg + # plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_messaging: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Messaging" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Messaging" TARGET="MessagingExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - cd quickstart-ios/messaging - "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb \ - --sdk "Messaging" \ - --target "NotificationServiceExtension" \ - --framework_path Firebase/ - plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg - plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_messaging: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Messaging" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Messaging" TARGET="MessagingExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # cd quickstart-ios/messaging + # "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb \ + # --sdk "Messaging" \ + # --target "NotificationServiceExtension" \ + # --framework_path Firebase/ + # plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg + # plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} - quickstart_framework_storage: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Storage" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="Storage" TARGET="StorageExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg - plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} + # quickstart_framework_storage: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Storage" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # SAMPLE="Storage" TARGET="StorageExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg + # plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # github_token: ${{ secrets.GITHUB_TOKEN }} From 70ba6516db2ec7bdec89a9c26ac28a288c496830 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:38:49 -0500 Subject: [PATCH 09/18] address todos --- .github/workflows/common_quickstart_framework.yml | 12 +++++++----- .github/workflows/zip.yml | 9 --------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index 25f90e880b4..c1cdcb44df7 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -36,9 +36,6 @@ on: secrets: plist_secret: required: true - # TODO(ncooke3): Delete? - # github_token: - # required: true jobs: quickstart_framework: @@ -70,8 +67,13 @@ jobs: run: scripts/decrypt_gha_secret.sh ${{ inputs.plist_src_path }} \ ${{ inputs.plist_dst_path }} "$plist_secret" - name: Test Quickstart - # TODO(ncooke3): Use retry action? - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + with: + timeout_minutes: 15 + max_attempts: 2 + retry_wait_seconds: 120 + command: ([ -z $plist_secret ] || scripts/test_quickstart_framework.sh "${SDK}") + # Failure sequence to upload artifact. - uses: actions/upload-artifact@v4 if: failure() with: diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 3425feae99b..dc7ea1da73b 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -228,7 +228,6 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_auth: # needs: packaging_done @@ -257,7 +256,6 @@ jobs: # xcode: ${{ matrix.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_config: # needs: packaging_done @@ -283,7 +281,6 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} quickstart_framework_crashlytics: needs: packaging_done @@ -317,7 +314,6 @@ jobs: xcode: ${{ matrix.build-env.xcode }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_database: # needs: packaging_done @@ -346,7 +342,6 @@ jobs: # xcode: ${{ matrix.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # # TODO(ncooke3): Migrate to use shared workflow. # quickstart_framework_firebaseai: @@ -428,7 +423,6 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_inappmessaging: # needs: packaging_done @@ -454,7 +448,6 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_messaging: # needs: packaging_done @@ -485,7 +478,6 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} # quickstart_framework_storage: # needs: packaging_done @@ -512,4 +504,3 @@ jobs: # xcode: ${{ matrix.build-env.xcode }} # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # github_token: ${{ secrets.GITHUB_TOKEN }} From f4f419411efc718179d158a6b5f0074ff8303f20 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:42:55 -0500 Subject: [PATCH 10/18] Apply suggestion from @ncooke3 --- .github/workflows/zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index dc7ea1da73b..81533ea37a2 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -307,7 +307,7 @@ jobs: "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ --target "CrashlyticsExample_(watchOS)_Extension" \ --framework_path Firebase/ - scripts/patch_crashlytics_run_path.rb + "${GITHUB_WORKSPACE}"/scripts/patch_crashlytics_run_path.rb plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist os: ${{ matrix.build-env.os }} From 092e7a3f1fbe724f304e28164630a6c985d6f635 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:48:28 -0500 Subject: [PATCH 11/18] Apply suggestion from @ncooke3 --- .github/workflows/zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 81533ea37a2..32ca5a2fff0 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -307,7 +307,7 @@ jobs: "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ --target "CrashlyticsExample_(watchOS)_Extension" \ --framework_path Firebase/ - "${GITHUB_WORKSPACE}"/scripts/patch_crashlytics_run_path.rb + ../../scripts/patch_crashlytics_run_path.rb plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist os: ${{ matrix.build-env.os }} From a0f3bfd2717594d683636e7037884cd2a877cfeb Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:52:21 -0500 Subject: [PATCH 12/18] Apply suggestion from @ncooke3 --- .github/workflows/zip.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 32ca5a2fff0..61cc78a5893 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -307,7 +307,8 @@ jobs: "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ --target "CrashlyticsExample_(watchOS)_Extension" \ --framework_path Firebase/ - ../../scripts/patch_crashlytics_run_path.rb + cd ../../ + scripts/patch_crashlytics_run_path.rb plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist os: ${{ matrix.build-env.os }} From 576df0781011f275a16347dabcb78e3964c32bb6 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 14:53:25 -0500 Subject: [PATCH 13/18] cqf comms --- .github/workflows/common_quickstart_framework.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index c1cdcb44df7..80de366f4fa 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -4,36 +4,46 @@ permissions: contents: read on: - # TODO(ncooke3): Document. workflow_call: inputs: + # The product to test be tested (e.g. `ABTesting`). product: required: true type: string + # The Run ID of a successful zip packaging workflow. zip_run_id: required: true type: string + # The name of the artifact from the zip packaging workflow to download. artifact_name: required: true type: string + # A command to execute before testing. + # + # Example: `scripts/setup_quickstart.sh functions` setup_command: required: true type: string + # The path to the encrypted `GoogleService-Info.plist` file. plist_src_path: required: true type: string + # The destination path for the decrypted `GoogleService-Info.plist` file. plist_dst_path: required: true type: string + # The runner to use. os: required: false type: string default: macos-15 + # The version of Xcode to use. xcode: required: false type: string default: Xcode_16.4 secrets: + # The passphrase for decrypting the GoogleService-Info.plist. plist_secret: required: true From f6a46511708cfe7e2ec59d9359de4a10442c804e Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 14:59:06 -0500 Subject: [PATCH 14/18] migrate ai --- .github/workflows/zip.yml | 143 +++++++++++++++----------------------- 1 file changed, 57 insertions(+), 86 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 61cc78a5893..62719777051 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -282,39 +282,39 @@ jobs: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - quickstart_framework_crashlytics: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "Crashlytics" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseAnalytics* - rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAppMeasurement* - rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAds* - SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - cd quickstart-ios/crashlytics - "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ - --target "CrashlyticsExample_(watchOS)_Extension" \ - --framework_path Firebase/ - cd ../../ - scripts/patch_crashlytics_run_path.rb - plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg - plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # quickstart_framework_crashlytics: + # needs: packaging_done + # if: ${{ !cancelled() }} + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # uses: ./.github/workflows/common_quickstart_framework.yml + # with: + # product: "Crashlytics" + # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + # artifact_name: ${{ matrix.artifact }} + # setup_command: | + # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseAnalytics* + # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAppMeasurement* + # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAds* + # SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # cd quickstart-ios/crashlytics + # "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ + # --target "CrashlyticsExample_(watchOS)_Extension" \ + # --framework_path Firebase/ + # cd ../../ + # scripts/patch_crashlytics_run_path.rb + # plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg + # plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist + # os: ${{ matrix.build-env.os }} + # xcode: ${{ matrix.build-env.xcode }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # quickstart_framework_database: # needs: packaging_done @@ -344,59 +344,30 @@ jobs: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # TODO(ncooke3): Migrate to use shared workflow. - # quickstart_framework_firebaseai: - # needs: packaging_done - # if: ${{ !cancelled() }} - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # SDK: "FirebaseAI" - # # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. - # SWIFT_SUFFIX: "Zip" - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # runs-on: ${{ matrix.build-env.os }} - # steps: - # - uses: actions/checkout@v4 - # - name: Get framework dir - # uses: actions/download-artifact@v4.1.7 - # with: - # name: ${{ matrix.artifact }} - # run-id: ${{ needs.packaging_done.outputs.run_id }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Xcode - # run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - # - name: Setup Bundler - # run: ./scripts/setup_bundler.sh - # - name: Move frameworks - # run: | - # mkdir -p "${HOME}"/ios_frameworks/ - # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - # - uses: actions/checkout@v4 - # - name: Setup quickstart - # run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ - # quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" - # - name: Test Quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - # - name: Remove data before upload - # if: failure() - # run: scripts/remove_data.sh firebaseai - # - uses: actions/upload-artifact@v4 - # if: failure() - # with: - # name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} - # path: | - # quickstart-ios/ - # !quickstart-ios/**/GoogleService-Info.plist + quickstart_framework_firebaseai: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "FirebaseAI" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="FirebaseAI" TARGET="FirebaseAIExampleZip" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg + plist_dst_path: quickstart-ios/firebaseai/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # quickstart_framework_firestore: # needs: packaging_done From c933ba29207b082cb95848a26e69122c2df4296d Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 15:23:56 -0500 Subject: [PATCH 15/18] Revert "migrate ai" This reverts commit f6a46511708cfe7e2ec59d9359de4a10442c804e. --- .github/workflows/zip.yml | 143 +++++++++++++++++++++++--------------- 1 file changed, 86 insertions(+), 57 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 62719777051..61cc78a5893 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -282,39 +282,39 @@ jobs: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_crashlytics: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Crashlytics" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseAnalytics* - # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAppMeasurement* - # rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAds* - # SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # cd quickstart-ios/crashlytics - # "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ - # --target "CrashlyticsExample_(watchOS)_Extension" \ - # --framework_path Firebase/ - # cd ../../ - # scripts/patch_crashlytics_run_path.rb - # plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg - # plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_crashlytics: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Crashlytics" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseAnalytics* + rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAppMeasurement* + rm -rf "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleAds* + SAMPLE="Crashlytics" TARGET="CrashlyticsExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseCrashlytics/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + cd quickstart-ios/crashlytics + "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb --sdk "Crashlytics" \ + --target "CrashlyticsExample_(watchOS)_Extension" \ + --framework_path Firebase/ + cd ../../ + scripts/patch_crashlytics_run_path.rb + plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg + plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # quickstart_framework_database: # needs: packaging_done @@ -344,30 +344,59 @@ jobs: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - quickstart_framework_firebaseai: - needs: packaging_done - if: ${{ !cancelled() }} - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_16.4 - uses: ./.github/workflows/common_quickstart_framework.yml - with: - product: "FirebaseAI" - zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - artifact_name: ${{ matrix.artifact }} - setup_command: | - SAMPLE="FirebaseAI" TARGET="FirebaseAIExampleZip" scripts/setup_quickstart_framework.sh \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ - "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - plist_src_path: scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg - plist_dst_path: quickstart-ios/firebaseai/GoogleService-Info.plist - os: ${{ matrix.build-env.os }} - xcode: ${{ matrix.build-env.xcode }} - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # TODO(ncooke3): Migrate to use shared workflow. + # quickstart_framework_firebaseai: + # needs: packaging_done + # if: ${{ !cancelled() }} + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # SDK: "FirebaseAI" + # # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. + # SWIFT_SUFFIX: "Zip" + # strategy: + # matrix: + # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + # build-env: + # - os: macos-15 + # xcode: Xcode_16.4 + # runs-on: ${{ matrix.build-env.os }} + # steps: + # - uses: actions/checkout@v4 + # - name: Get framework dir + # uses: actions/download-artifact@v4.1.7 + # with: + # name: ${{ matrix.artifact }} + # run-id: ${{ needs.packaging_done.outputs.run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Xcode + # run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer + # - name: Setup Bundler + # run: ./scripts/setup_bundler.sh + # - name: Move frameworks + # run: | + # mkdir -p "${HOME}"/ios_frameworks/ + # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + # - uses: actions/checkout@v4 + # - name: Setup quickstart + # run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ + # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ + # quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" + # - name: Test Quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") + # - name: Remove data before upload + # if: failure() + # run: scripts/remove_data.sh firebaseai + # - uses: actions/upload-artifact@v4 + # if: failure() + # with: + # name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} + # path: | + # quickstart-ios/ + # !quickstart-ios/**/GoogleService-Info.plist # quickstart_framework_firestore: # needs: packaging_done From 633643788da9c18856735399817dc03be5213aa5 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 25 Nov 2025 15:26:18 -0500 Subject: [PATCH 16/18] re-enable, ready for review --- .github/workflows/zip.yml | 586 +++++++++++++++++++------------------- 1 file changed, 293 insertions(+), 293 deletions(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 61cc78a5893..c380d9ce1ec 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -169,118 +169,118 @@ jobs: echo "run_id=${{ github.run_id }}" >> $GITHUB_OUTPUT fi - # check_framework_firestore_symbols: - # needs: packaging_done - # if: ${{ !cancelled() }} - # env: - # FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 - # runs-on: macos-14 - # steps: - # - name: Xcode 16.2 - # run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer - # - uses: actions/checkout@v4 - # - name: Get framework dir - # uses: actions/download-artifact@v4.1.7 - # with: - # name: Firebase-actions-dir - # run-id: ${{ needs.packaging_done.outputs.run_id }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: ./scripts/setup_bundler.sh - # - name: Install xcpretty - # run: gem install xcpretty - # - name: Move frameworks - # run: | - # mkdir -p "${HOME}"/ios_frameworks/ - # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - # - name: Check linked Firestore.xcframework for unlinked symbols. - # run: | - # scripts/check_firestore_symbols.sh \ - # $(pwd) \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework + check_framework_firestore_symbols: + needs: packaging_done + if: ${{ !cancelled() }} + env: + FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 + runs-on: macos-14 + steps: + - name: Xcode 16.2 + run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer + - uses: actions/checkout@v4 + - name: Get framework dir + uses: actions/download-artifact@v4.1.7 + with: + name: Firebase-actions-dir + run-id: ${{ needs.packaging_done.outputs.run_id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: ./scripts/setup_bundler.sh + - name: Install xcpretty + run: gem install xcpretty + - name: Move frameworks + run: | + mkdir -p "${HOME}"/ios_frameworks/ + find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + - name: Check linked Firestore.xcframework for unlinked symbols. + run: | + scripts/check_firestore_symbols.sh \ + $(pwd) \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework - # quickstart_framework_abtesting: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "ABTesting" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework - # plist_src_path: scripts/gha-encrypted/qs-abtesting.plist.gpg - # plist_dst_path: quickstart-ios/abtesting/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_abtesting: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "ABTesting" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCore.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseCoreInternal.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FBLPromises.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/FirebaseInstallations.xcframework \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/GoogleUtilities.xcframework + plist_src_path: scripts/gha-encrypted/qs-abtesting.plist.gpg + plist_dst_path: quickstart-ios/abtesting/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_auth: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # os: [macos-15] - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # include: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Authentication" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Authentication" TARGET="AuthenticationExample" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - # "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg - # plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist - # os: ${{ matrix.os }} - # xcode: ${{ matrix.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_auth: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + os: [macos-15] + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + include: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Authentication" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Authentication" TARGET="AuthenticationExample" NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg + plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + os: ${{ matrix.os }} + xcode: ${{ matrix.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_config: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Config" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Config" TARGET="ConfigExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg - # plist_dst_path: quickstart-ios/config/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_config: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Config" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Config" TARGET="ConfigExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg + plist_dst_path: quickstart-ios/config/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} quickstart_framework_crashlytics: needs: packaging_done @@ -316,192 +316,192 @@ jobs: secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_database: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # os: [macos-14] - # xcode: [Xcode_16.2] - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Database" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg - # plist_dst_path: quickstart-ios/database/GoogleService-Info.plist - # os: ${{ matrix.os }} - # xcode: ${{ matrix.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_database: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + os: [macos-14] + xcode: [Xcode_16.2] + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Database" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseDatabase/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + os: ${{ matrix.os }} + xcode: ${{ matrix.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # TODO(ncooke3): Migrate to use shared workflow. - # quickstart_framework_firebaseai: - # needs: packaging_done - # if: ${{ !cancelled() }} - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # SDK: "FirebaseAI" - # # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. - # SWIFT_SUFFIX: "Zip" - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # runs-on: ${{ matrix.build-env.os }} - # steps: - # - uses: actions/checkout@v4 - # - name: Get framework dir - # uses: actions/download-artifact@v4.1.7 - # with: - # name: ${{ matrix.artifact }} - # run-id: ${{ needs.packaging_done.outputs.run_id }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Xcode - # run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - # - name: Setup Bundler - # run: ./scripts/setup_bundler.sh - # - name: Move frameworks - # run: | - # mkdir -p "${HOME}"/ios_frameworks/ - # find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + - # - uses: actions/checkout@v4 - # - name: Setup quickstart - # run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ - # quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" - # - name: Test Quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") - # - name: Remove data before upload - # if: failure() - # run: scripts/remove_data.sh firebaseai - # - uses: actions/upload-artifact@v4 - # if: failure() - # with: - # name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} - # path: | - # quickstart-ios/ - # !quickstart-ios/**/GoogleService-Info.plist + # TODO(ncooke3): Migrate to use shared workflow after fixing AI scheme names. + quickstart_framework_firebaseai: + needs: packaging_done + if: ${{ !cancelled() }} + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + SDK: "FirebaseAI" + # This is a workaround to use the FirebaseAIExampleZip scheme that does not have the SPM dependency. + SWIFT_SUFFIX: "Zip" + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + runs-on: ${{ matrix.build-env.os }} + steps: + - uses: actions/checkout@v4 + - name: Get framework dir + uses: actions/download-artifact@v4.1.7 + with: + name: ${{ matrix.artifact }} + run-id: ${{ needs.packaging_done.outputs.run_id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Xcode + run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer + - name: Setup Bundler + run: ./scripts/setup_bundler.sh + - name: Move frameworks + run: | + mkdir -p "${HOME}"/ios_frameworks/ + find "${GITHUB_WORKSPACE}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} + + - uses: actions/checkout@v4 + - name: Setup quickstart + run: SAMPLE="$SDK" TARGET="${SDK}ExampleZip" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \ + quickstart-ios/firebaseai/GoogleService-Info.plist "$plist_secret" + - name: Test Quickstart + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_framework.sh "${SDK}") + - name: Remove data before upload + if: failure() + run: scripts/remove_data.sh firebaseai + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: quickstart_artifacts_firebaseai_${{ matrix.artifact }}_${{ matrix.build-env.os }} + path: | + quickstart-ios/ + !quickstart-ios/**/GoogleService-Info.plist - # quickstart_framework_firestore: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Firestore" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Firestore" TARGET="FirestoreExample" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg - # plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_firestore: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Firestore" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Firestore" TARGET="FirestoreExample" NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg + plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_inappmessaging: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "InAppMessaging" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg - # plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_inappmessaging: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "InAppMessaging" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg + plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_messaging: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Messaging" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Messaging" TARGET="MessagingExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # cd quickstart-ios/messaging - # "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb \ - # --sdk "Messaging" \ - # --target "NotificationServiceExtension" \ - # --framework_path Firebase/ - # plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg - # plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_messaging: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Messaging" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Messaging" TARGET="MessagingExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseMessaging/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + cd quickstart-ios/messaging + "${GITHUB_WORKSPACE}"/quickstart-ios/scripts/add_framework_script.rb \ + --sdk "Messaging" \ + --target "NotificationServiceExtension" \ + --framework_path Firebase/ + plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg + plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart_framework_storage: - # needs: packaging_done - # if: ${{ !cancelled() }} - # strategy: - # matrix: - # artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - # build-env: - # - os: macos-15 - # xcode: Xcode_16.4 - # uses: ./.github/workflows/common_quickstart_framework.yml - # with: - # product: "Storage" - # zip_run_id: ${{ needs.packaging_done.outputs.run_id }} - # artifact_name: ${{ matrix.artifact }} - # setup_command: | - # SAMPLE="Storage" TARGET="StorageExample" scripts/setup_quickstart_framework.sh \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ - # "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - # plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg - # plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist - # os: ${{ matrix.build-env.os }} - # xcode: ${{ matrix.build-env.xcode }} - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart_framework_storage: + needs: packaging_done + if: ${{ !cancelled() }} + strategy: + matrix: + artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] + build-env: + - os: macos-15 + xcode: Xcode_16.4 + uses: ./.github/workflows/common_quickstart_framework.yml + with: + product: "Storage" + zip_run_id: ${{ needs.packaging_done.outputs.run_id }} + artifact_name: ${{ matrix.artifact }} + setup_command: | + SAMPLE="Storage" TARGET="StorageExample" scripts/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* + plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg + plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist + os: ${{ matrix.build-env.os }} + xcode: ${{ matrix.build-env.xcode }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} From e97bfe8437c843fbbf5de3b2530ace4dd59eb138 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:28:50 -0500 Subject: [PATCH 17/18] Apply suggestion from @ncooke3 --- .github/workflows/zip.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index c380d9ce1ec..bbcef92d410 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -23,6 +23,7 @@ on: paths: - 'ReleaseTooling/Sources/**' - '.github/workflows/zip.yml' + - '.github/workflows/common_quickstart_framework.yml' - 'scripts/build_non_firebase_sdks.sh' - 'scripts/build_zip.sh' - 'scripts/setup_quickstart_framework.sh' From 447252421484f2e7f7f52690a9f4a942ea8a5daa Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 25 Nov 2025 16:07:59 -0500 Subject: [PATCH 18/18] skip ci: Update .github/workflows/zip.yml --- .github/workflows/zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index bbcef92d410..12f4bd62629 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -16,7 +16,7 @@ permissions: env: # When a run_id is specified, build jobs will be skipped and the specified # run's artifacts will be used for testing. - PINNED_RUN_ID: '19657830493' + PINNED_RUN_ID: '' on: pull_request: