From 67c8af87598680bee0b59bdb5faf5584ae054ccb Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 15:29:10 -0400 Subject: [PATCH 01/27] refactor(ci): Introduce common, re-usable quickstart workflow --- .github/workflows/abtesting.yml | 163 +++++++++++------------- .github/workflows/common_quickstart.yml | 124 ++++++++++++++++++ 2 files changed, 197 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/common_quickstart.yml diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index b4ec5bef578..43353276a41 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -23,101 +23,84 @@ concurrency: 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: - # 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' - - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - 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 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: Test swift quickstart - env: - LEGACY: true - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh ABTesting true) + uses: ./.github/workflows/common_quickstart.yml + with: + product: ABTesting + 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 - 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 }} - signin_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 }} + # signin_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' + # 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 }} + # 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 }} diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml new file mode 100644 index 00000000000..95b27a28fec --- /dev/null +++ b/.github/workflows/common_quickstart.yml @@ -0,0 +1,124 @@ +name: common_cocoapods + +permissions: + contents: read + +on: + workflow_call: + # Re-usable workflows do not automatically inherit the caller's secrets. + # + # If the calling workflow uses a secret in the `setup_command` input, then + # it also must pass the secret to the re-usable workflow. + # + # Example: + # + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseFoo + # setup_command: | + # scripts/decrypt_gha_secret.sh \ + # /path/to/GoogleService-Info.plist.gpg \ + # /path/to/dest/GoogleService-Info.plist "$plist_secret" + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # + secrets: + plist_secret: + required: true + +name: common_cocoapods + +permissions: + contents: read + +on: + workflow_call: + # Re-usable workflows do not automatically inherit the caller's secrets. + # + # If the calling workflow uses a secret in the `setup_command` input, then + # it also must pass the secret to the re-usable workflow. + # + # Example: + # + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseFoo + # setup_command: | + # scripts/decrypt_gha_secret.sh \ + # /path/to/GoogleService-Info.plist.gpg \ + # /path/to/dest/GoogleService-Info.plist "$plist_secret" + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # + secrets: + plist_secret: + required: false + + inputs: + # The product to test be tested (e.g. `FirebaseABTesting`). + product: + type: string + required: true + + is_legacy: + type: boolean + required: false + default: false + + plist_src_path: + type: string + required: true + + plist_dst_path: + type: string + required: true + + # A command to execute before testing. + # + # This is useful for additional set up, like starting an emulator or + # downloading test data. + # + # Note, this step has an env var set to decrypt plists. Use + # "$plist_secret" in the given command. See `secrets` documentation + # at top of this file. + # + # Example: `FirebaseFunctions/Backend/start.sh synchronous` + setup_command: + type: string + required: false + default: "" + +jobs: + quickstart: + # Run on the main repo's scheduled jobs or pull requests and manual workflow invocations. + if: (github.repository == 'firebase/firebase-ios-sdk' && github.event_name == 'schedule') || contains(fromJSON('["pull_request", "workflow_dispatch"]'), github.event_name) + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + 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: Run setup command. + env: + LEGACY: inputs.is_legacy == true + run: ${{ inputs.setup_command }} + - name: Install Secret GoogleService-Info.plist + run: | + scripts/decrypt_gha_secret.sh \ + ${{ inputs.plist_src_path }} \ + ${{ inputs.plist_dst_path }} \ + "$plist_secret" + - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + env: + LEGACY: ${{ inputs.is_legacy == true }} + with: + timeout_minutes: 15 + max_attempts: 3 + retry_wait_seconds: 120 + command: | + ([ -z $plist_secret ] || == true && 'LEGACY=true' || '' }} scripts/test_quickstart.sh ${{ inputs.product }} true) + From 4892f96a203e22d3532467f5c23411e5fecbc61f Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 15:31:36 -0400 Subject: [PATCH 02/27] syntax --- .github/workflows/common_quickstart.yml | 31 +------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 95b27a28fec..649a57fccf0 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -1,33 +1,4 @@ -name: common_cocoapods - -permissions: - contents: read - -on: - workflow_call: - # Re-usable workflows do not automatically inherit the caller's secrets. - # - # If the calling workflow uses a secret in the `setup_command` input, then - # it also must pass the secret to the re-usable workflow. - # - # Example: - # - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseFoo - # setup_command: | - # scripts/decrypt_gha_secret.sh \ - # /path/to/GoogleService-Info.plist.gpg \ - # /path/to/dest/GoogleService-Info.plist "$plist_secret" - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # - secrets: - plist_secret: - required: true - -name: common_cocoapods +name: common_quickstart permissions: contents: read From 402f5726147bb05c42733649d0905b54b698aa29 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 15:39:13 -0400 Subject: [PATCH 03/27] fixes --- .github/workflows/common_quickstart.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 649a57fccf0..da335a54cf1 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -75,7 +75,7 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - name: Run setup command. env: - LEGACY: inputs.is_legacy == true + LEGACY: inputs.is_legacy run: ${{ inputs.setup_command }} - name: Install Secret GoogleService-Info.plist run: | @@ -83,13 +83,14 @@ jobs: ${{ inputs.plist_src_path }} \ ${{ inputs.plist_dst_path }} \ "$plist_secret" - - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + - name: Build ${{ inputs.product }} Quickstart + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 env: - LEGACY: ${{ inputs.is_legacy == true }} + LEGACY: inputs.is_legacy with: timeout_minutes: 15 max_attempts: 3 retry_wait_seconds: 120 command: | - ([ -z $plist_secret ] || == true && 'LEGACY=true' || '' }} scripts/test_quickstart.sh ${{ inputs.product }} true) + ([ -z $plist_secret ] || scripts/test_quickstart.sh ${{ inputs.product }} true) From a1da3f22186d1995b1cfecacffa28f3ab063cab1 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 16:12:14 -0400 Subject: [PATCH 04/27] fixes --- .github/workflows/common_quickstart.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index da335a54cf1..5f11ec3a688 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -23,9 +23,9 @@ on: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # - secrets: - plist_secret: - required: false + # secrets: + # plist_secret: + # required: false inputs: # The product to test be tested (e.g. `FirebaseABTesting`). @@ -75,7 +75,7 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - name: Run setup command. env: - LEGACY: inputs.is_legacy + LEGACY: ${{ inputs.is_legacy }} run: ${{ inputs.setup_command }} - name: Install Secret GoogleService-Info.plist run: | @@ -86,11 +86,20 @@ jobs: - name: Build ${{ inputs.product }} Quickstart uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 env: - LEGACY: inputs.is_legacy + LEGACY: ${{ inputs.is_legacy }} with: timeout_minutes: 15 max_attempts: 3 retry_wait_seconds: 120 command: | ([ -z $plist_secret ] || scripts/test_quickstart.sh ${{ inputs.product }} true) + # TODO: Add upload on fialure. + # - name: Upload raw logs if failed. + # if: ${{ failure() }} + # uses: actions/upload-artifact@v4 + # with: + # name: + # path: + + From 6673bf92ab5809ebca29d54b3f2fe79b7f9d9398 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 16:23:27 -0400 Subject: [PATCH 05/27] expecting build failure --- .github/workflows/abtesting.yml | 2 ++ .github/workflows/common_quickstart.yml | 14 +++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 43353276a41..1f9bb41b5a8 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -46,6 +46,8 @@ jobs: 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. diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 5f11ec3a688..171206bf9f2 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -23,9 +23,9 @@ on: # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # - # secrets: - # plist_secret: - # required: false + secrets: + plist_secret: + required: true inputs: # The product to test be tested (e.g. `FirebaseABTesting`). @@ -66,7 +66,7 @@ jobs: # Run on the main repo's scheduled jobs or pull requests and manual workflow invocations. if: (github.repository == 'firebase/firebase-ios-sdk' && github.event_name == 'schedule') || contains(fromJSON('["pull_request", "workflow_dispatch"]'), github.event_name) env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + plist_secret: ${{ secrets.plist_secret }} runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -91,8 +91,7 @@ jobs: timeout_minutes: 15 max_attempts: 3 retry_wait_seconds: 120 - command: | - ([ -z $plist_secret ] || scripts/test_quickstart.sh ${{ inputs.product }} true) + command: scripts/test_quickstart.sh ${{ inputs.product }} true # TODO: Add upload on fialure. # - name: Upload raw logs if failed. # if: ${{ failure() }} @@ -100,6 +99,3 @@ jobs: # with: # name: # path: - - - From 609152fb50d359351fc04a321054b0948e721bac Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 16:26:26 -0400 Subject: [PATCH 06/27] pass secret --- .github/workflows/abtesting.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 1f9bb41b5a8..b5d97629deb 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -46,8 +46,8 @@ jobs: 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 }} + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # quickstart-ftl-cron-only: # # Don't run on private repo. From c9d7d1e6a278d1dd433575f5ce67eeb3cb938a9f Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 16:45:45 -0400 Subject: [PATCH 07/27] leg flag --- .github/workflows/abtesting.yml | 1 + .github/workflows/common_quickstart.yml | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index b5d97629deb..11094a07c83 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -43,6 +43,7 @@ jobs: 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 diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 171206bf9f2..51e6d04d67f 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -33,10 +33,10 @@ on: type: string required: true + # TODO: What does this mean? is_legacy: type: boolean - required: false - default: false + required: true plist_src_path: type: string @@ -46,6 +46,9 @@ on: type: string required: true + # quickstart_type: + # type: string + # A command to execute before testing. # # This is useful for additional set up, like starting an emulator or From 53430eab9e2341a80d266b11643bec55dc7fab6a Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 17:06:30 -0400 Subject: [PATCH 08/27] database --- .github/workflows/common_quickstart.yml | 20 +++- .github/workflows/database.yml | 146 +++++++++++------------- 2 files changed, 85 insertions(+), 81 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 51e6d04d67f..b7fcb0bb874 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -46,8 +46,16 @@ on: type: string required: true - # quickstart_type: - # type: string + # swift or objc + quickstart_type: + type: string + required: false + default: objc + + run_tests: + type: boolean + required: false + default: true # A command to execute before testing. # @@ -86,7 +94,7 @@ jobs: ${{ inputs.plist_src_path }} \ ${{ inputs.plist_dst_path }} \ "$plist_secret" - - name: Build ${{ inputs.product }} Quickstart + - name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && "Legacy" || "Non-Legacy" }}) uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 env: LEGACY: ${{ inputs.is_legacy }} @@ -94,7 +102,11 @@ jobs: timeout_minutes: 15 max_attempts: 3 retry_wait_seconds: 120 - command: scripts/test_quickstart.sh ${{ inputs.product }} true + command: | + scripts/test_quickstart.sh \ + ${{ inputs.product }} \ + ${{ inputs.run_tests }} \ + ${{ inputs.quickstart_type }} # TODO: Add upload on fialure. # - name: Upload raw logs if failed. # if: ${{ failure() }} diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index 74a5bebe067..c5ed0a6ff7c 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -27,87 +27,79 @@ concurrency: cancel-in-progress: true jobs: - spm: - strategy: - matrix: - target: [DatabaseUnit, DatabaseUnitSwift] - uses: ./.github/workflows/common.yml - with: - target: ${{ matrix.target }} + # spm: + # strategy: + # matrix: + # target: [DatabaseUnit, DatabaseUnitSwift] + # uses: ./.github/workflows/common.yml + # with: + # target: ${{ matrix.target }} - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseDatabase - target: FirebaseDatabase-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseDatabase + # target: FirebaseDatabase-Unit-unit - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseDatabase - test_specs: unit - buildonly_platforms: macOS + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseDatabase + # test_specs: unit + # buildonly_platforms: macOS - integration: - # 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' - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: integration${{ matrix.os }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Install xcpretty - run: gem install xcpretty - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: IntegrationTest - # Only iOS to mitigate flakes. - run: scripts/third_party/travis/retry.sh scripts/build.sh Database iOS integration + # integration: + # # 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' + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: integration${{ matrix.os }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: scripts/setup_bundler.sh + # - name: Install xcpretty + # run: gem install xcpretty + # - name: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: IntegrationTest + # # Only iOS to mitigate flakes. + # run: scripts/third_party/travis/retry.sh scripts/build.sh Database iOS integration quickstart: - # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup quickstart - run: scripts/setup_quickstart.sh database - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-database.plist.gpg \ - quickstart-ios/database/GoogleService-Info.plist "$plist_secret" - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Test objc quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false) - - name: Test swift quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false swift) - - database-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - runs-on: macos-15 + uses: ./.github/workflows/common_quickstart.yml 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 }} + quickstart_type: [objc, swift] + with: + product: Database + is_legacy: false + setup_command: scripts/setup_quickstart.sh database + plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg + plist_dst_path: quickstart-ios/database/GoogleService-Info.plist + quickstart_type: ${{ matrix.quickstart_type }} + run_tests: false + + # 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 }} From c412f7d961e819302e33dbfbfa4cd3943d0cc4e4 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 17:07:15 -0400 Subject: [PATCH 09/27] secrets: --- .github/workflows/database.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index c5ed0a6ff7c..cf46b15d6a4 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -81,6 +81,8 @@ jobs: plist_dst_path: quickstart-ios/database/GoogleService-Info.plist quickstart_type: ${{ matrix.quickstart_type }} run_tests: false + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # database-cron-only: # # Don't run on private repo. From e256cd9c971e886301dcd23aa48b438dbe4ec1c1 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 17:11:10 -0400 Subject: [PATCH 10/27] Try to fix syntax --- .github/workflows/common_quickstart.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index b7fcb0bb874..e732480f240 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -94,7 +94,7 @@ jobs: ${{ inputs.plist_src_path }} \ ${{ inputs.plist_dst_path }} \ "$plist_secret" - - name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && "Legacy" || "Non-Legacy" }}) + - name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && 'Legacy' || 'Non-Legacy' }}) uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 env: LEGACY: ${{ inputs.is_legacy }} From 4c4d8b449fca46ce0a16e69409a46245b82826bc Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 17:25:18 -0400 Subject: [PATCH 11/27] more --- .github/workflows/auth.yml | 247 ++++++++++++------------ .github/workflows/common_quickstart.yml | 4 +- 2 files changed, 122 insertions(+), 129 deletions(-) diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index a8b04befda4..9ab0cbae350 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -27,143 +27,136 @@ concurrency: 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: - # 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' - - env: + 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-auth.plist.gpg + plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist + run_tests: false + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup quickstart - run: scripts/setup_quickstart.sh authentication - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \ - quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" - - name: Test swift quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Authentication false) - # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. - # quickstart-ftl-cron-only: + # # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. + # # quickstart-ftl-cron-only: + # # # Don't run on private repo. + # # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + + # # env: + # # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # runs-on: macos-14 + # # steps: + # # - uses: actions/checkout@v4 + # # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # # - uses: actions/setup-python@v5 + # # with: + # # python-version: '3.11' + # # - name: Setup quickstart + # # run: scripts/setup_quickstart.sh authentication + # # - name: Install Secret GoogleService-Info.plist + # # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \ + # # quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" + # # - name: Build swift quickstart + # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Authentication) + # # - 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" + + # auth-cron-only: # # Don't run on private repo. - # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-14 + # 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 # steps: # - uses: actions/checkout@v4 # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - uses: actions/setup-python@v5 - # with: - # python-version: '3.11' - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh authentication - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \ - # quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" - # - name: Build swift quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Authentication) - # - id: ftl_test - # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 + # - 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: - # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} - # testapp_dir: quickstart-ios/build-for-testing - # 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 - 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 }} + # 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 }} diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index e732480f240..54fa4608274 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -86,7 +86,7 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - name: Run setup command. env: - LEGACY: ${{ inputs.is_legacy }} + LEGACY: ${{ inputs.is_legacy && true || '' }} run: ${{ inputs.setup_command }} - name: Install Secret GoogleService-Info.plist run: | @@ -97,7 +97,7 @@ jobs: - name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && 'Legacy' || 'Non-Legacy' }}) uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 env: - LEGACY: ${{ inputs.is_legacy }} + LEGACY: ${{ inputs.is_legacy && true || '' }} with: timeout_minutes: 15 max_attempts: 3 From b56b93df3491047f3816ec3bbe508b9c55614333 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 18:55:09 -0400 Subject: [PATCH 12/27] more migration --- .github/workflows/crashlytics.yml | 32 ++-- .github/workflows/inappmessaging.yml | 35 ++-- .github/workflows/messaging.yml | 34 ++-- .github/workflows/performance.yml | 27 +-- .github/workflows/remoteconfig.yml | 252 +++++++++++++-------------- .github/workflows/storage.yml | 243 ++++++++++++-------------- 6 files changed, 281 insertions(+), 342 deletions(-) diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index 60e103c672b..d0dc260530f 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -44,31 +44,21 @@ jobs: quickstart: # 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' - - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - 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 quickstart - run: scripts/setup_quickstart.sh crashlytics - env: - LEGACY: true - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ - quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" - - name: Test swift quickstart - run: | + uses: ./.github/workflows/common_quickstart.yml + with: + product: Crashlytics + is_legacy: true + quickstart_type: swift + setup_command: | + scripts/setup_quickstart.sh crashlytics mkdir quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics # Set the deployed pod location of run and upload-symbols with the development pod version. cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ - ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Crashlytics true swift) - env: - LEGACY: true + plist_src_path: scripts/gha-encrypted/qs-crashlytics.plist.gpg + plist_dst_path: quickstart-ios/crashlytics/GoogleService-Info.plist + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} quickstart-ftl-cron-only: # Don't run on private repo. diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index 408fb403960..8d34215a7c4 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -85,27 +85,16 @@ jobs: run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --platforms=${{ matrix.platform }} ${{ matrix.flags }} quickstart: - # 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' - - env: + uses: ./.github/workflows/common_quickstart.yml + strategy: + matrix: + quickstart_type: [objc, swift] + with: + product: InAppMessaging + is_legacy: false + quickstart_type: ${{ matrix.quickstart_type }} + setup_command: scripts/setup_quickstart.sh inappmessaging + plist_src_path: scripts/gha-encrypted/qs-inappmessaging.plist.gpg + plist_dst_path: quickstart-ios/inappmessaging/GoogleService-Info.plist + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - - steps: - - uses: actions/checkout@v4 - - 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 quickstart - run: scripts/setup_quickstart.sh inappmessaging - - name: install secret googleservice-info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-inappmessaging.plist.gpg \ - quickstart-ios/inappmessaging/GoogleService-Info.plist "$plist_secret" - - name: Test objc quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true) - - name: Test swift quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true swift) diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index ce1d6a180e4..0f38b543038 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -82,30 +82,20 @@ jobs: quickstart: # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + uses: ./.github/workflows/common_quickstart.yml strategy: matrix: - include: - - os: macos-15 - xcode: Xcode_16.4 - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup quickstart - run: scripts/setup_quickstart.sh messaging - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ - quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - - name: Test objc quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false) - - name: Test swift quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false swift) + quickstart_type: [objc, swift] + with: + product: Messaging + is_legacy: false + quickstart_type: ${{ matrix.quickstart_type }} + setup_command: scripts/setup_quickstart.sh messaging + plist_src_path: scripts/gha-encrypted/qs-messaging.plist.gpg + plist_dst_path: quickstart-ios/messaging/GoogleService-Info.plist + run_tests: false + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} quickstart-ftl-cron-only: # Don't run on private repo. diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 5b81b71fba4..7d16dfc5dcf 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -78,25 +78,16 @@ jobs: quickstart: if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - - env: + uses: ./.github/workflows/common_quickstart.yml + with: + product: Performance + is_legacy: false + quickstart_type: swift + setup_command: scripts/setup_quickstart.sh performance + plist_src_path: scripts/gha-encrypted/qs-performance.plist.gpg + plist_dst_path: quickstart-ios/performance/GoogleService-Info.plist + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - 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 quickstart - run: scripts/setup_quickstart.sh performance - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \ - quickstart-ios/performance/GoogleService-Info.plist "$plist_secret" - - name: Test swift quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Performance true swift) - # TODO: The legacy ObjC quickstarts don't run with Xcode 15, re-able if we get these working. - # - name: Test objc quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Performance true) quickstart-ftl-cron-only: if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 906d0766aa3..28879632bbb 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -25,147 +25,141 @@ concurrency: cancel-in-progress: true jobs: - spm_1: - uses: ./.github/workflows/common.yml - with: - target: RemoteConfigUnit + # spm_1: + # uses: ./.github/workflows/common.yml + # with: + # target: RemoteConfigUnit - spm_2: - uses: ./.github/workflows/common.yml - with: - target: RemoteConfigFakeConsole - buildonly_platforms: watchOS + # spm_2: + # uses: ./.github/workflows/common.yml + # with: + # target: RemoteConfigFakeConsole + # buildonly_platforms: watchOS - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseRemoteConfig - target: FirebaseRemoteConfig-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseRemoteConfig + # target: FirebaseRemoteConfig-Unit-unit - remoteconfig: - # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - USE_REAL_CONSOLE: true - runs-on: macos-15 - strategy: - matrix: - target: [iOS] - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: rc${{ matrix.target }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Install xcpretty - run: gem install xcpretty - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/RemoteConfigSwiftAPI/GoogleService-Info.plist.gpg \ - FirebaseRemoteConfig/Tests/Swift/SwiftAPI/GoogleService-Info.plist "$plist_secret" - - name: Generate Access Token for RemoteConfigConsoleAPI in IntegrationTests - if: matrix.target == 'iOS' - run: ([ -z $plist_secret ] || scripts/generate_access_token.sh "$plist_secret" scripts/gha-encrypted/RemoteConfigSwiftAPI/ServiceAccount.json.gpg - FirebaseRemoteConfig/Tests/Swift/AccessToken.json) - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Fake Console API Tests - run: scripts/third_party/travis/retry.sh scripts/build.sh RemoteConfig ${{ matrix.target }} fakeconsole - - name: IntegrationTest - if: matrix.target == 'iOS' - # No retry to avoid exhausting AccessToken quota. - run: ([ -z $plist_secret ] || scripts/build.sh RemoteConfig iOS integration) + # remoteconfig: + # # 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' + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # USE_REAL_CONSOLE: true + # runs-on: macos-15 + # strategy: + # matrix: + # target: [iOS] + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: rc${{ matrix.target }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: scripts/setup_bundler.sh + # - name: Install xcpretty + # run: gem install xcpretty + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/RemoteConfigSwiftAPI/GoogleService-Info.plist.gpg \ + # FirebaseRemoteConfig/Tests/Swift/SwiftAPI/GoogleService-Info.plist "$plist_secret" + # - name: Generate Access Token for RemoteConfigConsoleAPI in IntegrationTests + # if: matrix.target == 'iOS' + # run: ([ -z $plist_secret ] || scripts/generate_access_token.sh "$plist_secret" scripts/gha-encrypted/RemoteConfigSwiftAPI/ServiceAccount.json.gpg + # FirebaseRemoteConfig/Tests/Swift/AccessToken.json) + # - name: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Fake Console API Tests + # run: scripts/third_party/travis/retry.sh scripts/build.sh RemoteConfig ${{ matrix.target }} fakeconsole + # - name: IntegrationTest + # if: matrix.target == 'iOS' + # # No retry to avoid exhausting AccessToken quota. + # run: ([ -z $plist_secret ] || scripts/build.sh RemoteConfig iOS integration) - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseRemoteConfig + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseRemoteConfig quickstart: # 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' - env: + uses: ./.github/workflows/common_quickstart.yml + with: + product: Config + is_legacy: false + setup_command: scripts/setup_quickstart.sh config + plist_src_path: scripts/gha-encrypted/qs-config.plist.gpg + plist_dst_path: quickstart-ios/config/GoogleService-Info.plist + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - 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 quickstart - run: scripts/setup_quickstart.sh config - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ - quickstart-ios/config/GoogleService-Info.plist "$plist_secret" - - name: Test Swift Quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Config true) - # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. - # quickstart-ftl-cron-only: - # # Don't run on private repo. + # # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. + # # quickstart-ftl-cron-only: + # # # Don't run on private repo. + # # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + # # env: + # # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # # runs-on: macos-14 + # # steps: + # # - uses: actions/checkout@v4 + # # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # # - uses: actions/setup-python@v5 + # # with: + # # python-version: '3.11' + # # - name: Setup quickstart + # # run: scripts/setup_quickstart.sh config + # # - name: Install Secret GoogleService-Info.plist + # # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ + # # quickstart-ios/config/GoogleService-Info.plist "$plist_secret" + # # - name: Build Swift Quickstart + # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Config) + # # - 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" + + # sample-build-test: + # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-14 + # 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 - # run: scripts/setup_quickstart.sh config - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ - # quickstart-ios/config/GoogleService-Info.plist "$plist_secret" - # - name: Build Swift Quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Config) - # - id: ftl_test - # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 # with: - # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} - # testapp_dir: quickstart-ios/build-for-testing - # test_type: "xctest" - - sample-build-test: - # 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' - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: build-test - - 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: Prereqs - run: scripts/install_prereqs.sh RemoteConfigSample iOS - - name: Build - run: scripts/build.sh RemoteConfigSample iOS + # cache_key: build-test + # - 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: Prereqs + # run: scripts/install_prereqs.sh RemoteConfigSample iOS + # - name: Build + # 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 }} + # 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 }} diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 910f91f480c..41ce549b511 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -24,141 +24,126 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: FirebaseStorageUnit + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: FirebaseStorageUnit - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseStorage - target: FirebaseStorage-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseStorage + # target: FirebaseStorage-Unit-unit - storage-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' - strategy: - matrix: - language: [Swift, ObjC] - include: - - os: macos-15 - xcode: Xcode_16.4 - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: integration${{ matrix.os }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Install xcpretty - run: gem install xcpretty - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/storage-db-plist.gpg \ - FirebaseStorage/Tests/Integration/Resources/GoogleService-Info.plist "$plist_secret" - - name: Install Credentials.h - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.h.gpg \ - FirebaseStorage/Tests/ObjCIntegration/Credentials.h "$plist_secret" - - name: Install Credentials.swift - run: | - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.swift.gpg \ - FirebaseStorage/Tests/Integration/Credentials.swift "$plist_secret" - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.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 Storage${{ matrix.language }} all) + # storage-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' + # strategy: + # matrix: + # language: [Swift, ObjC] + # include: + # - os: macos-15 + # xcode: Xcode_16.4 + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: ${{ matrix.os }} + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: integration${{ matrix.os }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: scripts/setup_bundler.sh + # - name: Install xcpretty + # run: gem install xcpretty + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/storage-db-plist.gpg \ + # FirebaseStorage/Tests/Integration/Resources/GoogleService-Info.plist "$plist_secret" + # - name: Install Credentials.h + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.h.gpg \ + # FirebaseStorage/Tests/ObjCIntegration/Credentials.h "$plist_secret" + # - name: Install Credentials.swift + # run: | + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.swift.gpg \ + # FirebaseStorage/Tests/Integration/Credentials.swift "$plist_secret" + # - name: Xcode + # run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.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 Storage${{ matrix.language }} all) quickstart: - # 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' # TODO: See #12399 and restore Objective-C testing for Xcode 15 if GHA is fixed. - strategy: - matrix: - include: - #- os: macos-13 - # xcode: Xcode_14.2 # TODO: the legacy ObjC quickstart doesn't build with Xcode 15. - - swift: swift - os: macos-15 - xcode: Xcode_16.4 - env: + uses: ./.github/workflows/common_quickstart.yml + with: + product: Storage + quickstart_type: swift + is_legacy: true + setup_command: scripts/setup_quickstart.sh storage + plist_src_path: scripts/gha-encrypted/qs-storage.plist.gpg + plist_dst_path: quickstart-ios/storage/GoogleService-Info.plist + run_tests: false + secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - LEGACY: true - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup quickstart - run: scripts/setup_quickstart.sh storage - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ - quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" - - name: Xcode - run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - - name: Test quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Storage false ${{ matrix.swift }}) - 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 }} - LEGACY: true - 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 - run: scripts/setup_quickstart.sh storage - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ - quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" - # - name: Build objc quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage) - - name: Build swift quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage swift) - - 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" + # 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 }} + # LEGACY: true + # 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 + # run: scripts/setup_quickstart.sh storage + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ + # quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" + # # - name: Build objc quickstart + # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage) + # - name: Build swift quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage swift) + # - 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" - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseStorage - test_specs: unit + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseStorage + # 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 + # 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 From af0198d661095d7ee549eeb2878591a7cbd899d2 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 18:56:29 -0400 Subject: [PATCH 13/27] comment out --- .github/workflows/crashlytics.yml | 154 ++++++------ .github/workflows/inappmessaging.yml | 112 ++++----- .github/workflows/messaging.yml | 356 +++++++++++++-------------- .github/workflows/performance.yml | 184 +++++++------- 4 files changed, 402 insertions(+), 404 deletions(-) diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index d0dc260530f..d03304bef2d 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -24,26 +24,24 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: FirebaseCrashlyticsUnit + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: FirebaseCrashlyticsUnit - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseCrashlytics - target: FirebaseCrashlytics-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseCrashlytics + # target: FirebaseCrashlytics-Unit-unit - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseCrashlytics - buildonly_platforms: tvOS, macOS, watchOS + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseCrashlytics + # buildonly_platforms: tvOS, macOS, watchOS quickstart: - # 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' uses: ./.github/workflows/common_quickstart.yml with: product: Crashlytics @@ -60,68 +58,68 @@ jobs: 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: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup quickstart - run: scripts/setup_quickstart.sh crashlytics - env: - LEGACY: true - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ - quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" - - name: Build swift quickstart - run: | - mkdir quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics - # Set the deployed pod location of run and upload-symbols with the development pod version. - cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ - cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ - ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Crashlytics swift) - env: - LEGACY: true - - 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: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh crashlytics + # env: + # LEGACY: true + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ + # quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" + # - name: Build swift quickstart + # run: | + # mkdir quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics + # # Set the deployed pod location of run and upload-symbols with the development pod version. + # cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ + # cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ + # ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Crashlytics swift) + # env: + # LEGACY: true + # - 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" - crashlytics-cron-only: - # Don't run on private repo. - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + # 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 }} + # 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 }} diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index 8d34215a7c4..fc7f377397b 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -22,67 +22,67 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: FirebaseInAppMessaging-Beta - platforms: iOS - buildonly_platforms: iOS +# spm: +# uses: ./.github/workflows/common.yml +# with: +# target: FirebaseInAppMessaging-Beta +# platforms: iOS +# buildonly_platforms: iOS - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebaseInAppMessaging - platforms: iOS, tvOS +# pod_lib_lint: +# uses: ./.github/workflows/common_cocoapods.yml +# with: +# product: FirebaseInAppMessaging +# platforms: iOS, tvOS - 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' +# 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' -# TODO(#12770): Update to macos-14 when tests are updated for Xcode 15. - runs-on: macos-15 - strategy: - matrix: -# TODO(#8682): Reenable iPad after fixing Xcode 13 test failures. -# platform: [iOS, iPad] - platform: [iOS] - xcode: [Xcode_16.4] - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: ${{ matrix.platform }} - - 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: Prereqs - run: scripts/install_prereqs.sh InAppMessaging ${{ matrix.platform }} xcodebuild - - name: Build and test - run: scripts/third_party/travis/retry.sh scripts/build.sh InAppMessaging ${{ matrix.platform }} xcodebuild +# # TODO(#12770): Update to macos-14 when tests are updated for Xcode 15. +# runs-on: macos-15 +# strategy: +# matrix: +# # TODO(#8682): Reenable iPad after fixing Xcode 13 test failures. +# # platform: [iOS, iPad] +# platform: [iOS] +# xcode: [Xcode_16.4] +# steps: +# - uses: actions/checkout@v4 +# - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 +# with: +# cache_key: ${{ matrix.platform }} +# - 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: Prereqs +# run: scripts/install_prereqs.sh InAppMessaging ${{ matrix.platform }} xcodebuild +# - name: Build and test +# 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' +# 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 }} +# 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 }} quickstart: uses: ./.github/workflows/common_quickstart.yml diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index 0f38b543038..2a28206ddb9 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -30,54 +30,54 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: MessagingUnit - buildonly_platforms: tvOS, macOS, watchOS, catalyst, visionOS + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: MessagingUnit + # buildonly_platforms: tvOS, macOS, watchOS, catalyst, visionOS - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseMessaging - target: FirebaseMessaging-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseMessaging + # target: FirebaseMessaging-Unit-unit - pod_lib_lint: - strategy: - matrix: - product: [FirebaseMessagingInterop, FirebaseMessaging] - uses: ./.github/workflows/common_cocoapods.yml - with: - product: ${{ matrix.product }} + # pod_lib_lint: + # strategy: + # matrix: + # product: [FirebaseMessagingInterop, FirebaseMessaging] + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: ${{ matrix.product }} - # TODO(#12205) Update the build.sh script for this job from "test" instead of "build" - messaging-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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: integration - - name: Configure test keychain - run: scripts/configure_test_keychain.sh - - 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: Install xcpretty - run: gem install xcpretty - - name: Install Secret GoogleService-Info.plist - run: | - mkdir FirebaseMessaging/Tests/IntegrationTests/Resources - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - FirebaseMessaging/Tests/IntegrationTests/Resources/GoogleService-Info.plist "$plist_secret" - - name: BuildAndTest - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) + # # TODO(#12205) Update the build.sh script for this job from "test" instead of "build" + # messaging-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' + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: integration + # - name: Configure test keychain + # run: scripts/configure_test_keychain.sh + # - 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: Install xcpretty + # run: gem install xcpretty + # - name: Install Secret GoogleService-Info.plist + # run: | + # mkdir FirebaseMessaging/Tests/IntegrationTests/Resources + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + # FirebaseMessaging/Tests/IntegrationTests/Resources/GoogleService-Info.plist "$plist_secret" + # - name: BuildAndTest + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) quickstart: # Don't run on private repo unless it is a PR. @@ -97,141 +97,141 @@ jobs: 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' - 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: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup quickstart - run: scripts/setup_quickstart.sh messaging - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ - quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" - - name: Build objc quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging) - - name: Build swift quickstart - run: ([ -z $plist_secret ] || - scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging swift) - - 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" + # 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: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh messaging + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ + # quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" + # - name: Build objc quickstart + # run: ([ -z $plist_secret ] || + # scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging) + # - name: Build swift quickstart + # run: ([ -z $plist_secret ] || + # scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging swift) + # - 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" - 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 + # 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 - messaging-sample-build-test: - # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: sample${{ matrix.os }} - - 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: Install Secret GoogleService-Info.plist - run: | - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - - name: Prereqs - run: scripts/install_prereqs.sh MessagingSample iOS - - name: Build - run: ([ -z $plist_secret ] || scripts/build.sh MessagingSample iOS) + # messaging-sample-build-test: + # # 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' + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: sample${{ matrix.os }} + # - 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: Install Secret GoogleService-Info.plist + # run: | + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + # - name: Prereqs + # run: scripts/install_prereqs.sh MessagingSample iOS + # - name: Build + # run: ([ -z $plist_secret ] || scripts/build.sh MessagingSample iOS) - messaging-swiftui-sample-build-test: - # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: sample${{ matrix.os }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Install Secret GoogleService-Info.plist - run: | - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - - name: Prereqs - run: scripts/install_prereqs.sh SwiftUISample iOS - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Build - run: ([ -z $plist_secret ] || scripts/build.sh SwiftUISample iOS) + # messaging-swiftui-sample-build-test: + # # 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' + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: sample${{ matrix.os }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: scripts/setup_bundler.sh + # - name: Install Secret GoogleService-Info.plist + # run: | + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + # - name: Prereqs + # run: scripts/install_prereqs.sh SwiftUISample iOS + # - name: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Build + # run: ([ -z $plist_secret ] || scripts/build.sh SwiftUISample iOS) - messaging-watchos-standalone-sample-build-test: - # 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' - env: - plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - runs-on: macos-15 - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: watch-sample${{ matrix.os }} - - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - - name: Setup Bundler - run: scripts/setup_bundler.sh - - name: Install Secret GoogleService-Info.plist - run: | - scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - - name: Prereqs - run: scripts/install_prereqs.sh MessagingSampleStandaloneWatchApp watchOS - - name: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Build - run: ([ -z $plist_secret ] || scripts/build.sh MessagingSampleStandaloneWatchApp watchOS) - - name: Upload xcodebuild logs - if: failure() - uses: actions/upload-artifact@v4 - with: - name: xcodebuild-logs-${{ matrix.target }} - path: xcodebuild-*.log + # messaging-watchos-standalone-sample-build-test: + # # 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' + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: watch-sample${{ matrix.os }} + # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + # - name: Setup Bundler + # run: scripts/setup_bundler.sh + # - name: Install Secret GoogleService-Info.plist + # run: | + # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + # - name: Prereqs + # run: scripts/install_prereqs.sh MessagingSampleStandaloneWatchApp watchOS + # - name: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Build + # run: ([ -z $plist_secret ] || scripts/build.sh MessagingSampleStandaloneWatchApp watchOS) + # - name: Upload xcodebuild logs + # if: failure() + # uses: actions/upload-artifact@v4 + # with: + # name: xcodebuild-logs-${{ matrix.target }} + # path: xcodebuild-*.log diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 7d16dfc5dcf..e118f6fc574 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -31,53 +31,53 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: PerformanceUnit - platforms: iOS, tvOS + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: PerformanceUnit + # platforms: iOS, tvOS - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebasePerformance - target: - buildonly: true + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebasePerformance + # target: + # buildonly: true - # Build and run the unit tests for Firebase performance SDK. - performance: - # 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' - runs-on: macos-15 - strategy: - matrix: - target: [iOS, tvOS] - test: [unit, proddev] - steps: - - uses: actions/checkout@v4 - - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - with: - cache_key: ${{ matrix.target }}${{ matrix.test }} - - 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: Install xcpretty - run: gem install xcpretty - - name: BuildAndTest # can be replaced with pod lib lint with CocoaPods 1.10 - run: scripts/third_party/travis/retry.sh scripts/build.sh Performance ${{ matrix.target }} ${{ matrix.test }} + # # Build and run the unit tests for Firebase performance SDK. + # performance: + # # 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' + # runs-on: macos-15 + # strategy: + # matrix: + # target: [iOS, tvOS] + # test: [unit, proddev] + # steps: + # - uses: actions/checkout@v4 + # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + # with: + # cache_key: ${{ matrix.target }}${{ matrix.test }} + # - 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: Install xcpretty + # run: gem install xcpretty + # - name: BuildAndTest # can be replaced with pod lib lint with CocoaPods 1.10 + # run: scripts/third_party/travis/retry.sh scripts/build.sh Performance ${{ matrix.target }} ${{ matrix.test }} - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml - with: - product: FirebasePerformance - platforms: iOS, tvOS - #TODO: tests are not supported with Xcode 15 because the test spec depends on the iOS 8 GDCWebServer - buildonly_platforms: iOS, tvOS + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebasePerformance + # platforms: iOS, tvOS + # #TODO: tests are not supported with Xcode 15 because the test spec depends on the iOS 8 GDCWebServer + # buildonly_platforms: iOS, tvOS - quickstart: - if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + # TODO: The legacy ObjC quickstarts don't run with Xcode 15, re-able if we get these working. + quickstart: uses: ./.github/workflows/common_quickstart.yml with: product: Performance @@ -89,54 +89,54 @@ jobs: secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - quickstart-ftl-cron-only: - if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' + # quickstart-ftl-cron-only: + # 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: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup quickstart - run: scripts/setup_quickstart.sh performance - - name: Install Secret GoogleService-Info.plist - run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \ - quickstart-ios/performance/GoogleService-Info.plist "$plist_secret" - - name: Build swift quickstart - run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance swift) - # - name: Build objc quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance) - - 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: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh performance + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \ + # quickstart-ios/performance/GoogleService-Info.plist "$plist_secret" + # - name: Build swift quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance swift) + # # - name: Build objc quickstart + # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance) + # - 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" - 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 }} + # 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 }} From abc979ba07bcd22cf4ddfecac61ff473419dd326 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 19:18:15 -0400 Subject: [PATCH 14/27] trailing: --- .github/workflows/performance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index e118f6fc574..1a633a008f0 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -77,7 +77,7 @@ jobs: # buildonly_platforms: iOS, tvOS # TODO: The legacy ObjC quickstarts don't run with Xcode 15, re-able if we get these working. - quickstart: + quickstart: uses: ./.github/workflows/common_quickstart.yml with: product: Performance From 639dd8d3241b54c6b757ed43ace331ab439f1505 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:13:58 -0400 Subject: [PATCH 15/27] Remove guardS --- .github/workflows/messaging.yml | 2 -- .github/workflows/remoteconfig.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index 2a28206ddb9..97d5fd1acaa 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -80,8 +80,6 @@ jobs: # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) quickstart: - # 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' uses: ./.github/workflows/common_quickstart.yml strategy: matrix: diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 28879632bbb..9c8cca69880 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -84,8 +84,6 @@ jobs: # product: FirebaseRemoteConfig quickstart: - # 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' uses: ./.github/workflows/common_quickstart.yml with: product: Config From 5ca5414ad4a6e19a5ecfa9db536feae7a40831fa Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:20:44 -0400 Subject: [PATCH 16/27] fis --- .github/workflows/installations.yml | 194 ++++++++++++++-------------- 1 file changed, 95 insertions(+), 99 deletions(-) diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index 8a87c9dd341..1046151a55c 100644 --- a/.github/workflows/installations.yml +++ b/.github/workflows/installations.yml @@ -22,111 +22,107 @@ concurrency: cancel-in-progress: true jobs: - spm: - uses: ./.github/workflows/common.yml - with: - target: FirebaseInstallations - buildonly_platforms: all + # spm: + # uses: ./.github/workflows/common.yml + # with: + # target: FirebaseInstallations + # buildonly_platforms: all - catalyst: - uses: ./.github/workflows/common_catalyst.yml - with: - product: FirebaseInstallations - target: FirebaseInstallations-Unit-unit + # catalyst: + # uses: ./.github/workflows/common_catalyst.yml + # with: + # product: FirebaseInstallations + # target: FirebaseInstallations-Unit-unit + + # pod_lib_lint: + # uses: ./.github/workflows/common_cocoapods.yml + # with: + # product: FirebaseInstallations + # 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" + # export FIS_INTEGRATION_TESTS_REQUIRED=1 + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - pod_lib_lint: - uses: ./.github/workflows/common_cocoapods.yml + quickstart: + uses: ./.github/workflows/common_quickstart.yml + strategy: + matrix: + quickstart_type: [objc, swift] with: - product: FirebaseInstallations - 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" - export FIS_INTEGRATION_TESTS_REQUIRED=1 + product: Installations + is_legacy: false + setup_command: scripts/setup_quickstart.sh installations + plist_src_path: scripts/gha-encrypted/Installations/GoogleService-Info.plist.gpg + plist_dst_path: quickstart-ios/installations/GoogleService-Info.plist + quickstart_type: ${{ matrix.quickstart_type }} secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - quickstart: - # 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' - - runs-on: macos-15 - 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 quickstart - run: scripts/setup_quickstart.sh installations - - name: Copy mock plist - run: cp quickstart-ios/mock-GoogleService-Info.plist quickstart-ios/installations/GoogleService-Info.plist - - name: Test objc quickstart - run: scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Installations true - - name: Test swift quickstart - run: scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Installations true swift - - 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' - 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: Xcode - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - - name: Setup quickstart - run: scripts/setup_quickstart.sh installations - - name: Copy mock plist - run: cp quickstart-ios/mock-GoogleService-Info.plist quickstart-ios/installations/GoogleService-Info.plist - - name: Build objc quickstart - run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations - - name: Build swift quickstart - run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations swift - - 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" + # 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: Xcode + # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh installations + # - name: Copy mock plist + # run: cp quickstart-ios/mock-GoogleService-Info.plist quickstart-ios/installations/GoogleService-Info.plist + # - name: Build objc quickstart + # run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations + # - name: Build swift quickstart + # run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations swift + # - 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" - installations-cron-only: - if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + # 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: | - 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 }} \ + # 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: | + # 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 }} \ From 9f35987246ba3708d65f7d0f1571dd25172c3f1d Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:28:52 -0400 Subject: [PATCH 17/27] doc comment --- .github/workflows/functions.yml | 41 +++++++++++++-------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/.github/workflows/functions.yml b/.github/workflows/functions.yml index 4cc466aa26e..0563dea4059 100644 --- a/.github/workflows/functions.yml +++ b/.github/workflows/functions.yml @@ -50,32 +50,23 @@ jobs: with: target: FirebaseFunctionsUnit - # TODO: Move to macos-14 and Xcode 15. The legacy quickstart uses material which doesn't build on Xcode 15. + # TODO: The legacy quickstart uses material which doesn't build on Xcode 15. # quickstart: - # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # LEGACY: true - # # TODO: Move to macos-14 and Xcode 15. The legacy quickstart uses material which doesn't build on Xcode 15. - # runs-on: macos-12 - - # steps: - # - uses: actions/checkout@v4 - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh functions - # - name: install secret googleservice-info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-functions.plist.gpg \ - # quickstart-ios/functions/GoogleService-Info.plist "$plist_secret" - # - name: Setup custom URL scheme - # run: sed -i '' 's/REVERSED_CLIENT_ID/com.googleusercontent.apps.1025801074639-6p6ebi8amuklcjrto20gvpe295smm8u6/' quickstart-ios/functions/LegacyFunctionsQuickstart/FunctionsExample/Info.plist - # - name: Test objc quickstart - # run: ([ -z $plist_secret ] || - # scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true) - # - name: Test swift quickstart - # run: ([ -z $plist_secret ] || - # scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true swift) + # uses: ./.github/workflows/common_quickstart.yml + # strategy: + # matrix: + # quickstart_type: [objc, swift] + # with: + # product: Functions + # is_legacy: true + # setup_command: | + # scripts/setup_quickstart.sh functions + # sed -i '' 's/REVERSED_CLIENT_ID/com.googleusercontent.apps.1025801074639-6p6ebi8amuklcjrto20gvpe295smm8u6/' quickstart-ios/functions/LegacyFunctionsQuickstart/FunctionsExample/Info.plist + # plist_src_path: scripts/gha-encrypted/qs-functions.plist.gpg + # plist_dst_path: quickstart-ios/functions/GoogleService-Info.plist + # quickstart_type: ${{ matrix.quickstart_type }} + # secrets: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # quickstart-ftl-cron-only: # # Don't run on private repo From fadcd6551d41e77776a7f1ceb80ac0a4b323bba8 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:37:01 -0400 Subject: [PATCH 18/27] fst --- .github/workflows/firestore.yml | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/.github/workflows/firestore.yml b/.github/workflows/firestore.yml index 05b609aa0f7..2a935f81fa0 100644 --- a/.github/workflows/firestore.yml +++ b/.github/workflows/firestore.yml @@ -598,23 +598,16 @@ jobs: if: needs.*.result == 'failure' run: exit 1 - # Disable until FirebaseUI is updated to accept Firebase 9 and quickstart is updated to accept - # Firebase UI 12 + # TODO: Disable until FirebaseUI is updated to accept Firebase 9 and + # quickstart is updated to accept Firebase UI 12 # quickstart: - # # 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' - # env: + # uses: ./.github/workflows/common_quickstart.yml + # with: + # product: Firestore + # is_legacy: true + # setup_command: scripts/setup_quickstart.sh firestore + # plist_src_path: scripts/gha-encrypted/qs-firestore.plist.gpg + # plist_dst_path: quickstart-ios/firestore/GoogleService-Info.plist + # run_tests: false + # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-14 - # needs: check - - # steps: - # - uses: actions/checkout@v4 - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh firestore - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \ - # quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret" - # - name: Test swift quickstart - # run: ([ -z $plist_secret ] || - # scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Firestore false) From f42d423e40edd7f7b3af3e25c353a2341beb0523 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:44:24 -0400 Subject: [PATCH 19/27] add comments --- .github/workflows/common_quickstart.yml | 32 ++++++++++--------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 54fa4608274..05df0b9a2b2 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -7,19 +7,15 @@ on: workflow_call: # Re-usable workflows do not automatically inherit the caller's secrets. # - # If the calling workflow uses a secret in the `setup_command` input, then - # it also must pass the secret to the re-usable workflow. + # This workflow decrypts encrypted files, so the calling workflow needs to + # pass the secret to the re-usable workflow. # # Example: # - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml + # quickstart: + # uses: ./.github/workflows/common_quickstart.yml # with: - # product: FirebaseFoo - # setup_command: | - # scripts/decrypt_gha_secret.sh \ - # /path/to/GoogleService-Info.plist.gpg \ - # /path/to/dest/GoogleService-Info.plist "$plist_secret" + # # ... # secrets: # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # @@ -28,30 +24,34 @@ on: required: true inputs: - # The product to test be tested (e.g. `FirebaseABTesting`). + # The product to test be tested (e.g. `ABTesting`). product: type: string required: true - # TODO: What does this mean? + # TODO(docs): What does this mean? is_legacy: type: boolean required: true + # TODO(docs): plist_src_path: type: string required: true + # TODO(docs): plist_dst_path: type: string required: true + # TODO(docs): # swift or objc quickstart_type: type: string required: false default: objc + # TODO(docs): run_tests: type: boolean required: false @@ -59,14 +59,7 @@ on: # A command to execute before testing. # - # This is useful for additional set up, like starting an emulator or - # downloading test data. - # - # Note, this step has an env var set to decrypt plists. Use - # "$plist_secret" in the given command. See `secrets` documentation - # at top of this file. - # - # Example: `FirebaseFunctions/Backend/start.sh synchronous` + # Example: `scripts/setup_quickstart.sh functions` setup_command: type: string required: false @@ -108,6 +101,7 @@ jobs: ${{ inputs.run_tests }} \ ${{ inputs.quickstart_type }} # TODO: Add upload on fialure. + # TODO: Remove the decrypted repo secret. # - name: Upload raw logs if failed. # if: ${{ failure() }} # uses: actions/upload-artifact@v4 From 3bc88ad49fc43402c71dd901d9f25b46655b6620 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Mon, 25 Aug 2025 21:47:47 -0400 Subject: [PATCH 20/27] docs --- .github/workflows/common_quickstart.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 05df0b9a2b2..b9ec25325ed 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -29,29 +29,30 @@ on: type: string required: true - # TODO(docs): What does this mean? + # Whether to test the legacy version of the quickstart. is_legacy: type: boolean required: true - # TODO(docs): + # The path to the encrypted `GoogleService-Info.plist` file. plist_src_path: type: string required: true - # TODO(docs): + # The destination path for the decrypted `GoogleService-Info.plist` file. plist_dst_path: type: string required: true - # TODO(docs): - # swift or objc + # The type of quickstart to test. + # + # Options: [swift, objc] quickstart_type: type: string required: false default: objc - # TODO(docs): + # Whether to run tests or just build. Defaults to true. run_tests: type: boolean required: false From cd517c4d94515725a13e13f2dcf445b1bd0bb1e4 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 10:54:16 -0400 Subject: [PATCH 21/27] test --- .github/workflows/common_quickstart.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index b9ec25325ed..cfe37e5934f 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -74,6 +74,10 @@ jobs: plist_secret: ${{ secrets.plist_secret }} runs-on: macos-15 steps: + - id: lowercase_product + run: echo "lowercase_product=${${{ inputs.product }},,}" >> $GITHUB_OUTPUT + - name: Remove data before upload. + run: echo hello_${{ steps.lowercase_product.outputs.lowercase_product }} - uses: actions/checkout@v4 - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - name: Xcode @@ -101,11 +105,11 @@ jobs: ${{ inputs.product }} \ ${{ inputs.run_tests }} \ ${{ inputs.quickstart_type }} - # TODO: Add upload on fialure. - # TODO: Remove the decrypted repo secret. - # - name: Upload raw logs if failed. - # if: ${{ failure() }} - # uses: actions/upload-artifact@v4 - # with: - # name: - # path: + - name: Remove data before upload. + if: ${{ failure() }} + run: scripts/remove_data.sh ${{ steps.lowercase_product.outputs.lowercase_product }} + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: quickstart_artifacts_${{ steps.lowercase_product.outputs.lowercase_product }} + path: quickstart-ios/ From 88ff6328dd3869a8bed89363b9d3dc62fdb9bd03 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 10:56:39 -0400 Subject: [PATCH 22/27] m --- .github/workflows/common_quickstart.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index cfe37e5934f..a596156c82c 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -75,7 +75,7 @@ jobs: runs-on: macos-15 steps: - id: lowercase_product - run: echo "lowercase_product=${${{ inputs.product }},,}" >> $GITHUB_OUTPUT + run: echo "lowercase_product=${"${{ inputs.product }}",,}" >> $GITHUB_OUTPUT - name: Remove data before upload. run: echo hello_${{ steps.lowercase_product.outputs.lowercase_product }} - uses: actions/checkout@v4 From 07b5446f918abcf6c3ba4ea5abc85afa2642620a Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 10:59:03 -0400 Subject: [PATCH 23/27] m --- .github/workflows/common_quickstart.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index a596156c82c..3c79d974db3 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -75,7 +75,8 @@ jobs: runs-on: macos-15 steps: - id: lowercase_product - run: echo "lowercase_product=${"${{ inputs.product }}",,}" >> $GITHUB_OUTPUT + shell: bash + run: echo "lowercase_product=${{ inputs.product,, }}" >> $GITHUB_OUTPUT - name: Remove data before upload. run: echo hello_${{ steps.lowercase_product.outputs.lowercase_product }} - uses: actions/checkout@v4 From d6db29aa01f50c751833a436848c06aa26b0e9aa Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 11:00:32 -0400 Subject: [PATCH 24/27] m --- .github/workflows/common_quickstart.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 3c79d974db3..1efc7eb4ff7 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -75,8 +75,9 @@ jobs: runs-on: macos-15 steps: - id: lowercase_product - shell: bash - run: echo "lowercase_product=${{ inputs.product,, }}" >> $GITHUB_OUTPUT + run: | + lowercase_product=$(echo "${{ inputs.product }}" | tr '[:upper:]' '[:lower:]') + echo "lowercase_product=$lowercase_product" >> $GITHUB_OUTPUT - name: Remove data before upload. run: echo hello_${{ steps.lowercase_product.outputs.lowercase_product }} - uses: actions/checkout@v4 From 56a3978c8edfafeb7e5f5fde7ce3d052785fa31c Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 11:04:30 -0400 Subject: [PATCH 25/27] m --- .github/workflows/common_quickstart.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/common_quickstart.yml b/.github/workflows/common_quickstart.yml index 1efc7eb4ff7..a3f965796ea 100644 --- a/.github/workflows/common_quickstart.yml +++ b/.github/workflows/common_quickstart.yml @@ -72,21 +72,14 @@ jobs: if: (github.repository == 'firebase/firebase-ios-sdk' && github.event_name == 'schedule') || contains(fromJSON('["pull_request", "workflow_dispatch"]'), github.event_name) env: plist_secret: ${{ secrets.plist_secret }} + LEGACY: ${{ inputs.is_legacy && true || '' }} runs-on: macos-15 steps: - - id: lowercase_product - run: | - lowercase_product=$(echo "${{ inputs.product }}" | tr '[:upper:]' '[:lower:]') - echo "lowercase_product=$lowercase_product" >> $GITHUB_OUTPUT - - name: Remove data before upload. - run: echo hello_${{ steps.lowercase_product.outputs.lowercase_product }} - 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: Run setup command. - env: - LEGACY: ${{ inputs.is_legacy && true || '' }} run: ${{ inputs.setup_command }} - name: Install Secret GoogleService-Info.plist run: | @@ -96,8 +89,6 @@ jobs: "$plist_secret" - name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && 'Legacy' || 'Non-Legacy' }}) uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - env: - LEGACY: ${{ inputs.is_legacy && true || '' }} with: timeout_minutes: 15 max_attempts: 3 @@ -107,6 +98,12 @@ jobs: ${{ inputs.product }} \ ${{ inputs.run_tests }} \ ${{ inputs.quickstart_type }} + # Failure sequence to upload artifact. + - id: lowercase_product + if: ${{ failure() }} + run: | + lowercase_product=$(echo "${{ inputs.product }}" | tr '[:upper:]' '[:lower:]') + echo "lowercase_product=$lowercase_product" >> $GITHUB_OUTPUT - name: Remove data before upload. if: ${{ failure() }} run: scripts/remove_data.sh ${{ steps.lowercase_product.outputs.lowercase_product }} From 493ab6e23c6fe0315dcadf085eea9fb9820df32c Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 11:13:07 -0400 Subject: [PATCH 26/27] Add triggers --- .github/workflows/abtesting.yml | 1 + .github/workflows/auth.yml | 1 + .github/workflows/crashlytics.yml | 1 + .github/workflows/database.yml | 1 + .github/workflows/inappmessaging.yml | 1 + .github/workflows/installations.yml | 1 + .github/workflows/messaging.yml | 1 + .github/workflows/performance.yml | 1 + .github/workflows/remoteconfig.yml | 1 + .github/workflows/storage.yml | 1 + 10 files changed, 10 insertions(+) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 4cd9125b776..9903b66dfcb 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.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 8c0e13f794d..c91b74a4583 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' - 'scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg' - 'Gemfile*' schedule: diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index d03304bef2d..7a9d17b7085 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' - 'Interop/Analytics/Public/*.h' - 'Gemfile*' schedule: diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index cf46b15d6a4..e7e309aaa64 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -16,6 +16,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' - 'Gemfile*' - 'scripts/run_database_emulator.sh' schedule: diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index fc7f377397b..c568d036742 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/inappmessaging.yml' - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' + - '.github/workflows/common_quickstart.yml' - 'Gemfile*' schedule: # Run every day at 11pm (PDT) / 2am (EDT) - cron uses UTC times diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index 1046151a55c..cbad29d7c54 100644 --- a/.github/workflows/installations.yml +++ b/.github/workflows/installations.yml @@ -12,6 +12,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' - 'Gemfile*' schedule: # Run every day at 11pm (PDT) / 2am (EDT) - cron uses UTC times diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index 97d5fd1acaa..82a34d26af2 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -19,6 +19,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' # Rebuild on Ruby infrastructure changes - 'Gemfile*' schedule: diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 1a633a008f0..b1f4e680444 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -19,6 +19,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' # Rebuild on Ruby infrastructure changes - 'Gemfile*' schedule: diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 15fb7bc152e..fb06606335b 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' - 'Gemfile*' - 'scripts/generate_access_token.sh' - 'scripts/gha-encrypted/RemoteConfigSwiftAPI/**' diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 41ce549b511..9d85623ad2b 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -13,6 +13,7 @@ on: - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' + - '.github/workflows/common_quickstart.yml' # Rebuild on Ruby infrastructure changes. - 'Gemfile*' schedule: From 0a10a6a71288c8efbf29689ab3bde2e3d7e03f02 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 26 Aug 2025 11:17:27 -0400 Subject: [PATCH 27/27] re-enable --- .github/workflows/abtesting.yml | 132 +++++----- .github/workflows/auth.yml | 222 ++++++++--------- .github/workflows/crashlytics.yml | 152 ++++++------ .github/workflows/database.yml | 116 ++++----- .github/workflows/inappmessaging.yml | 112 ++++----- .github/workflows/installations.yml | 166 ++++++------- .github/workflows/messaging.yml | 356 +++++++++++++-------------- .github/workflows/performance.yml | 180 +++++++------- .github/workflows/remoteconfig.yml | 240 +++++++++--------- .github/workflows/storage.yml | 208 ++++++++-------- 10 files changed, 942 insertions(+), 942 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 9903b66dfcb..6edd5ef83b0 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -24,21 +24,21 @@ concurrency: 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 @@ -51,59 +51,59 @@ jobs: 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' + 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 }} + 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 }} diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index c91b74a4583..299397fc81e 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -28,69 +28,69 @@ concurrency: 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 @@ -104,63 +104,63 @@ jobs: 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: - # # # Don't run on private repo. - # # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - - # # env: - # # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # runs-on: macos-14 - # # steps: - # # - uses: actions/checkout@v4 - # # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # # - uses: actions/setup-python@v5 - # # with: - # # python-version: '3.11' - # # - name: Setup quickstart - # # run: scripts/setup_quickstart.sh authentication - # # - name: Install Secret GoogleService-Info.plist - # # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \ - # # quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" - # # - name: Build swift quickstart - # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Authentication) - # # - 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" - - # auth-cron-only: + # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. + # quickstart-ftl-cron-only: # # Don't run on private repo. - # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - # 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 }} + # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} # runs-on: macos-14 # 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 + # - uses: actions/setup-python@v5 # 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 }} + # python-version: '3.11' + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh authentication + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-auth.plist.gpg \ + # quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret" + # - name: Build swift quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Authentication) + # - 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" + + 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 }} + runs-on: macos-14 + 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 }} diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index 7a9d17b7085..e88f692ebc3 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -25,22 +25,22 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: FirebaseCrashlyticsUnit + spm: + uses: ./.github/workflows/common.yml + with: + target: FirebaseCrashlyticsUnit - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseCrashlytics - # target: FirebaseCrashlytics-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseCrashlytics + target: FirebaseCrashlytics-Unit-unit - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseCrashlytics - # buildonly_platforms: tvOS, macOS, watchOS + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseCrashlytics + buildonly_platforms: tvOS, macOS, watchOS quickstart: uses: ./.github/workflows/common_quickstart.yml @@ -59,68 +59,68 @@ jobs: 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: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh crashlytics - # env: - # LEGACY: true - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ - # quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" - # - name: Build swift quickstart - # run: | - # mkdir quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics - # # Set the deployed pod location of run and upload-symbols with the development pod version. - # cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ - # cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ - # ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Crashlytics swift) - # env: - # LEGACY: true - # - 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: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Setup quickstart + run: scripts/setup_quickstart.sh crashlytics + env: + LEGACY: true + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \ + quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret" + - name: Build swift quickstart + run: | + mkdir quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics + # Set the deployed pod location of run and upload-symbols with the development pod version. + cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ + cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/ + ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Crashlytics swift) + env: + LEGACY: true + - 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" - # crashlytics-cron-only: - # # Don't run on private repo. - # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + 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 }} + 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 }} diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index e7e309aaa64..a5a297b445f 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -28,46 +28,46 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # strategy: - # matrix: - # target: [DatabaseUnit, DatabaseUnitSwift] - # uses: ./.github/workflows/common.yml - # with: - # target: ${{ matrix.target }} + spm: + strategy: + matrix: + target: [DatabaseUnit, DatabaseUnitSwift] + uses: ./.github/workflows/common.yml + with: + target: ${{ matrix.target }} - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseDatabase - # target: FirebaseDatabase-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseDatabase + target: FirebaseDatabase-Unit-unit - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseDatabase - # test_specs: unit - # buildonly_platforms: macOS + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseDatabase + test_specs: unit + buildonly_platforms: macOS - # integration: - # # 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' - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: integration${{ matrix.os }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: scripts/setup_bundler.sh - # - name: Install xcpretty - # run: gem install xcpretty - # - name: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: IntegrationTest - # # Only iOS to mitigate flakes. - # run: scripts/third_party/travis/retry.sh scripts/build.sh Database iOS integration + integration: + # 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' + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: integration${{ matrix.os }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Install xcpretty + run: gem install xcpretty + - name: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: IntegrationTest + # Only iOS to mitigate flakes. + run: scripts/third_party/travis/retry.sh scripts/build.sh Database iOS integration quickstart: uses: ./.github/workflows/common_quickstart.yml @@ -85,24 +85,24 @@ jobs: secrets: 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 }} + 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 }} diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index c568d036742..61118a10d1f 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -23,67 +23,67 @@ concurrency: cancel-in-progress: true jobs: -# spm: -# uses: ./.github/workflows/common.yml -# with: -# target: FirebaseInAppMessaging-Beta -# platforms: iOS -# buildonly_platforms: iOS + spm: + uses: ./.github/workflows/common.yml + with: + target: FirebaseInAppMessaging-Beta + platforms: iOS + buildonly_platforms: iOS -# pod_lib_lint: -# uses: ./.github/workflows/common_cocoapods.yml -# with: -# product: FirebaseInAppMessaging -# platforms: iOS, tvOS + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseInAppMessaging + platforms: iOS, tvOS -# 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' + 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' -# # TODO(#12770): Update to macos-14 when tests are updated for Xcode 15. -# runs-on: macos-15 -# strategy: -# matrix: -# # TODO(#8682): Reenable iPad after fixing Xcode 13 test failures. -# # platform: [iOS, iPad] -# platform: [iOS] -# xcode: [Xcode_16.4] -# steps: -# - uses: actions/checkout@v4 -# - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 -# with: -# cache_key: ${{ matrix.platform }} -# - 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: Prereqs -# run: scripts/install_prereqs.sh InAppMessaging ${{ matrix.platform }} xcodebuild -# - name: Build and test -# run: scripts/third_party/travis/retry.sh scripts/build.sh InAppMessaging ${{ matrix.platform }} xcodebuild +# TODO(#12770): Update to macos-14 when tests are updated for Xcode 15. + runs-on: macos-15 + strategy: + matrix: +# TODO(#8682): Reenable iPad after fixing Xcode 13 test failures. +# platform: [iOS, iPad] + platform: [iOS] + xcode: [Xcode_16.4] + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: ${{ matrix.platform }} + - 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: Prereqs + run: scripts/install_prereqs.sh InAppMessaging ${{ matrix.platform }} xcodebuild + - name: Build and test + 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' + 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 }} + 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 }} quickstart: uses: ./.github/workflows/common_quickstart.yml diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index cbad29d7c54..54f95f0b67d 100644 --- a/.github/workflows/installations.yml +++ b/.github/workflows/installations.yml @@ -23,30 +23,30 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: FirebaseInstallations - # buildonly_platforms: all + spm: + uses: ./.github/workflows/common.yml + with: + target: FirebaseInstallations + buildonly_platforms: all - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseInstallations - # target: FirebaseInstallations-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseInstallations + target: FirebaseInstallations-Unit-unit - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseInstallations - # 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" - # export FIS_INTEGRATION_TESTS_REQUIRED=1 - # secrets: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseInstallations + 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" + export FIS_INTEGRATION_TESTS_REQUIRED=1 + secrets: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} quickstart: uses: ./.github/workflows/common_quickstart.yml @@ -63,67 +63,67 @@ jobs: 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' - # 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: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh installations - # - name: Copy mock plist - # run: cp quickstart-ios/mock-GoogleService-Info.plist quickstart-ios/installations/GoogleService-Info.plist - # - name: Build objc quickstart - # run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations - # - name: Build swift quickstart - # run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations swift - # - 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" + 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: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Setup quickstart + run: scripts/setup_quickstart.sh installations + - name: Copy mock plist + run: cp quickstart-ios/mock-GoogleService-Info.plist quickstart-ios/installations/GoogleService-Info.plist + - name: Build objc quickstart + run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations + - name: Build swift quickstart + run: scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Installations swift + - 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" - # installations-cron-only: - # if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' + 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: | - # 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 }} \ + 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: | + 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 }} \ diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index 82a34d26af2..b1227c3e9eb 100644 --- a/.github/workflows/messaging.yml +++ b/.github/workflows/messaging.yml @@ -31,54 +31,54 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: MessagingUnit - # buildonly_platforms: tvOS, macOS, watchOS, catalyst, visionOS + spm: + uses: ./.github/workflows/common.yml + with: + target: MessagingUnit + buildonly_platforms: tvOS, macOS, watchOS, catalyst, visionOS - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseMessaging - # target: FirebaseMessaging-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseMessaging + target: FirebaseMessaging-Unit-unit - # pod_lib_lint: - # strategy: - # matrix: - # product: [FirebaseMessagingInterop, FirebaseMessaging] - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: ${{ matrix.product }} + pod_lib_lint: + strategy: + matrix: + product: [FirebaseMessagingInterop, FirebaseMessaging] + uses: ./.github/workflows/common_cocoapods.yml + with: + product: ${{ matrix.product }} - # # TODO(#12205) Update the build.sh script for this job from "test" instead of "build" - # messaging-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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: integration - # - name: Configure test keychain - # run: scripts/configure_test_keychain.sh - # - 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: Install xcpretty - # run: gem install xcpretty - # - name: Install Secret GoogleService-Info.plist - # run: | - # mkdir FirebaseMessaging/Tests/IntegrationTests/Resources - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - # FirebaseMessaging/Tests/IntegrationTests/Resources/GoogleService-Info.plist "$plist_secret" - # - name: BuildAndTest - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) + # TODO(#12205) Update the build.sh script for this job from "test" instead of "build" + messaging-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' + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: integration + - name: Configure test keychain + run: scripts/configure_test_keychain.sh + - 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: Install xcpretty + run: gem install xcpretty + - name: Install Secret GoogleService-Info.plist + run: | + mkdir FirebaseMessaging/Tests/IntegrationTests/Resources + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + FirebaseMessaging/Tests/IntegrationTests/Resources/GoogleService-Info.plist "$plist_secret" + - name: BuildAndTest + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) quickstart: uses: ./.github/workflows/common_quickstart.yml @@ -96,141 +96,141 @@ jobs: 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' - # 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: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh messaging - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ - # quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" - # - name: Build objc quickstart - # run: ([ -z $plist_secret ] || - # scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging) - # - name: Build swift quickstart - # run: ([ -z $plist_secret ] || - # scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging swift) - # - 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" + 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: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Setup quickstart + run: scripts/setup_quickstart.sh messaging + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \ + quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret" + - name: Build objc quickstart + run: ([ -z $plist_secret ] || + scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging) + - name: Build swift quickstart + run: ([ -z $plist_secret ] || + scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging swift) + - 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" - # 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 + 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 - # messaging-sample-build-test: - # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: sample${{ matrix.os }} - # - 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: Install Secret GoogleService-Info.plist - # run: | - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - # - name: Prereqs - # run: scripts/install_prereqs.sh MessagingSample iOS - # - name: Build - # run: ([ -z $plist_secret ] || scripts/build.sh MessagingSample iOS) + messaging-sample-build-test: + # 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' + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: sample${{ matrix.os }} + - 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: Install Secret GoogleService-Info.plist + run: | + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + - name: Prereqs + run: scripts/install_prereqs.sh MessagingSample iOS + - name: Build + run: ([ -z $plist_secret ] || scripts/build.sh MessagingSample iOS) - # messaging-swiftui-sample-build-test: - # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: sample${{ matrix.os }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: scripts/setup_bundler.sh - # - name: Install Secret GoogleService-Info.plist - # run: | - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - # - name: Prereqs - # run: scripts/install_prereqs.sh SwiftUISample iOS - # - name: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Build - # run: ([ -z $plist_secret ] || scripts/build.sh SwiftUISample iOS) + messaging-swiftui-sample-build-test: + # 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' + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: sample${{ matrix.os }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Install Secret GoogleService-Info.plist + run: | + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + - name: Prereqs + run: scripts/install_prereqs.sh SwiftUISample iOS + - name: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Build + run: ([ -z $plist_secret ] || scripts/build.sh SwiftUISample iOS) - # messaging-watchos-standalone-sample-build-test: - # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: watch-sample${{ matrix.os }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: scripts/setup_bundler.sh - # - name: Install Secret GoogleService-Info.plist - # run: | - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ - # FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" - # - name: Prereqs - # run: scripts/install_prereqs.sh MessagingSampleStandaloneWatchApp watchOS - # - name: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Build - # run: ([ -z $plist_secret ] || scripts/build.sh MessagingSampleStandaloneWatchApp watchOS) - # - name: Upload xcodebuild logs - # if: failure() - # uses: actions/upload-artifact@v4 - # with: - # name: xcodebuild-logs-${{ matrix.target }} - # path: xcodebuild-*.log + messaging-watchos-standalone-sample-build-test: + # 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' + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: watch-sample${{ matrix.os }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Install Secret GoogleService-Info.plist + run: | + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ + FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" + - name: Prereqs + run: scripts/install_prereqs.sh MessagingSampleStandaloneWatchApp watchOS + - name: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Build + run: ([ -z $plist_secret ] || scripts/build.sh MessagingSampleStandaloneWatchApp watchOS) + - name: Upload xcodebuild logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: xcodebuild-logs-${{ matrix.target }} + path: xcodebuild-*.log diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index b1f4e680444..b0d01161259 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -32,50 +32,50 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: PerformanceUnit - # platforms: iOS, tvOS + spm: + uses: ./.github/workflows/common.yml + with: + target: PerformanceUnit + platforms: iOS, tvOS - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebasePerformance - # target: - # buildonly: true + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebasePerformance + target: + buildonly: true - # # Build and run the unit tests for Firebase performance SDK. - # performance: - # # 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' - # runs-on: macos-15 - # strategy: - # matrix: - # target: [iOS, tvOS] - # test: [unit, proddev] - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: ${{ matrix.target }}${{ matrix.test }} - # - 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: Install xcpretty - # run: gem install xcpretty - # - name: BuildAndTest # can be replaced with pod lib lint with CocoaPods 1.10 - # run: scripts/third_party/travis/retry.sh scripts/build.sh Performance ${{ matrix.target }} ${{ matrix.test }} + # Build and run the unit tests for Firebase performance SDK. + performance: + # 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' + runs-on: macos-15 + strategy: + matrix: + target: [iOS, tvOS] + test: [unit, proddev] + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: ${{ matrix.target }}${{ matrix.test }} + - 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: Install xcpretty + run: gem install xcpretty + - name: BuildAndTest # can be replaced with pod lib lint with CocoaPods 1.10 + run: scripts/third_party/travis/retry.sh scripts/build.sh Performance ${{ matrix.target }} ${{ matrix.test }} - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebasePerformance - # platforms: iOS, tvOS - # #TODO: tests are not supported with Xcode 15 because the test spec depends on the iOS 8 GDCWebServer - # buildonly_platforms: iOS, tvOS + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebasePerformance + platforms: iOS, tvOS + #TODO: tests are not supported with Xcode 15 because the test spec depends on the iOS 8 GDCWebServer + buildonly_platforms: iOS, tvOS # TODO: The legacy ObjC quickstarts don't run with Xcode 15, re-able if we get these working. quickstart: @@ -90,54 +90,54 @@ jobs: secrets: plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # quickstart-ftl-cron-only: - # if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' + quickstart-ftl-cron-only: + 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: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Setup quickstart - # run: scripts/setup_quickstart.sh performance - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \ - # quickstart-ios/performance/GoogleService-Info.plist "$plist_secret" - # - name: Build swift quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance swift) - # # - name: Build objc quickstart - # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance) - # - 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: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Setup quickstart + run: scripts/setup_quickstart.sh performance + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \ + quickstart-ios/performance/GoogleService-Info.plist "$plist_secret" + - name: Build swift quickstart + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance swift) + # - name: Build objc quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance) + - 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" - # 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 }} + 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 }} diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index fb06606335b..9b60ed6be19 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -26,68 +26,68 @@ concurrency: cancel-in-progress: true jobs: - # spm_1: - # uses: ./.github/workflows/common.yml - # with: - # target: RemoteConfigUnit + spm_1: + uses: ./.github/workflows/common.yml + with: + target: RemoteConfigUnit - # spm_2: - # uses: ./.github/workflows/common.yml - # with: - # target: RemoteConfigFakeConsole - # buildonly_platforms: watchOS + spm_2: + uses: ./.github/workflows/common.yml + with: + target: RemoteConfigFakeConsole + buildonly_platforms: watchOS - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseRemoteConfig - # target: FirebaseRemoteConfig-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseRemoteConfig + target: FirebaseRemoteConfig-Unit-unit - # remoteconfig: - # # 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # USE_REAL_CONSOLE: true - # runs-on: macos-15 - # strategy: - # matrix: - # target: [iOS] - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: rc${{ matrix.target }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: scripts/setup_bundler.sh - # - name: Install xcpretty - # run: gem install xcpretty - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/RemoteConfigSwiftAPI/GoogleService-Info.plist.gpg \ - # FirebaseRemoteConfig/Tests/Swift/SwiftAPI/GoogleService-Info.plist "$plist_secret" - # - name: Generate Access Token for RemoteConfigConsoleAPI in IntegrationTests - # if: matrix.target == 'iOS' - # run: ([ -z $plist_secret ] || scripts/generate_access_token.sh "$plist_secret" scripts/gha-encrypted/RemoteConfigSwiftAPI/ServiceAccount.json.gpg - # FirebaseRemoteConfig/Tests/Swift/AccessToken.json) - # - name: Xcode - # run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - # - name: Fake Console API Tests - # uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 - # with: - # timeout_minutes: 15 - # max_attempts: 3 - # retry_wait_seconds: 120 - # command: scripts/build.sh RemoteConfig ${{ matrix.target }} fakeconsole - # - name: IntegrationTest - # if: matrix.target == 'iOS' - # # No retry to avoid exhausting AccessToken quota. - # run: ([ -z $plist_secret ] || scripts/build.sh RemoteConfig iOS integration) + remoteconfig: + # 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' + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + USE_REAL_CONSOLE: true + runs-on: macos-15 + strategy: + matrix: + target: [iOS] + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: rc${{ matrix.target }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Install xcpretty + run: gem install xcpretty + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/RemoteConfigSwiftAPI/GoogleService-Info.plist.gpg \ + FirebaseRemoteConfig/Tests/Swift/SwiftAPI/GoogleService-Info.plist "$plist_secret" + - name: Generate Access Token for RemoteConfigConsoleAPI in IntegrationTests + if: matrix.target == 'iOS' + run: ([ -z $plist_secret ] || scripts/generate_access_token.sh "$plist_secret" scripts/gha-encrypted/RemoteConfigSwiftAPI/ServiceAccount.json.gpg + FirebaseRemoteConfig/Tests/Swift/AccessToken.json) + - name: Xcode + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + - name: Fake Console API Tests + uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 + with: + timeout_minutes: 15 + max_attempts: 3 + retry_wait_seconds: 120 + command: scripts/build.sh RemoteConfig ${{ matrix.target }} fakeconsole + - name: IntegrationTest + if: matrix.target == 'iOS' + # No retry to avoid exhausting AccessToken quota. + run: ([ -z $plist_secret ] || scripts/build.sh RemoteConfig iOS integration) - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseRemoteConfig + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseRemoteConfig quickstart: uses: ./.github/workflows/common_quickstart.yml @@ -100,70 +100,70 @@ jobs: 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: - # # # Don't run on private repo. - # # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - # # env: - # # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # # runs-on: macos-14 - # # steps: - # # - uses: actions/checkout@v4 - # # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # # - uses: actions/setup-python@v5 - # # with: - # # python-version: '3.11' - # # - name: Setup quickstart - # # run: scripts/setup_quickstart.sh config - # # - name: Install Secret GoogleService-Info.plist - # # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ - # # quickstart-ios/config/GoogleService-Info.plist "$plist_secret" - # # - name: Build Swift Quickstart - # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Config) - # # - 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" - - # sample-build-test: - # # Don't run on private repo unless it is a PR. + # TODO(@sunmou99): currently have issue with this job, will re-enable it once the issue resolved. + # quickstart-ftl-cron-only: + # # Don't run on private repo. # if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' - # runs-on: macos-15 + # env: + # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + # runs-on: macos-14 # steps: # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: build-test # - 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: Prereqs - # run: scripts/install_prereqs.sh RemoteConfigSample iOS - # - name: Build - # run: scripts/build.sh RemoteConfigSample iOS + # - uses: actions/setup-python@v5 + # with: + # python-version: '3.11' + # - name: Setup quickstart + # run: scripts/setup_quickstart.sh config + # - name: Install Secret GoogleService-Info.plist + # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \ + # quickstart-ios/config/GoogleService-Info.plist "$plist_secret" + # - name: Build Swift Quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Config) + # - 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" - # 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 }} + sample-build-test: + # 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' + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: build-test + - 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: Prereqs + run: scripts/install_prereqs.sh RemoteConfigSample iOS + - name: Build + 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 }} diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 9d85623ad2b..29449d9fe85 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -25,57 +25,57 @@ concurrency: cancel-in-progress: true jobs: - # spm: - # uses: ./.github/workflows/common.yml - # with: - # target: FirebaseStorageUnit + spm: + uses: ./.github/workflows/common.yml + with: + target: FirebaseStorageUnit - # catalyst: - # uses: ./.github/workflows/common_catalyst.yml - # with: - # product: FirebaseStorage - # target: FirebaseStorage-Unit-unit + catalyst: + uses: ./.github/workflows/common_catalyst.yml + with: + product: FirebaseStorage + target: FirebaseStorage-Unit-unit - # storage-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' - # strategy: - # matrix: - # language: [Swift, ObjC] - # include: - # - os: macos-15 - # xcode: Xcode_16.4 - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # runs-on: ${{ matrix.os }} - # steps: - # - uses: actions/checkout@v4 - # - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 - # with: - # cache_key: integration${{ matrix.os }} - # - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 - # - name: Setup Bundler - # run: scripts/setup_bundler.sh - # - name: Install xcpretty - # run: gem install xcpretty - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/storage-db-plist.gpg \ - # FirebaseStorage/Tests/Integration/Resources/GoogleService-Info.plist "$plist_secret" - # - name: Install Credentials.h - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.h.gpg \ - # FirebaseStorage/Tests/ObjCIntegration/Credentials.h "$plist_secret" - # - name: Install Credentials.swift - # run: | - # scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.swift.gpg \ - # FirebaseStorage/Tests/Integration/Credentials.swift "$plist_secret" - # - name: Xcode - # run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.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 Storage${{ matrix.language }} all) + storage-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' + strategy: + matrix: + language: [Swift, ObjC] + include: + - os: macos-15 + xcode: Xcode_16.4 + env: + plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: integration${{ matrix.os }} + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 + - name: Setup Bundler + run: scripts/setup_bundler.sh + - name: Install xcpretty + run: gem install xcpretty + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/storage-db-plist.gpg \ + FirebaseStorage/Tests/Integration/Resources/GoogleService-Info.plist "$plist_secret" + - name: Install Credentials.h + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.h.gpg \ + FirebaseStorage/Tests/ObjCIntegration/Credentials.h "$plist_secret" + - name: Install Credentials.swift + run: | + scripts/decrypt_gha_secret.sh scripts/gha-encrypted/Storage/Credentials.swift.gpg \ + FirebaseStorage/Tests/Integration/Credentials.swift "$plist_secret" + - name: Xcode + run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.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 Storage${{ matrix.language }} all) quickstart: # TODO: See #12399 and restore Objective-C testing for Xcode 15 if GHA is fixed. @@ -91,60 +91,60 @@ jobs: 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' - # env: - # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} - # LEGACY: true - # 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 - # run: scripts/setup_quickstart.sh storage - # - name: Install Secret GoogleService-Info.plist - # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ - # quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" - # # - name: Build objc quickstart - # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage) - # - name: Build swift quickstart - # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage swift) - # - 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" + 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 }} + LEGACY: true + 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 + run: scripts/setup_quickstart.sh storage + - name: Install Secret GoogleService-Info.plist + run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \ + quickstart-ios/storage/GoogleService-Info.plist "$plist_secret" + # - name: Build objc quickstart + # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage) + - name: Build swift quickstart + run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Storage swift) + - 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" - # pod_lib_lint: - # uses: ./.github/workflows/common_cocoapods.yml - # with: - # product: FirebaseStorage - # test_specs: unit + pod_lib_lint: + uses: ./.github/workflows/common_cocoapods.yml + with: + product: FirebaseStorage + 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 + 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