diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4b68be7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,77 @@ +name: CI + +on: + push: + branches: [ main ] + pull_request: + workflow_dispatch: + +jobs: + apple: + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + runner: + - macos-14 + - macos-26 + xcode: + - Xcode_15.2 + - Xcode_26.0 + destination: + - 'platform=iOS Simulator,OS=17.2,name=iPhone 15' + - 'platform=iOS Simulator,OS=26.0.1,name=iPhone 17' + - 'platform=tvOS Simulator,OS=17.2,name=Apple TV 4K (3rd generation) (at 1080p)' + - 'platform=tvOS Simulator,OS=26.0,name=Apple TV 4K (3rd generation) (at 1080p)' + - 'platform=macOS' + exclude: + # Don't run old macOS with new Xcode + - runner: macos-14 + xcode: Xcode_26.0 + # Don't run new macOS with old Xcode + - runner: macos-26 + xcode: Xcode_15.2 + # Don't run old simulators with new Xcode + - destination: 'platform=tvOS Simulator,OS=17.2,name=Apple TV 4K (3rd generation) (at 1080p)' + xcode: Xcode_26.0 + - destination: 'platform=iOS Simulator,OS=17.2,name=iPhone 15' + xcode: Xcode_26.0 + # Don't run new simulators with old Xcode + - destination: 'platform=tvOS Simulator,OS=26.0,name=Apple TV 4K (3rd generation) (at 1080p)' + xcode: Xcode_15.2 + - destination: 'platform=iOS Simulator,OS=26.0.1,name=iPhone 17' + xcode: Xcode_15.2 + + steps: + - name: Configure Xcode + run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Cache Swift + uses: actions/cache@v4 + with: + path: | + ~/Library/Caches/org.swift.swiftpm + ~/.cache/org.swift.swiftpm + key: 1-${{ runner.os }}-${{ matrix.xcode }}-${{ hashFiles('Package.swift') }} + restore-keys: | + 1-${{ runner.os }}-${{ matrix.xcode }}-${{ hashFiles('Package.swift') }} + 1-${{ runner.os }}-${{ matrix.xcode }}- + + - name: Tools Versions + run: | + xcodebuild -version + swift --version + + - name: Build and Run Tests + run: | + set -o pipefail && \ + NSUnbufferedIO=YES xcodebuild \ + -scheme smithy-swift-opentelemetry \ + -destination '${{ matrix.destination }}' \ + test 2>&1 \ + | xcbeautify + + diff --git a/Package.swift b/Package.swift index 61a6fa2..f01d165 100644 --- a/Package.swift +++ b/Package.swift @@ -6,8 +6,8 @@ let package = Package( name: "smithy-swift-opentelemetry", platforms: [ .macOS(.v12), - .iOS(.v16), - .tvOS(.v16), + .iOS(.v13), + .tvOS(.v13), .watchOS(.v9), ], products: [