diff --git a/.github/workflows/_spm.yml b/.github/workflows/_spm.yml index 179caa899ff..8156402aa98 100644 --- a/.github/workflows/_spm.yml +++ b/.github/workflows/_spm.yml @@ -61,6 +61,12 @@ on: required: false default: false + # Whether to test Xcode 27. Defaults to false. + test_xcode27: + type: boolean + required: false + default: false + # Custom environment variables to inject into the jobs. # Expected to be a JSON-formatted string. # Example: '{"FIREBASE_APP_CHECK_BRANCH": "nc/target-split"}' @@ -126,14 +132,23 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-15, macos-26] - xcode: [Xcode_26.2, Xcode_26.4] + os: [macos-15, macos-26, xcode-27] + xcode: [Xcode_26.2, Xcode_26.4, Xcode_27.0] platform: [iOS, tvOS, macOS, watchOS, catalyst, visionOS] exclude: - os: macos-15 xcode: Xcode_26.4 + - os: macos-15 + xcode: Xcode_27.0 + - os: macos-26 + xcode: Xcode_26.2 - os: macos-26 + xcode: Xcode_27.0 + - os: xcode-27 xcode: Xcode_26.2 + - os: xcode-27 + xcode: Xcode_26.4 + - xcode: ${{ !inputs.test_xcode27 && 'Xcode_27.0' || 'none' }} runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 diff --git a/.github/workflows/infra.samples.client_app.yml b/.github/workflows/infra.samples.client_app.yml index d453fd1eada..18656e013dc 100644 --- a/.github/workflows/infra.samples.client_app.yml +++ b/.github/workflows/infra.samples.client_app.yml @@ -33,10 +33,12 @@ jobs: #TODO(ncooke3): Add multi-platform support: tvOS, macOS, catalyst platform: [iOS] scheme: [ClientApp] - os: [macos-15] + os: [macos-15, xcode-27] include: - os: macos-15 xcode: Xcode_26.2 + - os: xcode-27 + xcode: Xcode_27.0 uses: ./.github/workflows/_build.yml with: product: ${{ matrix.scheme }} @@ -51,10 +53,12 @@ jobs: #TODO(ncooke3): Add multi-platform support: tvOS, macOS, catalyst platform: [iOS] scheme: [ClientApp] - os: [macos-15] + os: [macos-15, xcode-27] include: - os: macos-15 xcode: Xcode_26.2 + - os: xcode-27 + xcode: Xcode_27.0 uses: ./.github/workflows/_build.yml with: product: ${{ matrix.scheme }} diff --git a/.github/workflows/sdk.ai.yml b/.github/workflows/sdk.ai.yml index 43d8e875566..4f682a66f17 100644 --- a/.github/workflows/sdk.ai.yml +++ b/.github/workflows/sdk.ai.yml @@ -33,6 +33,7 @@ jobs: uses: ./.github/workflows/_spm.yml with: target: ${{ matrix.target }} + test_xcode27: true setup_command: scripts/update_vertexai_responses.sh env_vars: '{"FIREBASE_APP_CHECK_BRANCH": "main"}' @@ -63,6 +64,11 @@ jobs: xcode: Xcode_26.2 test_filter_arg: --filter IntegrationTests-SPM/LiveSessionTests log_prefix: xcodebuild-live + - os: xcode-27 + target: iOS + xcode: Xcode_27.0 + test_filter_arg: --exclude IntegrationTests-SPM/LiveSessionTests + log_prefix: xcodebuild runs-on: ${{ matrix.os }} needs: spm env: @@ -109,6 +115,8 @@ jobs: # TODO: Bump to 26.4 when "Unable to find a destination matching the provided destination specifier" is resolved. - os: macos-26 xcode: Xcode_26.2 + - os: xcode-27 + xcode: Xcode_27.0 runs-on: ${{ matrix.os }} env: BRANCH_NAME: ${{ github.head_ref || github.ref_name || 'main' }} diff --git a/.github/workflows/sdk.auth.yml b/.github/workflows/sdk.auth.yml index 129d2ea2205..1e06d281b60 100644 --- a/.github/workflows/sdk.auth.yml +++ b/.github/workflows/sdk.auth.yml @@ -33,6 +33,7 @@ jobs: uses: ./.github/workflows/_spm.yml with: target: AuthUnit + test_xcode27: true buildonly_platforms: macOS catalyst: diff --git a/.github/workflows/sdk.firestore.yml b/.github/workflows/sdk.firestore.yml index 54b9a9addd9..528f1da1ec4 100644 --- a/.github/workflows/sdk.firestore.yml +++ b/.github/workflows/sdk.firestore.yml @@ -637,6 +637,7 @@ jobs: uses: ./.github/workflows/_spm.yml with: target: FirebaseFirestoreTests + test_xcode27: true platforms: iOS spm-source-cron: