Skip to content

Consolidate CI Workflows into a Single Unified Workflow #2

Consolidate CI Workflows into a Single Unified Workflow

Consolidate CI Workflows into a Single Unified Workflow #2

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- '*'
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
macos:
name: macOS (Xcode ${{ matrix.xcode }})
runs-on: macos-14
strategy:
matrix:
xcode:
- '15.4'
- '15.0'
steps:
- name: Checkout to the branch
uses: actions/checkout@v4
- name: Select Xcode ${{ matrix.xcode }}
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
- name: Print Swift version
run: swift --version
- name: Build
run: swift build
- name: Run tests
run: swift test -Xswiftc -Xfrontend -Xswiftc -dump-macro-expansions --enable-code-coverage
- name: Gather code coverage
run: |
BUILD_PATH=$(swift build --show-bin-path)
xcrun llvm-cov report \
$BUILD_PATH/swift-spyablePackageTests.xctest/Contents/MacOS/swift-spyablePackageTests \
-instr-profile=$BUILD_PATH/codecov/default.profdata \
-ignore-filename-regex=".build|Tests" -use-color
xcrun llvm-cov export -format="lcov" \
$BUILD_PATH/swift-spyablePackageTests.xctest/Contents/MacOS/swift-spyablePackageTests \
-instr-profile=$BUILD_PATH/codecov/default.profdata \
-ignore-filename-regex=".build|Tests" > coverage_report.lcov
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage_report.lcov
verbose: true
linux:
name: Ubuntu (Swift ${{ matrix.swift }})
runs-on: ubuntu-latest
strategy:
matrix:
swift:
- '5.10'
- '5.9'
container: swift:${{ matrix.swift }}
steps:
- name: Checkout to the branch
uses: actions/checkout@v4
- name: Run tests
run: swift test --parallel
- name: Run tests (release)
run: swift test -c release --parallel
windows:
name: Windows (Swift ${{ matrix.swift }})
runs-on: windows-latest
strategy:
matrix:
swift:
- '5.10'
- '5.9'
steps:
- name: Checkout to the branch
uses: actions/checkout@v4
- name: Install Swift
uses: compnerd/gha-setup-swift@main
with:
branch: swift-${{ matrix.swift }}-release
tag: ${{ matrix.swift }}-RELEASE
- name: Run tests
run: swift test --parallel
- name: Run tests (release)
run: swift test -c release --parallel