Browse Source

GHA updates: visionOS and Xcode 16 - Part 1 (#13697)

Paul Beusterien 1 year ago
parent
commit
bc2c2d42a1

+ 30 - 21
.github/workflows/abtesting.yml

@@ -24,12 +24,8 @@ jobs:
       matrix:
         # TODO: macos tests are blocked by https://github.com/erikdoe/ocmock/pull/532
         target: [ios, tvos, macos --skip-tests, watchos]
-        os: [macos-14, macos-13]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.3
-          - os: macos-13
-            xcode: Xcode_15.2
+        os: [macos-14]
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
@@ -46,30 +42,43 @@ jobs:
         retry_wait_seconds: 120
         command: scripts/pod_lib_lint.rb FirebaseABTesting.podspec --platforms=${{ matrix.target }}
 
+  spm-package-resolved:
+    runs-on: macos-14
+    outputs:
+      cache_key: ${{ steps.generate_cache_key.outputs.cache_key }}
+    steps:
+      - uses: actions/checkout@v4
+      - name: Generate Swift Package.resolved
+        id: swift_package_resolve
+        run: |
+          swift package resolve
+      - name: Generate cache key
+        id: generate_cache_key
+        run: |
+          cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}"
+          echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT"
+      - uses: actions/cache/save@v4
+        id: cache
+        with:
+          path: .build
+          key: ${{ steps.generate_cache_key.outputs.cache_key }}
+
   spm:
     # 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-package-resolved]
     strategy:
-      max-parallel: 1
       matrix:
         target: [iOS, tvOS, macOS, catalyst, watchOS]
-        os: [macos-13, macos-14]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.3
-          - os: macos-13
-            xcode: Xcode_15.2
-          - os: macos-14
-            xcode: Xcode_15.2
-          - os: macos-14
-            xcode: Xcode_15.2
-            target: visionOS
+        os: [macos-14]
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
-    - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
+    - uses: actions/cache/restore@v4
       with:
-        cache_key: spm${{ matrix.os }}-${{ matrix.xcode }}-${{ matrix.target }}
+        path: .build
+        key: ${{needs.spm-package-resolved.outputs.cache_key}}
     - name: Xcode
       run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
     - name: Initialize xcodebuild
@@ -137,7 +146,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/api_diff_report.yml

@@ -34,7 +34,7 @@ jobs:
           echo "file_list=$(git diff --name-only -r HEAD^1 HEAD | tr '\n' ' ')" >> $GITHUB_OUTPUT
 
       - name: Setup python
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: '3.10'
 

+ 29 - 16
.github/workflows/appdistribution.yml

@@ -22,12 +22,8 @@ jobs:
     strategy:
       matrix:
         target: [ios]
-        os: [macos-14, macos-13]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.3
-          - os: macos-13
-            xcode: Xcode_15.2
+        os: [macos-14]
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
@@ -41,25 +37,42 @@ jobs:
        scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAppDistribution.podspec \
          --platforms=${{ matrix.target }}
 
+  spm-package-resolved:
+    runs-on: macos-14
+    outputs:
+      cache_key: ${{ steps.generate_cache_key.outputs.cache_key }}
+    steps:
+      - uses: actions/checkout@v4
+      - name: Generate Swift Package.resolved
+        id: swift_package_resolve
+        run: |
+          swift package resolve
+      - name: Generate cache key
+        id: generate_cache_key
+        run: |
+          cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}"
+          echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT"
+      - uses: actions/cache/save@v4
+        id: cache
+        with:
+          path: .build
+          key: ${{ steps.generate_cache_key.outputs.cache_key }}
+
   spm:
     # 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-package-resolved]
     strategy:
-      max-parallel: 1
       matrix:
-        os: [macos-14, macos-13]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.3
-          - os: macos-13
-            xcode: Xcode_15.2
+        os: [macos-14]
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
-    - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
+    - uses: actions/cache/restore@v4
       with:
-        cache_key: spm${{ matrix.os }}-${{ matrix.xcode }}
+        path: .build
+        key: ${{needs.spm-package-resolved.outputs.cache_key}}
     - name: Xcode
       run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
     - name: Initialize xcodebuild

+ 61 - 28
.github/workflows/auth.yml

@@ -28,16 +28,9 @@ jobs:
     strategy:
       matrix:
         podspec: [FirebaseAuthInterop.podspec, FirebaseAuth.podspec]
-        # TODO: macos tests are blocked by https://github.com/erikdoe/ocmock/pull/532
         target: [ios, tvos, macos --skip-tests, watchos]
-        os: [macos-14, macos-13]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.3
-            tests: --skip-tests
-          - os: macos-13
-            xcode: Xcode_15.2
-            tests:
+        os: [macos-14]
+        xcode: [Xcode_15.2]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
@@ -48,7 +41,6 @@ jobs:
       run: scripts/configure_test_keychain.sh
     - name: Xcode
       run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
-#TODO: Restore warnings check after resolution of #11693
     - uses: nick-fields/retry@v3
       with:
         timeout_minutes: 120
@@ -57,6 +49,35 @@ jobs:
         retry_wait_seconds: 120
         command: scripts/pod_lib_lint.rb ${{ matrix.podspec }} --platforms=${{ matrix.target }} ${{ matrix.tests }}
 
+  # TODO: Fix warnings on Xcode 16 and move into matrix above.
+  pod-lib-lint-xc16:
+    # 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:
+        podspec: [FirebaseAuthInterop.podspec, FirebaseAuth.podspec]
+        target: [ios, tvos, macos --skip-tests --allow-warnings, watchos]
+        os: [macos-14]
+        xcode: [Xcode_16]
+    runs-on: ${{ matrix.os }}
+    steps:
+    - uses: actions/checkout@v4
+    - uses: ruby/setup-ruby@v1
+    - name: Setup Bundler
+      run: scripts/setup_bundler.sh
+    - name: Configure test keychain
+      run: scripts/configure_test_keychain.sh
+    - name: Xcode
+      run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
+    - uses: nick-fields/retry@v3
+      with:
+        timeout_minutes: 120
+        max_attempts: 3
+        retry_on: error
+        retry_wait_seconds: 120
+        command: scripts/pod_lib_lint.rb ${{ matrix.podspec }} --platforms=${{ matrix.target }} ${{ matrix.tests }} --allow-warnings
+
   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'
@@ -99,31 +120,43 @@ jobs:
         retry_wait_seconds: 120
         command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }})
 
+  spm-package-resolved:
+    runs-on: macos-14
+    outputs:
+      cache_key: ${{ steps.generate_cache_key.outputs.cache_key }}
+    steps:
+      - uses: actions/checkout@v4
+      - name: Generate Swift Package.resolved
+        id: swift_package_resolve
+        run: |
+          swift package resolve
+      - name: Generate cache key
+        id: generate_cache_key
+        run: |
+          cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}"
+          echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT"
+      - uses: actions/cache/save@v4
+        id: cache
+        with:
+          path: .build
+          key: ${{ steps.generate_cache_key.outputs.cache_key }}
+
   spm:
     # 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-package-resolved]
     strategy:
-      max-parallel: 1
       matrix:
-        target: [iOS, tvOS, macOS, catalyst, watchOS]
-        os: [macos-13, macos-14]
-        include:
-          - os: macos-13
-            xcode: Xcode_15.2
-            test: spmbuildonly
-          - os: macos-14
-            xcode: Xcode_15.3
-            test: spmbuildonly
-          - os: macos-14
-            xcode: Xcode_15.3
-            target: visionOS
-            test: spm
+        target: [iOS spm, tvOS spm, macOS spmbuildonly, catalyst spm, watchOS spm]
+        os: [macos-14]
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v4
-    - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
+    - uses: actions/cache/restore@v4
       with:
-        cache_key: spm${{ matrix.os }}-${{ matrix.xcode }}-${{ matrix.target }}
+        path: .build
+        key: ${{needs.spm-package-resolved.outputs.cache_key}}
     - name: Xcode
       run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
     - name: Initialize xcodebuild
@@ -134,7 +167,7 @@ jobs:
         max_attempts: 3
         retry_on: error
         retry_wait_seconds: 120
-        command: scripts/third_party/travis/retry.sh ./scripts/build.sh AuthUnit ${{ matrix.target }} ${{ matrix.test }}
+        command: scripts/third_party/travis/retry.sh ./scripts/build.sh AuthUnit ${{ matrix.target }}
 
   catalyst:
     # Don't run on private repo unless it is a PR.
@@ -187,7 +220,7 @@ jobs:
   #   steps:
   #   - uses: actions/checkout@v4
   #   - uses: ruby/setup-ruby@v1
-  #   - uses: actions/setup-python@v4
+  #   - uses: actions/setup-python@v5
   #     with:
   #      python-version: '3.11'
   #   - name: Setup quickstart

+ 2 - 2
.github/workflows/check.yml

@@ -21,12 +21,12 @@ jobs:
     steps:
     - uses: actions/checkout@v4
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: 3.11
 
     - name: Cache Mint packages
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ env.MINT_PATH }}
         key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }}

+ 1 - 1
.github/workflows/crashlytics.yml

@@ -147,7 +147,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/dynamiclinks.yml

@@ -121,7 +121,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 4 - 4
.github/workflows/firestore-nightly.yml

@@ -27,7 +27,7 @@ jobs:
     steps:
     - uses: actions/checkout@v3
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: 3.11
 
@@ -55,7 +55,7 @@ jobs:
     - uses: actions/checkout@v3
 
     - name: Prepare ccache
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ runner.temp }}/ccache
         key: firestore-ccache-${{ matrix.databaseId }}-${{ runner.os }}-${{ github.sha }}
@@ -63,13 +63,13 @@ jobs:
           firestore-ccache-${{ matrix.databaseId }}-${{ runner.os }}-
 
     - name: Cache Mint packages
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ env.MINT_PATH }}
         key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }}
         restore-keys: ${{ runner.os }}-mint-
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.7'
 

+ 11 - 11
.github/workflows/firestore.yml

@@ -86,7 +86,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: 3.11
 
@@ -114,7 +114,7 @@ jobs:
     - uses: actions/checkout@v4
 
     - name: Prepare ccache
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ runner.temp }}/ccache
         key: firestore-ccache-${{ runner.os }}-${{ github.sha }}
@@ -122,13 +122,13 @@ jobs:
           firestore-ccache-${{ runner.os }}-
 
     - name: Cache Mint packages
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ env.MINT_PATH }}
         key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }}
         restore-keys: ${{ runner.os }}-mint-
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.10'
 
@@ -164,7 +164,7 @@ jobs:
     - uses: actions/checkout@v4
 
     - name: Prepare ccache
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ runner.temp }}/ccache
         key: firestore-ccache-${{ matrix.databaseId }}-${{ runner.os }}-${{ github.sha }}
@@ -172,13 +172,13 @@ jobs:
           firestore-ccache-${{ matrix.databaseId }}-${{ runner.os }}-
 
     - name: Cache Mint packages
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ env.MINT_PATH }}
         key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }}
         restore-keys: ${{ runner.os }}-mint-
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.10'
 
@@ -250,14 +250,14 @@ jobs:
     - uses: actions/checkout@v4
 
     - name: Prepare ccache
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ runner.temp }}/ccache
         key: ${{ matrix.sanitizer }}-firestore-ccache-${{ runner.os }}-${{ github.sha }}
         restore-keys: |
           ${{ matrix.sanitizer }}-firestore-ccache-${{ runner.os }}-
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.10'
 
@@ -296,14 +296,14 @@ jobs:
     - uses: actions/checkout@v3
 
     - name: Prepare ccache
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ${{ runner.temp }}/ccache
         key: ${{ matrix.sanitizer }}-firestore-ccache-${{ runner.os }}-${{ github.sha }}
         restore-keys: |
           ${{ matrix.sanitizer }}-firestore-ccache-${{ runner.os }}-
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.7'
 

+ 1 - 1
.github/workflows/functions.yml

@@ -152,7 +152,7 @@ jobs:
   #   steps:
   #   - uses: actions/checkout@v4
   #   - uses: ruby/setup-ruby@v1
-  #   - uses: actions/setup-python@v4
+  #   - uses: actions/setup-python@v5
   #     with:
   #       python-version: '3.11'
   #   - name: Setup quickstart

+ 1 - 1
.github/workflows/installations.yml

@@ -126,7 +126,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/messaging.yml

@@ -161,7 +161,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/performance.yml

@@ -104,7 +104,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/remoteconfig.yml

@@ -163,7 +163,7 @@ jobs:
   #   steps:
   #   - uses: actions/checkout@v4
   #   - uses: ruby/setup-ruby@v1
-  #   - uses: actions/setup-python@v4
+  #   - uses: actions/setup-python@v5
   #     with:
   #      python-version: '3.11'
   #   - name: Setup quickstart

+ 1 - 1
.github/workflows/storage.yml

@@ -131,7 +131,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - uses: ruby/setup-ruby@v1
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       with:
         python-version: '3.11'
     - name: Setup quickstart

+ 1 - 1
.github/workflows/update-cpp-sdk-on-release.yml

@@ -21,7 +21,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Setup python
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: 3.11
 

+ 2 - 4
.github/workflows/vertexai.yml

@@ -41,11 +41,9 @@ jobs:
   spm-unit:
     strategy:
       matrix:
-        target: [iOS, macOS, catalyst, tvOS, visionOS, watchOS]
+        target: [iOS, tvOS, macOS, catalyst, watchOS]
         os: [macos-14]
-        include:
-          - os: macos-14
-            xcode: Xcode_15.2
+        xcode: [Xcode_15.2, Xcode_16]
     runs-on: ${{ matrix.os }}
     needs: spm-package-resolved
     env:

+ 3 - 1
FirebaseAuth.podspec

@@ -48,11 +48,13 @@ supports email and password accounts, as well as several 3rd party authenticatio
     'FirebaseAuth/README.md',
     'FirebaseAuth/CHANGELOG.md'
   ]
+  # TODO(#13704) Restore warnings-as-errors checking.
+  #    'OTHER_SWIFT_FLAGS' => "$(inherited) #{ENV.key?('FIREBASE_CI') ? '-D FIREBASE_CI -warnings-as-errors' : ''}"
   s.pod_target_xcconfig = {
     'GCC_C_LANGUAGE_STANDARD' => 'c99',
     # The second path is to find FirebaseAuth-Swift.h from a pod gen project
     'HEADER_SEARCH_PATHS' => '"${PODS_TARGET_SRCROOT}" "${OBJECT_FILE_DIR_normal}/${NATIVE_ARCH_ACTUAL}"',
-    'OTHER_SWIFT_FLAGS' => "$(inherited) #{ENV.key?('FIREBASE_CI') ? '-D FIREBASE_CI -warnings-as-errors' : ''}"
+    'OTHER_SWIFT_FLAGS' => "$(inherited) #{ENV.key?('FIREBASE_CI') ? '-D FIREBASE_CI' : ''}"
   }
   s.framework = 'Security'
   s.ios.framework = 'SafariServices'

+ 0 - 1
scripts/setup_spm_tests.sh

@@ -32,4 +32,3 @@ sed -i '' 's#exact:[[:space:]]*"[0-9.]*"#branch: "main"#' Package.swift
 
 mkdir -p .swiftpm/xcode/xcshareddata/xcschemes
 cp scripts/spm_test_schemes/* .swiftpm/xcode/xcshareddata/xcschemes/
-xcodebuild -list