diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml new file mode 100644 index 00000000000..80de366f4fa --- /dev/null +++ b/.github/workflows/common_quickstart_framework.yml @@ -0,0 +1,93 @@ +name: common_quickstart_framework + +permissions: + contents: read + +on: + 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 + +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 + 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: + name: quickstart_artifacts_${{ inputs.product }}_${{ inputs.artifact_name }} + path: | + quickstart-ios/ + !quickstart-ios/**/GoogleService-Info.plist diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index db5055fb93e..12f4bd62629 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' @@ -203,60 +204,35 @@ 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 }} quickstart_framework_auth: needs: packaging_done if: ${{ !cancelled() }} - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - SDK: "Authentication" strategy: matrix: os: [macos-15] @@ -264,198 +240,112 @@ 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 }} 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 }} 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 + 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 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 }} + # TODO(ncooke3): Migrate to use shared workflow after fixing AI scheme names. quickstart_framework_firebaseai: needs: packaging_done if: ${{ !cancelled() }} @@ -512,201 +402,107 @@ 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 }} 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 }} 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 }} 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 }}