From b4fd5e041f0678b984d5fe7d1f1aefdb3f9257a2 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Thu, 30 Apr 2026 19:58:57 +0300 Subject: [PATCH] CI: collapse ios-packaging matrix to a single both-managers job The pods-only and spm-only matrix entries are proper subsets of the both entry, which exercises CocoaPods AND Swift Package Manager in a single Xcode project. Each dependency manager pathway runs end to end in the both configuration, so dropping the two narrower entries loses no real coverage but cuts the workflow from 3 sequential macOS jobs (~130 min wall clock when the runner queue is saturated) to one (~35 min). The native iOS notification tests step was previously gated to the both entry only; with a single job remaining the conditional is removed and the step always runs. Job renamed from packaging-matrix to packaging since there's no matrix anymore. Artifact name simplified from ios-packaging- to ios-packaging. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ios-packaging.yml | 41 +++++++++++------------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ios-packaging.yml b/.github/workflows/ios-packaging.yml index 73615b8f84..eb4a1b90da 100644 --- a/.github/workflows/ios-packaging.yml +++ b/.github/workflows/ios-packaging.yml @@ -28,30 +28,22 @@ on: - '!docs/**' jobs: - packaging-matrix: + packaging: permissions: contents: read runs-on: macos-15 timeout-minutes: 75 - strategy: - fail-fast: false - matrix: - packaging: - - name: pods-only - args: >- - -Dcodename1.arg.ios.dependencyManager=cocoapods - -Dcodename1.arg.ios.pods=AFNetworking - - name: spm-only - args: >- - -Dcodename1.arg.ios.dependencyManager=spm - -Dcodename1.arg.ios.spm.packages=swift-collections|https://github.com/apple/swift-collections.git|from:1.1.0 - -Dcodename1.arg.ios.spm.products.swift-collections=Collections - - name: both - args: >- - -Dcodename1.arg.ios.dependencyManager=both - -Dcodename1.arg.ios.pods=AFNetworking - -Dcodename1.arg.ios.spm.packages=swift-collections|https://github.com/apple/swift-collections.git|from:1.1.0 - -Dcodename1.arg.ios.spm.products.swift-collections=Collections + # Exercises both CocoaPods and SPM in a single Xcode project. Catches + # regressions in either dependency manager (each pathway runs end to end) + # and additionally validates that they coexist correctly. The pods-only + # and spm-only matrix entries previously here were proper subsets of this + # configuration, so they were dropped to halve macOS runner consumption. + env: + IOS_DEPENDENCY_ARGS: >- + -Dcodename1.arg.ios.dependencyManager=both + -Dcodename1.arg.ios.pods=AFNetworking + -Dcodename1.arg.ios.spm.packages=swift-collections|https://github.com/apple/swift-collections.git|from:1.1.0 + -Dcodename1.arg.ios.spm.products.swift-collections=Collections steps: - uses: actions/checkout@v4 @@ -124,14 +116,12 @@ jobs: - name: Build sample iOS app id: build_ios_app - env: - IOS_DEPENDENCY_ARGS: ${{ matrix.packaging.args }} run: ./scripts/build-ios-app.sh -q -DskipTests timeout-minutes: 30 - name: Run iOS UI smoke env: - ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/${{ matrix.packaging.name }} + ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/ios-packaging run: | set -euo pipefail mkdir -p "${ARTIFACTS_DIR}" @@ -142,9 +132,8 @@ jobs: timeout-minutes: 30 - name: Run native iOS notification tests - if: matrix.packaging.name == 'both' env: - ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/${{ matrix.packaging.name }}-native + ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/ios-packaging-native run: | set -euo pipefail mkdir -p "${ARTIFACTS_DIR}" @@ -157,7 +146,7 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: ios-packaging-${{ matrix.packaging.name }} + name: ios-packaging path: artifacts if-no-files-found: warn retention-days: 14