From 9e89ea6c75c34f32531ce9fe672e9568bb66cadc Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Fri, 29 Aug 2025 16:00:59 -0400 Subject: [PATCH 01/17] refactor(ci): Consolidate cron jobs --- .github/workflows/common_cocoapods_cron.yml | 80 +++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/common_cocoapods_cron.yml diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml new file mode 100644 index 00000000000..29c41fdc360 --- /dev/null +++ b/.github/workflows/common_cocoapods_cron.yml @@ -0,0 +1,80 @@ +name: common_cocoapods_cron + +permissions: + contents: read + +on: + workflow_call: + secrets: + plist_secret: + required: false + inputs: + # The product to test be tested (e.g. `FirebaseABTesting`). + product: + type: string + required: true + + # JSON array of platforms to test against (e.g. `[ "ios", "tvos" ]`). + platforms: + type: string + required: true + + # JSON array of flags to pass to pod lib lint. Each string in the array + # will create a separate matrix entry. + # e.g. `[ "--use-static-frameworks" ]`. + # To run with no flags, pass `[ "" ]`. + flags: + type: string + required: false + default: '[""]' + + # A command to execute before testing. + setup_command: + type: string + required: false + default: "" + + # The version of Xcode to use. + xcode: + type: string + required: false + default: "Xcode_16.4" + + # The runner to use. + runs_on: + type: string + required: false + default: "macos-15" + +jobs: + cron-job: + # This job is intended to be run on a schedule, on the main repo. + if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + + runs-on: ${{ inputs.runs_on }} + strategy: + matrix: + platform: ${{ fromJson(inputs.platforms) }} + flag: ${{ fromJson(inputs.flags) }} + + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Xcode + run: sudo xcode-select -s /Applications/${{ inputs.xcode }}.app/Contents/Developer + - name: Run setup command, if needed. + if: inputs.setup_command != '' + env: + plist_secret: ${{ secrets.plist_secret }} + run: ${{ inputs.setup_command }} + - name: PodLibLint Cron + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + with: + timeout_minutes: 15 + max_attempts: 3 + retry_wait_seconds: 120 + command: | + scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb \ + ${{ inputs.product }}.podspec --platforms=${{ matrix.platform }} ${{ matrix.flag }} From c6f5725fbfbdf1e192806c56eff7728454af0ed0 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Fri, 29 Aug 2025 16:04:30 -0400 Subject: [PATCH 02/17] abtesting, app distro, and auth --- .github/workflows/abtesting.yml | 140 +++++++++----------- .github/workflows/appdistribution.yml | 65 ++++----- .github/workflows/auth.yml | 182 ++++++++++++-------------- 3 files changed, 168 insertions(+), 219 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 6edd5ef83b0..be029156767 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -19,91 +19,75 @@ on: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times - cron: '0 9 * * *' -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true +# concurrency: +# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} +# cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: ABTestingUnit + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: ABTestingUnit - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseABTesting - target: FirebaseABTesting-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseABTesting + # target: FirebaseABTesting-Unit-unit - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseABTesting + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseABTesting - quickstart: - uses: ./.github/workflows/common_quickstart.yml - with: - product: ABTesting - is_legacy: true - setup_command: scripts/setup_quickstart.sh abtesting - plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg - plist_dst_path: quickstart-ios/database/GoogleService-Info.plist - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # quickstart: + # uses: ./.github/workflows/common_quickstart.yml + # with: + # product: ABTesting + # is_legacy: true + # setup_command: scripts/setup_quickstart.sh abtesting + # plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + # plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - quickstart-ftl-cron-only: - # Don't run on private repo. - if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' + # quickstart-ftl-cron-only: + # # Don't run on private repo. + # if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - name: Setup quickstart - env: - LEGACY: true - run: scripts/setup_quickstart.sh abtesting - - 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: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Build swift quickstart - env: - LEGACY: true - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting) - - id: ftl_test - uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 - with: - credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} - testapp_dir: quickstart-ios/build-for-testing - test_type: "xctest" + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - uses: actions/setup-python@v5 + # with: + # python-version: '3.11' + # - name: Setup quickstart + # env: + # LEGACY: true + # run: scripts/setup_quickstart.sh abtesting + # - 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: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Build swift quickstart + # env: + # LEGACY: true + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting) + # - id: ftl_test + # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 + # with: + # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} + # testapp_dir: quickstart-ios/build-for-testing + # test_type: "xctest" abtesting-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: PodLibLint ABTesting Cron - run: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb \ - FirebaseABTesting.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseABTesting + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index 808e7ffe697..f423eed3dd3 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -17,48 +17,33 @@ on: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times - cron: '0 9 * * *' -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true +# concurrency: +# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} +# cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: AppDistributionUnit - platforms: iOS - - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseAppDistribution - target: FirebaseAppDistribution-Unit-unit - - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseAppDistribution - platforms: iOS # App Distro only supports iOS. + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: AppDistributionUnit + # platforms: iOS + + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseAppDistribution + # target: FirebaseAppDistribution-Unit-unit + + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseAppDistribution + # platforms: iOS # App Distro only supports iOS. appdistribution-cron-only: - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - target: [ios] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint App Distribution Cron - run: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAppDistribution.podspec \ - --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseAppDistribution + platforms: '[ "ios" ]' + flags: '[ "--use-static-frameworks" ]' diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index 3f1d3142fe0..dc1410f5c50 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -23,86 +23,86 @@ on: env: FIREBASE_CI: true -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true +# concurrency: +# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} +# cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: AuthUnit - buildonly_platforms: macOS + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: AuthUnit + # buildonly_platforms: macOS - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseAuth - target: FirebaseAuth-Unit-unit - buildonly: true + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseAuth + # target: FirebaseAuth-Unit-unit + # buildonly: true - pod_lib_lint: - strategy: - matrix: - product: [FirebaseAuthInterop, FirebaseAuth] - uses: ./.github/workflows/common_cocoapods.yml - with: - product: ${{ matrix.product }} - buildonly_platforms: macOS + # pod_lib_lint: + # strategy: + # matrix: + # product: [FirebaseAuthInterop, FirebaseAuth] + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: ${{ matrix.product }} + # buildonly_platforms: macOS - integration-tests: - # Don't run on private repo unless it is a PR. - if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - needs: spm - strategy: - matrix: - scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests] - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache/restore@v4 - with: - path: .build - key: ${{ needs.spm.outputs.cache_key }} - - name: Install Secrets - run: | - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \ - FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \ - FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \ - FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \ - FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \ - FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \ - FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret" - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \ - FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret" - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - with: - timeout_minutes: 15 - max_attempts: 3 - retry_wait_seconds: 120 - command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }}) + # integration-tests: + # # Don't run on private repo unless it is a PR. + # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + # needs: spm + # strategy: + # matrix: + # scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests] + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache/restore@v4 + # with: + # path: .build + # key: ${{ needs.spm.outputs.cache_key }} + # - name: Install Secrets + # run: | + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \ + # FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \ + # FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \ + # FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \ + # FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \ + # FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \ + # FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret" + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \ + # FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret" + # - name: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + # with: + # timeout_minutes: 15 + # max_attempts: 3 + # retry_wait_seconds: 120 + # command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }}) - quickstart: - uses: ./.github/workflows/common_quickstart.yml - with: - product: Authentication - is_legacy: false - setup_command: scripts/setup_quickstart.sh authentication - plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg - plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist - run_tests: false - secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # quickstart: + # uses: ./.github/workflows/common_quickstart.yml + # with: + # product: Authentication + # is_legacy: false + # setup_command: scripts/setup_quickstart.sh authentication + # plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg + # plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + # run_tests: false + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. # quickstart-ftl-cron-only: @@ -134,32 +134,12 @@ jobs: # test_type: "xctest" auth-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - # The macos and tvos tests can hang, and watchOS doesn't have tests. - target: [ios, tvos --skip-tests, macos --skip-tests, watchos --skip-tests] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - env: + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseAuth + platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]' + flags: '[ "--use-static-frameworks" ]' + setup_command: scripts/configure_test_keychain.sh + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Configure test keychain - run: scripts/configure_test_keychain.sh - - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - with: - timeout_minutes: 15 - max_attempts: 3 - retry_wait_seconds: 120 - command: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} From 3146252097e1fd1ae49248faf25908a6361aeb86 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 2 Sep 2025 11:03:56 -0400 Subject: [PATCH 03/17] more refactors --- .github/workflows/core.yml | 26 ++++++--------------- .github/workflows/core_extension.yml | 25 +++++--------------- .github/workflows/core_internal.yml | 23 ++++-------------- .github/workflows/crashlytics.yml | 30 ++++-------------------- .github/workflows/database.yml | 24 ++++--------------- .github/workflows/functions.yml | 31 +++++++------------------ .github/workflows/inappmessaging.yml | 24 ++++--------------- .github/workflows/mlmodeldownloader.yml | 29 +++++++---------------- .github/workflows/performance.yml | 24 ++++--------------- .github/workflows/remoteconfig.yml | 22 ++++-------------- .github/workflows/storage.yml | 25 ++++---------------- 11 files changed, 65 insertions(+), 218 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 0c30320895a..33b20bc6985 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -39,23 +39,11 @@ jobs: product: FirebaseCore core-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-14 - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint Core Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseCore.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseCore + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' + runs_on: macos-14 + xcode: Xcode_16.2 diff --git a/.github/workflows/core_extension.yml b/.github/workflows/core_extension.yml index b36caf5c85c..ae25b052328 100644 --- a/.github/workflows/core_extension.yml +++ b/.github/workflows/core_extension.yml @@ -24,23 +24,10 @@ jobs: with: product: FirebaseCoreExtension - core-internal-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks' - ] + core-extension-cron-only: needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint CoreInternal Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseCoreExtension.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseCoreExtension + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' diff --git a/.github/workflows/core_internal.yml b/.github/workflows/core_internal.yml index f536f6c4656..959ea8b63c8 100644 --- a/.github/workflows/core_internal.yml +++ b/.github/workflows/core_internal.yml @@ -40,22 +40,9 @@ jobs: supports_swift6: true core-internal-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint CoreInternal Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseCoreInternal.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseCoreInternal + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index e88f692ebc3..83b644c76ef 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -98,29 +98,9 @@ jobs: test_type: "xctest" crashlytics-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - # Disable watchos because it does not support XCTest. - target: [ios, tvos, macos, watchos --skip-tests] - flags: [ - '--use-static-frameworks', - '--use-modular-headers --skip-tests' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - with: - timeout_minutes: 15 - max_attempts: 3 - retry_wait_seconds: 120 - command: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseCrashlytics.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseCrashlytics + platforms: '[ "ios", "tvos", "macos", "watchos --skip-tests" ]' + flags: '[ "--use-static-frameworks", "--use-modular-headers --skip-tests" ]' diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index a5a297b445f..7f977085d60 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -86,23 +86,9 @@ jobs: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} database-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - podspec: [FirebaseDatabase.podspec] - target: [ios, tvos, macos] - flags: [ - '--skip-tests --use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint database Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb ${{ matrix.podspec }} --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseDatabase + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--skip-tests --use-static-frameworks" ]' diff --git a/.github/workflows/functions.yml b/.github/workflows/functions.yml index 0563dea4059..967a79c43c6 100644 --- a/.github/workflows/functions.yml +++ b/.github/workflows/functions.yml @@ -104,27 +104,12 @@ jobs: # test_type: "xctest" functions-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-14 - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks', - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Integration Test Server - run: FirebaseFunctions/Backend/start.sh synchronous - - name: PodLibLint Functions Cron - run: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb \ - FirebaseFunctions.podspec --platforms=${{ matrix.target }} --use-static-frameworks + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseFunctions + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' + setup_command: FirebaseFunctions/Backend/start.sh synchronous + runs_on: macos-14 + xcode: Xcode_16.2 diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index 61118a10d1f..cffa04202af 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -64,26 +64,12 @@ jobs: run: scripts/third_party/travis/retry.sh scripts/build.sh InAppMessaging ${{ matrix.platform }} xcodebuild fiam-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - flags: [ - '--use-static-frameworks' - ] - platform: [ios, tvos] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint InAppMessaging Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --platforms=${{ matrix.platform }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseInAppMessaging + platforms: '[ "ios", "tvos" ]' + flags: '[ "--use-static-frameworks" ]' quickstart: uses: ./.github/workflows/common_quickstart.yml diff --git a/.github/workflows/mlmodeldownloader.yml b/.github/workflows/mlmodeldownloader.yml index d4bb6f1a5c7..4c1d54b5f9e 100644 --- a/.github/workflows/mlmodeldownloader.yml +++ b/.github/workflows/mlmodeldownloader.yml @@ -45,30 +45,19 @@ jobs: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} mlmodeldownloader-cron-only: - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - strategy: - matrix: - target: [ios, tvos, macos] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Configure test keychain - run: scripts/configure_test_keychain.sh - - name: Install GoogleService-Info.plist - run: | + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseMLModelDownloader + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' + setup_command: | + scripts/configure_test_keychain.sh mkdir FirebaseMLModelDownloader/Tests/Integration/Resources scripts/decrypt_gha_secret.sh scripts/gha-encrypted/MLModelDownloader/GoogleService-Info.plist.gpg \ FirebaseMLModelDownloader/Tests/Integration/Resources/GoogleService-Info.plist "$plist_secret" - - name: PodLibLint MLModelDownloader Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseMLModelDownloader.podspec --platforms=${{ matrix.target }} --use-static-frameworks + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} mlmodeldownloader-sample-build-test: # Don't run on private repo unless it is a PR. diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index b0d01161259..735cfea6619 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -121,23 +121,9 @@ jobs: test_type: "xctest" performance-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - target: [ios, tvos] - flags: [ - '--skip-tests --use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint Performance Cron - run: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebasePerformance.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebasePerformance + platforms: '[ "ios", "tvos" ]' + flags: '[ "--skip-tests --use-static-frameworks" ]' diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 5dc0984c517..67444b1eac4 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -147,21 +147,9 @@ jobs: run: scripts/build.sh RemoteConfigSample iOS remoteconfig-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - target: [ios, tvos, macos] - flags: ['--skip-tests --use-static-frameworks'] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint RemoteConfig Cron - run: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseRemoteConfig + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--skip-tests --use-static-frameworks" ]' diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 29449d9fe85..6ada1d50b93 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -127,24 +127,9 @@ jobs: test_specs: unit storage-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - strategy: - matrix: - target: [ios, tvos, macos, watchos] - build-env: - - os: macos-14 - xcode: Xcode_16.2 - - os: macos-15 - xcode: Xcode_16.4 - runs-on: ${{ matrix.build-env.os }} needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer - - name: PodLibLint Storage Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseStorage.podspec --platforms=${{ matrix.target }} --use-static-frameworks --skip-tests + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseStorage + platforms: '[ "ios", "tvos", "macos", "watchos" ]' + flags: '[ "--use-static-frameworks --skip-tests" ]' From 41a1f706caed54475708affc88806a242aa77024 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 2 Sep 2025 11:21:19 -0400 Subject: [PATCH 04/17] Add dependent triggers --- .github/workflows/abtesting.yml | 1 + .github/workflows/appdistribution.yml | 1 + .github/workflows/auth.yml | 1 + .github/workflows/core.yml | 1 + .github/workflows/core_extension.yml | 1 + .github/workflows/core_internal.yml | 1 + .github/workflows/crashlytics.yml | 1 + .github/workflows/database.yml | 1 + .github/workflows/functions.yml | 1 + .github/workflows/inappmessaging.yml | 1 + .github/workflows/mlmodeldownloader.yml | 1 + .github/workflows/performance.yml | 1 + .github/workflows/remoteconfig.yml | 1 + .github/workflows/storage.yml | 1 + 14 files changed, 14 insertions(+) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index be029156767..dddbff5db16 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -14,6 +14,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index f423eed3dd3..b625d3b5997 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index dc1410f5c50..e5949cfc95e 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -14,6 +14,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg' - 'Gemfile*' schedule: diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 33b20bc6985..8107ba9f21f 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 3am (PDT) / 6am (EDT) - cron uses UTC times diff --git a/.github/workflows/core_extension.yml b/.github/workflows/core_extension.yml index ae25b052328..e1dd78fcc21 100644 --- a/.github/workflows/core_extension.yml +++ b/.github/workflows/core_extension.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/core_extension.yml' - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 3am (PDT) / 6am (EDT) - cron uses UTC times diff --git a/.github/workflows/core_internal.yml b/.github/workflows/core_internal.yml index 959ea8b63c8..5e186069e85 100644 --- a/.github/workflows/core_internal.yml +++ b/.github/workflows/core_internal.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 3am (PDT) / 6am (EDT) - cron uses UTC times diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index 83b644c76ef..dad83ff1202 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -14,6 +14,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Interop/Analytics/Public/*.h' - 'Gemfile*' schedule: diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index 7f977085d60..04396da47ab 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -17,6 +17,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' - 'scripts/run_database_emulator.sh' schedule: diff --git a/.github/workflows/functions.yml b/.github/workflows/functions.yml index 967a79c43c6..42d7b0c1395 100644 --- a/.github/workflows/functions.yml +++ b/.github/workflows/functions.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/functions.yml' - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'FirebaseAuth/Interop/*.h' - 'FirebaseMessaging/Interop/*.h' - 'FirebaseTestingSupport/Functions/**' diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index cffa04202af..d0633743721 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 11pm (PDT) / 2am (EDT) - cron uses UTC times diff --git a/.github/workflows/mlmodeldownloader.yml b/.github/workflows/mlmodeldownloader.yml index 4c1d54b5f9e..5859a02c47e 100644 --- a/.github/workflows/mlmodeldownloader.yml +++ b/.github/workflows/mlmodeldownloader.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 12am (PDT) / 3am (EDT) - cron uses UTC times diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 735cfea6619..9d1f35594e6 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -20,6 +20,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' # Rebuild on Ruby infrastructure changes - 'Gemfile*' schedule: diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 67444b1eac4..9d6fe55f330 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -14,6 +14,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' - 'scripts/generate_access_token.sh' - 'scripts/gha-encrypted/RemoteConfigSwiftAPI/**' diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 6ada1d50b93..12bbb9bf86d 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -14,6 +14,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' # Rebuild on Ruby infrastructure changes. - 'Gemfile*' schedule: From 80456f67880a57c6976fc13910dea758a168ac50 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 2 Sep 2025 11:22:25 -0400 Subject: [PATCH 05/17] fis --- .github/workflows/installations.yml | 44 ++++++++--------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index 54f95f0b67d..ff7fde15883 100644 --- a/.github/workflows/installations.yml +++ b/.github/workflows/installations.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 11pm (PDT) / 2am (EDT) - cron uses UTC times @@ -44,7 +45,7 @@ jobs: mkdir -p FirebaseInstallations/Source/Tests/Resources scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Installations/GoogleService-Info.plist.gpg \ FirebaseInstallations/Source/Tests/Resources/GoogleService-Info.plist "$plist_secret" - export FIS_INTEGRATION_TESTS_REQUIRED=1 + echo "FIS_INTEGRATION_TESTS_REQUIRED=1" >> $GITHUB_ENV secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} @@ -92,38 +93,17 @@ jobs: test_type: "xctest" installations-cron-only: - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - FIR_IID_INTEGRATION_TESTS_REQUIRED: ${{ secrets.GHASecretsGPGPassphrase1 }} - strategy: - matrix: - target: [ios, tvos, macos] - flags: [ - '--use-static-frameworks' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Configure test keychain - run: scripts/configure_test_keychain.sh - - name: Install GoogleService-Info.plist - run: | + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseInstallations + platforms: '[ "ios", "tvos", "macos" ]' + flags: '[ "--use-static-frameworks" ]' + setup_command: | + scripts/configure_test_keychain.sh mkdir -p FirebaseInstallations/Source/Tests/Resources scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Installations/GoogleService-Info.plist.gpg \ FirebaseInstallations/Source/Tests/Resources/GoogleService-Info.plist "$plist_secret" - - name: Get boolean for secrets available - id: secrets - run: echo "::set-output name=val::$([[ -z $plist_secret ]] && echo "0" || echo "1")" - - name: PodLibLint Installations Cron - run: | - export FIS_INTEGRATION_TESTS_REQUIRED=${{ steps.secrets.outputs.val }} - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseInstallations.podspec \ - --platforms=${{ matrix.target }} ${{ matrix.flags }} \ + echo "FIS_INTEGRATION_TESTS_REQUIRED=1" >> $GITHUB_ENV + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} From 6bdace96cd84b5401370e6c77ff184019d07ae9c Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 2 Sep 2025 11:24:09 -0400 Subject: [PATCH 06/17] others --- .github/workflows/firebase_app_check.yml | 24 +++++--------------- .github/workflows/messaging.yml | 29 +++++------------------- 2 files changed, 12 insertions(+), 41 deletions(-) diff --git a/.github/workflows/firebase_app_check.yml b/.github/workflows/firebase_app_check.yml index fcec95dad4e..6ecb238e4f0 100644 --- a/.github/workflows/firebase_app_check.yml +++ b/.github/workflows/firebase_app_check.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_cocoapods_cron.yml' - 'Gemfile*' schedule: # Run every day at 12am (PDT) / 3am (EDT) - cron uses UTC times @@ -71,22 +72,9 @@ jobs: path: xcodebuild.log app_check-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 - strategy: - matrix: - flags: [ - '--skip-tests --use-modular-headers' - ] needs: pod_lib_lint - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: PodLibLint FirebaseAppCheck Cron - # TODO: Remove --allow-warnings when stabilized. - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAppCheck.podspec --platforms=ios ${{ matrix.flags }} + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseAppCheck + platforms: '[ "ios" ]' + flags: '[ "--skip-tests --use-modular-headers" ]' diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index b1227c3e9eb..993cfb543dd 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -20,6 +20,7 @@ on: - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' + - '.github/workflows/common_cocoapods_cron.yml' # Rebuild on Ruby infrastructure changes - 'Gemfile*' schedule: @@ -129,29 +130,11 @@ jobs: test_type: "xctest" messaging-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - strategy: - matrix: - target: [ios, tvos, macos --skip-tests, watchos --skip-tests] - os: [macos-14, macos-15] - include: - - os: macos-15 - xcode: Xcode_16.4 - tests: --test-specs=unit - - os: macos-14 - xcode: Xcode_16.2 - tests: --skip-tests - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - - name: PodLibLint Messaging Cron - run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseMessaging.podspec ${{ matrix.tests }} --platforms=${{ matrix.target }} --use-static-frameworks + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseMessaging + platforms: '[ "ios", "tvos", "macos --skip-tests", "watchos --skip-tests" ]' + flags: '[ "--use-static-frameworks" ]' messaging-sample-build-test: # Don't run on private repo unless it is a PR. From a56c6d064ddeb2bc5fc88b486233753f5b82a169 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 2 Sep 2025 11:25:29 -0400 Subject: [PATCH 07/17] revert --- .github/workflows/common_cocoapods_cron.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml index 29c41fdc360..b4402cf30e8 100644 --- a/.github/workflows/common_cocoapods_cron.yml +++ b/.github/workflows/common_cocoapods_cron.yml @@ -49,7 +49,8 @@ on: jobs: cron-job: # This job is intended to be run on a schedule, on the main repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + if: github.repository == 'Firebase/firebase-ios-sdk' runs-on: ${{ inputs.runs_on }} strategy: From c826b6b46aca1c8be7ddf21dfcf45c52bd22ed43 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 10:25:45 -0400 Subject: [PATCH 08/17] Update .github/workflows/common_cocoapods_cron.yml --- .github/workflows/common_cocoapods_cron.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml index b4402cf30e8..37b979d88ca 100644 --- a/.github/workflows/common_cocoapods_cron.yml +++ b/.github/workflows/common_cocoapods_cron.yml @@ -77,5 +77,5 @@ jobs: max_attempts: 3 retry_wait_seconds: 120 command: | - scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb \ + scripts/pod_lib_lint.rb \ ${{ inputs.product }}.podspec --platforms=${{ matrix.platform }} ${{ matrix.flag }} From c30d1b17bc3a7d8c324e21a2d2314e175d41a831 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 10:26:00 -0400 Subject: [PATCH 09/17] Update .github/workflows/common_cocoapods_cron.yml --- .github/workflows/common_cocoapods_cron.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml index 37b979d88ca..b230aa49bae 100644 --- a/.github/workflows/common_cocoapods_cron.yml +++ b/.github/workflows/common_cocoapods_cron.yml @@ -49,8 +49,7 @@ on: jobs: cron-job: # This job is intended to be run on a schedule, on the main repo. - # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - if: github.repository == 'Firebase/firebase-ios-sdk' + if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' runs-on: ${{ inputs.runs_on }} strategy: From d381455c58ee43f21bb279769f02b6fbb014057a Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 4 Sep 2025 11:41:20 -0400 Subject: [PATCH 10/17] work --- .github/workflows/abtesting.yml | 114 +++++++++++++------------- .github/workflows/appdistribution.yml | 30 +++---- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index dddbff5db16..78327c72ca9 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -20,70 +20,70 @@ on: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times - cron: '0 9 * * *' -# concurrency: -# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} -# cancel-in-progress: true +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: ABTestingUnit + spm: + uses: ./.github/workflows/common.yml + with: + target: ABTestingUnit - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseABTesting - # target: FirebaseABTesting-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseABTesting + target: FirebaseABTesting-Unit-unit - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseABTesting + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseABTesting - # quickstart: - # uses: ./.github/workflows/common_quickstart.yml - # with: - # product: ABTesting - # is_legacy: true - # setup_command: scripts/setup_quickstart.sh abtesting - # plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg - # plist_dst_path: quickstart-ios/database/GoogleService-Info.plist - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart: + uses: ./.github/workflows/common_quickstart.yml + with: + product: ABTesting + is_legacy: true + setup_command: scripts/setup_quickstart.sh abtesting + plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart-ftl-cron-only: - # # Don't run on private repo. - # if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' + quickstart-ftl-cron-only: + # Don't run on private repo. + if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - uses: actions/setup-python@v5 - # with: - # python-version: '3.11' - # - name: Setup quickstart - # env: - # LEGACY: true - # run: scripts/setup_quickstart.sh abtesting - # - 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: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Build swift quickstart - # env: - # LEGACY: true - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting) - # - id: ftl_test - # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 - # with: - # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} - # testapp_dir: quickstart-ios/build-for-testing - # test_type: "xctest" + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Setup quickstart + env: + LEGACY: true + run: scripts/setup_quickstart.sh abtesting + - 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: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Build swift quickstart + env: + LEGACY: true + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting) + - id: ftl_test + uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 + with: + credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} + testapp_dir: quickstart-ios/build-for-testing + test_type: "xctest" abtesting-cron-only: needs: pod_lib_lint diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index b625d3b5997..e81b83f8051 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -23,23 +23,23 @@ on: # cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: AppDistributionUnit - # platforms: iOS + spm: + uses: ./.github/workflows/common.yml + with: + target: AppDistributionUnit + platforms: iOS - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseAppDistribution - # target: FirebaseAppDistribution-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseAppDistribution + target: FirebaseAppDistribution-Unit-unit - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseAppDistribution - # platforms: iOS # App Distro only supports iOS. + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseAppDistribution + platforms: iOS # App Distro only supports iOS. appdistribution-cron-only: needs: pod_lib_lint From 8d7984ae6fd450b98c4b5c1775fd6fb6eef77090 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 4 Sep 2025 12:08:19 -0400 Subject: [PATCH 11/17] work 1 --- .github/workflows/auth.yml | 182 ++++++++++++++++++++----------------- 1 file changed, 101 insertions(+), 81 deletions(-) diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index e5949cfc95e..f1c34bb4f55 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -24,86 +24,86 @@ on: env: FIREBASE_CI: true -# concurrency: -# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} -# cancel-in-progress: true +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: AuthUnit - # buildonly_platforms: macOS + spm: + uses: ./.github/workflows/common.yml + with: + target: AuthUnit + buildonly_platforms: macOS - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseAuth - # target: FirebaseAuth-Unit-unit - # buildonly: true + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseAuth + target: FirebaseAuth-Unit-unit + buildonly: true - # pod_lib_lint: - # strategy: - # matrix: - # product: [FirebaseAuthInterop, FirebaseAuth] - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: ${{ matrix.product }} - # buildonly_platforms: macOS + pod_lib_lint: + strategy: + matrix: + product: [FirebaseAuthInterop, FirebaseAuth] + uses: ./.github/workflows/common_cocoapods.yml + with: + product: ${{ matrix.product }} + buildonly_platforms: macOS - # integration-tests: - # # Don't run on private repo unless it is a PR. - # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - # needs: spm - # strategy: - # matrix: - # scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests] - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: actions/cache/restore@v4 - # with: - # path: .build - # key: ${{ needs.spm.outputs.cache_key }} - # - name: Install Secrets - # run: | - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \ - # FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \ - # FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \ - # FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \ - # FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \ - # FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \ - # FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret" - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \ - # FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret" - # - name: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - # with: - # timeout_minutes: 15 - # max_attempts: 3 - # retry_wait_seconds: 120 - # command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }}) + integration-tests: + # Don't run on private repo unless it is a PR. + if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + needs: spm + strategy: + matrix: + scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests] + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: actions/cache/restore@v4 + with: + path: .build + key: ${{ needs.spm.outputs.cache_key }} + - name: Install Secrets + run: | + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \ + FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \ + FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \ + FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \ + FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \ + FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \ + FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret" + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \ + FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret" + - name: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + with: + timeout_minutes: 15 + max_attempts: 3 + retry_wait_seconds: 120 + command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }}) - # quickstart: - # uses: ./.github/workflows/common_quickstart.yml - # with: - # product: Authentication - # is_legacy: false - # setup_command: scripts/setup_quickstart.sh authentication - # plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg - # plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist - # run_tests: false - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + quickstart: + uses: ./.github/workflows/common_quickstart.yml + with: + product: Authentication + is_legacy: false + setup_command: scripts/setup_quickstart.sh authentication + plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg + plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + run_tests: false + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. # quickstart-ftl-cron-only: @@ -135,12 +135,32 @@ jobs: # test_type: "xctest" auth-cron-only: + # Don't run on private repo. + if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + + runs-on: macos-15 + strategy: + matrix: + # The macos and tvos tests can hang, and watchOS doesn't have tests. + target: [ios, tvos --skip-tests, macos --skip-tests, watchos --skip-tests] + flags: [ + '--use-static-frameworks' + ] needs: pod_lib_lint - uses: ./.github/workflows/common_cocoapods_cron.yml - with: - product: FirebaseAuth - platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]' - flags: '[ "--use-static-frameworks" ]' - setup_command: scripts/configure_test_keychain.sh - secrets: + env: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Configure test keychain + run: scripts/configure_test_keychain.sh + - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + with: + timeout_minutes: 15 + max_attempts: 3 + retry_wait_seconds: 120 + command: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} From ccb1eae6e6788a8ed346bba8be1b45e43f25d3bb Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 4 Sep 2025 12:11:55 -0400 Subject: [PATCH 12/17] auth --- .github/workflows/auth.yml | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index f1c34bb4f55..488ecf07ea4 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -135,32 +135,12 @@ jobs: # test_type: "xctest" auth-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - - runs-on: macos-15 - strategy: - matrix: - # The macos and tvos tests can hang, and watchOS doesn't have tests. - target: [ios, tvos --skip-tests, macos --skip-tests, watchos --skip-tests] - flags: [ - '--use-static-frameworks' - ] - needs: pod_lib_lint - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Configure test keychain - run: scripts/configure_test_keychain.sh - - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - with: - timeout_minutes: 15 - max_attempts: 3 - retry_wait_seconds: 120 - command: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }} + needs: pod_lib_lint + uses: ./.github/workflows/common_cocoapods_cron.yml + with: + product: FirebaseAuth + platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]' + flags: '[ "--use-static-frameworks" ]' + setup_command: scripts/configure_test_keychain.sh + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} \ No newline at end of file From e8387b0c18e6a97de8d4f2ec647b59d7e12c3956 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:12:15 -0400 Subject: [PATCH 13/17] Update .github/workflows/appdistribution.yml --- .github/workflows/appdistribution.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index e81b83f8051..0484ff9cd7d 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -18,9 +18,9 @@ on: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times - cron: '0 9 * * *' -# concurrency: -# group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} -# cancel-in-progress: true + concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true jobs: spm: From 22760d39d99fa510c897a487bdb8c582111f850c Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:15:22 -0400 Subject: [PATCH 14/17] Update .github/workflows/appdistribution.yml --- .github/workflows/appdistribution.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index 0484ff9cd7d..d3a9d874d44 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -18,9 +18,9 @@ on: # Run every day at 2am (PDT) / 5am (EDT) - cron uses UTC times - cron: '0 9 * * *' - concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true jobs: spm: From fec5a2294aa8b20ff1a60910ee29c6b0d631fcec Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:15:29 -0400 Subject: [PATCH 15/17] Update .github/workflows/auth.yml --- .github/workflows/auth.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index 488ecf07ea4..0211c7b0589 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -143,4 +143,4 @@ jobs: flags: '[ "--use-static-frameworks" ]' setup_command: scripts/configure_test_keychain.sh secrets: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} \ No newline at end of file + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} From 5ca6807c90c3b642a90cb5ffafd5c1b3639e2428 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:17:44 -0400 Subject: [PATCH 16/17] Update .github/workflows/common_cocoapods_cron.yml --- .github/workflows/common_cocoapods_cron.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml index b230aa49bae..5f783bb279e 100644 --- a/.github/workflows/common_cocoapods_cron.yml +++ b/.github/workflows/common_cocoapods_cron.yml @@ -55,7 +55,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(inputs.platforms) }} - flag: ${{ fromJson(inputs.flags) }} + flags: ${{ fromJson(inputs.flags) }} steps: - uses: actions/checkout@v4 From 0bd274ff7a8d5b6de3face00814da0787f082ee4 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:17:52 -0400 Subject: [PATCH 17/17] Update .github/workflows/common_cocoapods_cron.yml --- .github/workflows/common_cocoapods_cron.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/common_cocoapods_cron.yml b/.github/workflows/common_cocoapods_cron.yml index 5f783bb279e..afeeec07efe 100644 --- a/.github/workflows/common_cocoapods_cron.yml +++ b/.github/workflows/common_cocoapods_cron.yml @@ -77,4 +77,6 @@ jobs: retry_wait_seconds: 120 command: | scripts/pod_lib_lint.rb \ - ${{ inputs.product }}.podspec --platforms=${{ matrix.platform }} ${{ matrix.flag }} + ${{ inputs.product }}.podspec \ + --platforms=${{ matrix.platform }} \ + ${{ matrix.flags }}