name: Xcode on: pull_request: push: branches: [develop, release] jobs: simulator: name: "Xcode ${{ matrix.env.xcode }}, ${{ matrix.env.runtime }}, ${{ matrix.env.device }}" runs-on: macOS-14 strategy: matrix: env: - xcode: 16.1 runtime: "iOS 18.1" device: "iPhone 16 Plus" - xcode: 16.1 runtime: "iOS 17.0" device: "iPhone Xs" - xcode: 16.1 runtime: "watchOS 11.1" device: "Apple Watch Series 10 (46mm)" - xcode: 16.1 runtime: "watchOS 10.0" device: "Apple Watch Series 4 (40mm)" - xcode: 16.1 runtime: "tvOS 18.1" device: "Apple TV 4K (3rd generation)" - xcode: 16.1 runtime: "tvOS 17.0" device: "Apple TV" - xcode: 16.1 runtime: "visionOS 1.2" device: "Apple Vision Pro" - xcode: 16.1 runtime: "visionOS 1.0" device: "Apple Vision Pro" steps: - uses: actions/checkout@v4 - name: "Select Xcode ${{ matrix.env.xcode }}" uses: ./.github/actions/xcode-select with: version: ${{ matrix.env.xcode }} - name: "Cache downloaded simulator runtimes" uses: actions/cache@v4 with: path: ~/Downloads/*.dmg key: Xcode ${{ matrix.env.xcode }}+${{ matrix.env.runtime }} - name: "Prepare simulator" id: prepare-simulator uses: ./.github/actions/prepare-simulator with: runtime: ${{ matrix.env.runtime }} device: ${{ matrix.env.device }} - name: "Build and test" run: xcodebuild test -scheme "Identifier" -destination "id=${{ steps.prepare-simulator.outputs.destination-id }}" - uses: sersoft-gmbh/swift-coverage-action@v4 with: target-name-filter: ^Identifier$ - uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true macos: name: "Xcode ${{ matrix.xcode }}, macOS 14" runs-on: macOS-14 strategy: matrix: xcode: - "16.1" steps: - uses: actions/checkout@v4 - name: "Select Xcode ${{ matrix.xcode }}" uses: ./.github/actions/xcode-select with: version: ${{ matrix.xcode }} - name: "Build and test" run: xcodebuild test -scheme "Identifier" -destination "name=My Mac" - uses: sersoft-gmbh/swift-coverage-action@v4 with: target-name-filter: ^Identifier$ - uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true