diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index a1a50434bcc..00cb6e22b6b 100644 --- a/.github/workflows/abtesting.yml +++ b/.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 diff --git a/.github/workflows/api_diff_report.yml b/.github/workflows/api_diff_report.yml index 8ca8c385b81..1e5f18a15b9 100644 --- a/.github/workflows/api_diff_report.yml +++ b/.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' diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index 072ee73b9f4..1c34f2e97eb 100644 --- a/.github/workflows/appdistribution.yml +++ b/.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 diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index ecdafa27904..6e6058dc0f3 100644 --- a/.github/workflows/auth.yml +++ b/.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 diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 169ff7a2752..b2a6a56a984 100644 --- a/.github/workflows/check.yml +++ b/.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') }} diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index 2abf8a6736b..124e2121b8f 100644 --- a/.github/workflows/crashlytics.yml +++ b/.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 diff --git a/.github/workflows/dynamiclinks.yml b/.github/workflows/dynamiclinks.yml index 06b6d593664..589825221e8 100644 --- a/.github/workflows/dynamiclinks.yml +++ b/.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 diff --git a/.github/workflows/firestore-nightly.yml b/.github/workflows/firestore-nightly.yml index 98c73dbf322..dca4a833f19 100644 --- a/.github/workflows/firestore-nightly.yml +++ b/.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' diff --git a/.github/workflows/firestore.yml b/.github/workflows/firestore.yml index 4bf75ec6279..9bff2362ab1 100644 --- a/.github/workflows/firestore.yml +++ b/.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' diff --git a/.github/workflows/functions.yml b/.github/workflows/functions.yml index db67ea823f4..32e9dffcb01 100644 --- a/.github/workflows/functions.yml +++ b/.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 diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index 744e11c10a6..94e7c7831e0 100644 --- a/.github/workflows/installations.yml +++ b/.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 diff --git a/.github/workflows/messaging.yml b/.github/workflows/messaging.yml index 6aa8fdc0091..151166c5715 100644 --- a/.github/workflows/messaging.yml +++ b/.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 diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 059253fabfb..29aa3176bb6 100644 --- a/.github/workflows/performance.yml +++ b/.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 diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 382068cd980..fe576403f5d 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.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 diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 50fb4f7b2ef..1c1bb861e30 100644 --- a/.github/workflows/storage.yml +++ b/.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 diff --git a/.github/workflows/update-cpp-sdk-on-release.yml b/.github/workflows/update-cpp-sdk-on-release.yml index ac824cf4c53..192444ef9d0 100644 --- a/.github/workflows/update-cpp-sdk-on-release.yml +++ b/.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 diff --git a/.github/workflows/vertexai.yml b/.github/workflows/vertexai.yml index cc97d6bf32f..2e427be3bb7 100644 --- a/.github/workflows/vertexai.yml +++ b/.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: diff --git a/FirebaseAuth.podspec b/FirebaseAuth.podspec index 5bb6a6b1eec..7c35e277736 100644 --- a/FirebaseAuth.podspec +++ b/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' diff --git a/scripts/setup_spm_tests.sh b/scripts/setup_spm_tests.sh index 88771005172..0834c17b7bd 100755 --- a/scripts/setup_spm_tests.sh +++ b/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