Repository: firebase/firebase-ios-sdk (language: cpp)

Issue:
Restore check_framework_firestore_symbols tests
### Description

Disabled test after it caused failure in #11848 because of #11846. The test depends on SPM and CocoaPods using the same gRPC version.

We should get the versions re-aligned and restore this test before adding too many other Firestore changes since we don't have thorough SPM testing.

### Reproducing the issue

Nightly zip tests

### Firebase SDK Version

10.16

### Xcode Version

14.2

### Installation Method

Zip

### Firebase Product(s)

Firestore

### Targeted Platforms

All

### Relevant Log Output

_No response_

### If using Swift Package Manager, the project's Package.resolved

<!--- Look below for instructions on how to share your Package.resolved. --->

<details>
<summary>Expand <code>Package.resolved</code> snippet</summary>
<br>

```json

Replace this line with the contents of your Package.resolved.

```

</details>


### If using CocoaPods, the project's Podfile.lock

<!--- Look below for instructions on how to share your Podfile.lock. --->

<details>
<summary>Expand <code>Podfile.lock</code> snippet</summary>
<br>

```yml

Replace this line with the contents of your Podfile.lock!

```

</details>



Discussion / hints:
@paulb777 Should we just downgrade SPM as well as CocoaPods then? Otherwise, it is unknown when we can get SPM and CocoaPods grpc versions back in sync because there are some issues with upgrading to the latest grpc version: something to do with linking problems and cyclic header dependencies (@wu-hui is looking into this).
Good point, but I think downgrading in a short time period is more risky than keeping SPM stable.

I see some inconsistencies with abseil dependencies that should be sorted out. If we can't upgrade gRPC in the M139 timeframe, let's work through pulling it back then.
Another option, if it's not feasible to update Firestore to the latest grpc, would be to create a grpc 1.50.x patch without the unnecessary thread local, and update Firestore to that.
How would that work? Can you specify a patch to apply in the Podfile or something like that?
Our podspecs (and Package.swift) are already defined to allow patch dependency updates, so developers would need to run `pod update` to get the fix.
I have to admit that I don't understand the semantics of Podfile patch dependencies so I'll defer to you for this decision. But, on the surface, adding a required `pod update` step sounds like it would be very easy for customers to overlook.
It's normal workflow for CocoaPods users wanting to update to newer versions.

Fix patch:
diff --git a/.github/workflows/zip.yml b/.github/workflows/zip.yml
index b6bd401c09c..abc585c387c 100644
--- a/.github/workflows/zip.yml
+++ b/.github/workflows/zip.yml
@@ -435,40 +435,37 @@ jobs:
         name: quickstart_artifacts_firestore
         path: quickstart-ios/
 
-  # TODO(#11849) Restore this test when SPM updates its gRPC dependency version and CocoaPods is
-  # realigned.
-
-  # check_framework_firestore_symbols:
-  #   # Don't run on private repo.
-  #   if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-  #   needs: package-head
-  #   env:
-  #     FRAMEWORK_DIR: "Firebase-actions-dir"
-  #     FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1
-  #   runs-on: macos-12
-  #   steps:
-  #     - name: Xcode 14.1
-  #       run: sudo xcode-select -s /Applications/Xcode_14.1.app/Contents/Developer
-  #     - uses: actions/checkout@v3
-  #     - name: Get framework dir
-  #       uses: actions/download-artifact@v1
-  #       with:
-  #         name: Firebase-actions-dir
-  #     - uses: ruby/setup-ruby@v1
-  #     - name: Setup Bundler
-  #       run: ./scripts/setup_bundler.sh
-  #     - name: Install xcpretty
-  #       run: gem install xcpretty
-  #     - name: Move frameworks
-  #       run: |
-  #         mkdir -p "${HOME}"/ios_frameworks/
-  #         find "${GITHUB_WORKSPACE}/${FRAMEWORK_DIR}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
-  #     - uses: actions/checkout@v3
-  #     - name: Check linked Firestore.xcframework for unlinked symbols.
-  #       run: |
-  #         scripts/check_firestore_symbols.sh \
-  #           $(pwd) \
-  #           "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestore.xcframework
+  check_framework_firestore_symbols:
+    # Don't run on private repo.
+    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
+    needs: package-head
+    env:
+      FRAMEWORK_DIR: "Firebase-actions-dir"
+      FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1
+    runs-on: macos-12
+    steps:
+      - name: Xcode 14.1
+        run: sudo xcode-select -s /Applications/Xcode_14.1.app/Contents/Developer
+      - uses: actions/checkout@v3
+      - name: Get framework dir
+        uses: actions/download-artifact@v1
+        with:
+          name: Firebase-actions-dir
+      - uses: ruby/setup-ruby@v1
+      - name: Setup Bundler
+        run: ./scripts/setup_bundler.sh
+      - name: Install xcpretty
+        run: gem install xcpretty
+      - name: Move frameworks
+        run: |
+          mkdir -p "${HOME}"/ios_frameworks/
+          find "${GITHUB_WORKSPACE}/${FRAMEWORK_DIR}" -name "Firebase*latest.zip" -exec unzip -d "${HOME}"/ios_frameworks/ {} +
+      - uses: actions/checkout@v3
+      - name: Check linked Firestore.xcframework for unlinked symbols.
+        run: |
+          scripts/check_firestore_symbols.sh \
+            $(pwd) \
+            "${HOME}"/ios_frameworks/Firebase/FirebaseFirestore/FirebaseFirestore.xcframework
 
   quickstart_framework_inappmessaging:
     # Don't run on private repo.


Test patch: