diff --git a/.github/workflows/common_quickstart_framework.yml b/.github/workflows/common_quickstart_framework.yml index 80de366f4fa..51458eda1bb 100644 --- a/.github/workflows/common_quickstart_framework.yml +++ b/.github/workflows/common_quickstart_framework.yml @@ -6,10 +6,15 @@ permissions: on: workflow_call: inputs: - # The product to test be tested (e.g. `ABTesting`). + # The product to be tested (e.g. `ABTesting`). product: required: true type: string + # Optional. The scheme to be tested (e.g. `ABTesting (tvOS)`). + scheme: + required: false + type: string + default: '' # The Run ID of a successful zip packaging workflow. zip_run_id: required: true @@ -53,6 +58,7 @@ jobs: env: plist_secret: ${{ secrets.plist_secret }} SDK: ${{ inputs.product }} + SCHEME: ${{ inputs.scheme }} runs-on: ${{ inputs.os }} steps: - uses: actions/checkout@v4 @@ -82,7 +88,7 @@ jobs: timeout_minutes: 15 max_attempts: 2 retry_wait_seconds: 120 - command: ([ -z $plist_secret ] || scripts/test_quickstart_framework.sh "${SDK}") + command: ([ -z $plist_secret ] || scripts/test_quickstart_framework.sh "${SDK}" "${SCHEME}") # Failure sequence to upload artifact. - uses: actions/upload-artifact@v4 if: failure() diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml index 49950de3eec..0210d28ae37 100644 --- a/.github/workflows/zip.yml +++ b/.github/workflows/zip.yml @@ -16,7 +16,7 @@ permissions: contents: read env: - # When a run_id is specified, build jobs will be skipped and the specified + # When specified, build jobs will be skipped and the specified # run's artifacts will be used for testing. PINNED_RUN_ID: '' @@ -26,9 +26,7 @@ on: - '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' + - 'scripts/zip/**' - 'Gemfile*' # Don't run based on any markdown only changes. - '!ReleaseTooling/*.md' @@ -94,7 +92,7 @@ jobs: - name: ZipBuildingTest run: | mkdir -p release_zip_dir - sh -x scripts/build_zip.sh release_zip_dir \ + sh -x scripts/zip/build_zip.sh release_zip_dir \ "${{ github.event.inputs.custom_spec_repos || 'https://github.com/firebase/SpecsStaging.git' }}" \ build-release \ static @@ -142,7 +140,7 @@ jobs: - name: ZipBuildingTest run: | mkdir -p zip_output_dir - sh -x scripts/build_zip.sh \ + sh -x scripts/zip/build_zip.sh \ zip_output_dir "${{ github.event.inputs.custom_spec_repos || 'https://github.com/firebase/SpecsStaging.git,https://github.com/firebase/SpecsDev.git' }}" \ build-head \ ${{ matrix.linking_type }} @@ -208,307 +206,142 @@ jobs: $(pwd) \ "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestoreInternal.xcframework - quickstart_framework_abtesting: + quickstart_framework_matrix: needs: packaging_done if: ${{ !cancelled() }} strategy: + fail-fast: false 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 }} + config: + - product: "ABTesting" + plist_src: "scripts/gha-encrypted/qs-abtesting.plist.gpg" + plist_dst: "quickstart-ios/abtesting/GoogleService-Info.plist" + command: | + SAMPLE="ABTesting" TARGET="ABTestingExample" scripts/zip/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 - 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 }} + - product: "Authentication" + plist_src: "scripts/gha-encrypted/qs-authentication.plist.gpg" + plist_dst: "quickstart-ios/authentication/GoogleService-Info.plist" + command: | + SAMPLE="Authentication" TARGET="AuthenticationExample" \ + NON_FIREBASE_SDKS="FBSDKLoginKit FBSDKCoreKit FBSDKCoreKit_Basics FBAEMKit" \ + scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/GoogleSignIn/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 }} + - product: "Config" + plist_src: "scripts/gha-encrypted/qs-config.plist.gpg" + plist_dst: "quickstart-ios/config/GoogleService-Info.plist" + command: | + SAMPLE="Config" TARGET="ConfigExample" scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseRemoteConfig/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 }} + - product: "Crashlytics" + plist_src: "scripts/gha-encrypted/qs-crashlytics.plist.gpg" + plist_dst: "quickstart-ios/crashlytics/GoogleService-Info.plist" + 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/zip/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 - 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 }} + - product: "Database" + plist_src: "scripts/gha-encrypted/qs-database.plist.gpg" + plist_dst: "quickstart-ios/database/GoogleService-Info.plist" + os: "macos-14" # Override default + xcode: "Xcode_16.2" # Override default + command: | + SAMPLE="Database" TARGET="DatabaseExample" NON_FIREBASE_SDKS="FirebaseDatabaseUI" \ + scripts/zip/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/* - # 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" - SWIFT_SUFFIX: " (iOS)" - strategy: - matrix: - artifact: [Firebase-actions-dir, Firebase-actions-dir-dynamic] - build-env: - - os: macos-15 - xcode: Xcode_26.1 - 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}Example" 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 + - product: "FirebaseAI" + plist_src: "scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg" + plist_dst: "quickstart-ios/firebaseai/GoogleService-Info.plist" + scheme: "FirebaseAIExample (iOS)" # Special property + command: | + SAMPLE="$SDK" TARGET="${SDK}Example" scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAILogic/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 }} + - product: "Firestore" + plist_src: "scripts/gha-encrypted/qs-firestore.plist.gpg" + plist_dst: "quickstart-ios/firestore/GoogleService-Info.plist" + command: | + SAMPLE="Firestore" TARGET="FirestoreExample" \ + NON_FIREBASE_SDKS="SDWebImage FirebaseAuthUI FirebaseEmailAuthUI" \ + scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/NonFirebaseSDKs/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 }} + - product: "InAppMessaging" + plist_src: "scripts/gha-encrypted/qs-inappmessaging.plist.gpg" + plist_dst: "quickstart-ios/inappmessaging/GoogleService-Info.plist" + command: | + SAMPLE="InAppMessaging" TARGET="InAppMessagingExample" scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseInAppMessaging/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 }} + - product: "Messaging" + plist_src: "scripts/gha-encrypted/qs-messaging.plist.gpg" + plist_dst: "quickstart-ios/messaging/GoogleService-Info.plist" + command: | + SAMPLE="Messaging" TARGET="MessagingExample" scripts/zip/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/ + + - product: "Storage" + plist_src: "scripts/gha-encrypted/qs-storage.plist.gpg" + plist_dst: "quickstart-ios/storage/GoogleService-Info.plist" + command: | + SAMPLE="Storage" TARGET="StorageExample" scripts/zip/setup_quickstart_framework.sh \ + "${HOME}"/ios_frameworks/Firebase/FirebaseStorage/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAuth/* \ + "${HOME}"/ios_frameworks/Firebase/FirebaseAnalytics/* - 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 + name: ${{ matrix.config.product }} / ${{ matrix.artifact == 'Firebase-actions-dir' && 'static' || 'dynamic' }} with: - product: "Storage" + product: ${{ matrix.config.product }} 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 }} + # Use defaults for most, override for Database + os: ${{ matrix.config.os || 'macos-15' }} + xcode: ${{ matrix.config.xcode || 'Xcode_16.4' }} + # Optional scheme (only used by FirebaseAI) + scheme: ${{ matrix.config.scheme }} + plist_src_path: ${{ matrix.config.plist_src }} + plist_dst_path: ${{ matrix.config.plist_dst }} + setup_command: ${{ matrix.config.command }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} diff --git a/scripts/README.md b/scripts/README.md index 0eff2ec781f..da0b34f6828 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -59,7 +59,7 @@ Script used by CI jobs to wrap xcodebuild invocations with options. CI script to build binary versions of non-Firebase SDKs for QuickStart testing. -### [build_zip.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/build_zip.sh) +### [build_zip.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/zip/build_zip.sh) CI script for building the zip distribution. @@ -151,7 +151,7 @@ Install tooling for the check workflow. Set up a QuickStart for integration testing. -### [setup_quickstart_framework.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/setup_quickstart_framework.sh) +### [setup_quickstart_framework.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/zip/setup_quickstart_framework.sh) Set up a QuickStart for zip distribution testing. @@ -191,7 +191,7 @@ Downloads mock response files for the Firebase AI Logic unit tests. Tooling used by `build.sh` to get the log output for an `xcodebuild` invocation. -### [zip_quickstart_test.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/zip_quickstart_test.sh) +### [zip_quickstart_test.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/zip/zip_quickstart_test.sh) Run the tests associated with a QuickStart with a zip distribution. diff --git a/scripts/test_quickstart_framework.sh b/scripts/test_quickstart_framework.sh index e4552e4e7a7..c0a9245c1ab 100755 --- a/scripts/test_quickstart_framework.sh +++ b/scripts/test_quickstart_framework.sh @@ -21,7 +21,7 @@ set -xeuo pipefail sample="$1" -platform="${2-}" +scheme="${2-}" REPO=`pwd` @@ -30,5 +30,5 @@ source scripts/check_secrets.sh if check_secrets; then cd quickstart-ios - have_secrets=true SAMPLE="$sample" "${REPO}"/scripts/zip_quickstart_test.sh + have_secrets=true SAMPLE="$sample" SCHEME="${scheme}" ${REPO}"/scripts/zip/zip_quickstart_test.sh" fi diff --git a/scripts/build_non_firebase_sdks.sh b/scripts/zip/build_non_firebase_sdks.sh similarity index 100% rename from scripts/build_non_firebase_sdks.sh rename to scripts/zip/build_non_firebase_sdks.sh diff --git a/scripts/build_zip.sh b/scripts/zip/build_zip.sh similarity index 100% rename from scripts/build_zip.sh rename to scripts/zip/build_zip.sh diff --git a/scripts/setup_quickstart_framework.sh b/scripts/zip/setup_quickstart_framework.sh similarity index 98% rename from scripts/setup_quickstart_framework.sh rename to scripts/zip/setup_quickstart_framework.sh index 6c4e14eaf0a..f3e6e3e7e19 100755 --- a/scripts/setup_quickstart_framework.sh +++ b/scripts/zip/setup_quickstart_framework.sh @@ -43,7 +43,7 @@ touch foo.swift mkdir -p Firebase/ # Create non Firebase Frameworks and move to Firebase/ dir. if [[ ! -z "$NON_FIREBASE_SDKS" ]]; then - REPO="${REPO}" NON_FIREBASE_SDKS="${NON_FIREBASE_SDKS}" "${REPO}"/scripts/build_non_firebase_sdks.sh + REPO="${REPO}" NON_FIREBASE_SDKS="${NON_FIREBASE_SDKS}" "${REPO}"/scripts/zip/build_non_firebase_sdks.sh fi if [ ! -f "Firebase/Firebase.h" ]; then cp "${HOME}"/ios_frameworks/Firebase/Firebase.h Firebase/ diff --git a/scripts/zip_quickstart_test.sh b/scripts/zip/zip_quickstart_test.sh similarity index 91% rename from scripts/zip_quickstart_test.sh rename to scripts/zip/zip_quickstart_test.sh index 5f314aaa3e1..5a9474b1256 100755 --- a/scripts/zip_quickstart_test.sh +++ b/scripts/zip/zip_quickstart_test.sh @@ -38,9 +38,14 @@ else device_name="iPhone 16" fi -# Define project and scheme names +# Define project and, if needed, scheme. PROJECT_NAME="${SAMPLE}Example.xcodeproj" -SCHEME_NAME="${SAMPLE}Example${SWIFT_SUFFIX}" +SCHEME_NAME="${SCHEME}" + +if [[ -z "$SCHEME_NAME" ]]; then + SCHEME_NAME="${SAMPLE}Example" + echo "Defaulting scheme name to $SCHEME_NAME" +fi # Check if the scheme exists before attempting to build. # The `awk` command prints all lines from "Schemes:" to the end of the output.