Update ci.yml #50
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow runs CI tests for the main package and Examples package | |
name: CI | |
# Trigger the workflow on push to main, any pull request, or manual dispatch | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- '*' | |
workflow_dispatch: | |
# Ensure only one workflow per ref is running at a time | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
macos: | |
name: macOS - ${{ matrix.package }} (Xcode ${{ matrix.xcode }}) | |
runs-on: macos-14 | |
strategy: | |
matrix: | |
xcode: | |
- '15.4' | |
- '15.0' | |
package: | |
- 'main' | |
- 'Examples' | |
steps: | |
- name: Checkout repository | |
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 | |
# Set working directory to Examples if testing the examples package | |
- name: Set working directory | |
run: | | |
if [ "${{ matrix.package }}" = "Examples" ]; then | |
cd Examples | |
fi | |
- name: Build package | |
run: swift build | |
- name: Run tests | |
run: swift test | |
linux: | |
name: Ubuntu - ${{ matrix.package }} (Swift ${{ matrix.swift }}) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
swift: | |
- '5.10' | |
- '5.9' | |
package: | |
- 'main' | |
- 'Examples' | |
container: swift:${{ matrix.swift }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# Set working directory to Examples if testing the examples package | |
- name: Set working directory | |
run: | | |
if [ "${{ matrix.package }}" = "Examples" ]; then | |
cd Examples | |
fi | |
- name: Build package | |
run: swift build | |
- name: Run tests | |
run: swift test | |
windows: | |
name: Windows - ${{ matrix.package }} (Swift ${{ matrix.swift }}) | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
swift: | |
- '5.10' | |
- '5.9.1' # Macros has been added to Swift on Windows in 5.9.1 version | |
package: | |
- 'main' | |
- 'Examples' | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install Swift | |
uses: compnerd/gha-setup-swift@main | |
with: | |
branch: swift-${{ matrix.swift }}-release | |
tag: ${{ matrix.swift }}-RELEASE | |
# Set working directory to Examples if testing the examples package | |
- name: Set working directory | |
run: | | |
if ("${{ matrix.package }}" -eq "Examples") { | |
cd Examples | |
} | |
- name: Build package | |
run: swift build | |
# Looks like tests don't work on Windows | |
# - name: Run tests | |
# run: swift test | |
code-coverage: | |
name: Gather Code Coverage | |
needs: macos | |
runs-on: macos-14 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Select latest Xcode | |
run: sudo xcode-select -s /Applications/Xcode_15.4.app | |
- name: Build and test with coverage | |
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@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ./coverage_report.lcov | |
check-macro-compatibility: | |
name: Check Macro Compatibility | |
runs-on: macos-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Run Swift Macro Compatibility Check | |
uses: Matejkob/swift-macro-compatibility-check@main | |
with: | |
run-tests: true | |
major-versions-only: false | |