name: "Alamofire CI" on: push: branches: - master - hotfix paths: - ".github/workflows/**" - "Package.swift" - "Source/**" - "Tests/**" pull_request: paths: - ".github/workflows/**" - "Package.swift" - "Source/**" - "Tests/**" concurrency: group: ${{ github.ref_name }} cancel-in-progress: true jobs: macOS: name: Test macOS, All Xcodes and Swifts runs-on: ${{ matrix.runsOn }} env: DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" timeout-minutes: 10 strategy: fail-fast: false matrix: include: - xcode: "Xcode_14.3" runsOn: firebreak name: "macOS 13, Xcode 14.3, Swift 5.8.0" testPlan: "macOS" - xcode: "Xcode_14.2" runsOn: macOS-12 name: "macOS 12, Xcode 14.2, Swift 5.7.2" testPlan: "macOS" - xcode: "Xcode_14.1" runsOn: macOS-12 name: "macOS 12, Xcode 14.1, Swift 5.7.1" testPlan: "macOS" - xcode: "Xcode_14.0.1" runsOn: macOS-12 name: "macOS 12, Xcode 14.0.1, Swift 5.7.0" testPlan: "macOS" - xcode: "Xcode_13.4.1" runsOn: macOS-12 name: "macOS 12, Xcode 13.4.1, Swift 5.6.1" testPlan: "macOS-NoTS" - xcode: "Xcode_13.3.1" runsOn: macOS-12 name: "macOS 12, Xcode 13.3.1, Swift 5.6.0" testPlan: "macOS-NoTS" - xcode: "Xcode_13.2.1" runsOn: macOS-11 name: "macOS 11, Xcode 13.2.1, Swift 5.5.2" testPlan: "macOS-NoTS" - xcode: "Xcode_13.1" runsOn: macOS-11 name: "macOS 11, Xcode 13.1, Swift 5.5.1" testPlan: "macOS-NoTS" - xcode: "Xcode_13.0" runsOn: macOS-11 name: "macOS 11, Xcode 13.0, Swift 5.5.0" testPlan: "macOS-NoTS" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: "brew install alamofire/alamofire/firewalk && firewalk &" - name: ${{ matrix.name }} run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty Catalyst: name: Test Catalyst runs-on: macOS-13 env: DEVELOPER_DIR: /Applications/Xcode_14.3.app/Contents/Developer timeout-minutes: 10 steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk && firewalk & - name: Catalyst run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "platform=macOS" clean test | xcpretty Latest: name: Test Latest (iOS, tvOS, watchOS) runs-on: macOS-13 env: DEVELOPER_DIR: "/Applications/Xcode_14.3.app/Contents/Developer" timeout-minutes: 10 strategy: fail-fast: false matrix: include: - destination: "OS=16.4,name=iPhone 14 Pro" name: "iOS" scheme: "Alamofire iOS" - destination: "OS=16.4,name=Apple TV" name: "tvOS" scheme: "Alamofire tvOS" - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)" name: "watchOS" scheme: "Alamofire watchOS" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk && firewalk & - name: ${{ matrix.name }} run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean test | xcpretty iOS: name: "Test Old iOS" runs-on: firebreak env: DEVELOPER_DIR: "/Applications/Xcode_14.2.app/Contents/Developer" timeout-minutes: 10 strategy: fail-fast: false matrix: include: - destination: "OS=15.5,name=iPhone 13 Pro" name: "iOS 15.5" testPlan: "iOS-NoTS" - destination: "OS=14.5,name=iPhone 12 Pro" name: "iOS 14.5" testPlan: "iOS-NoTS" # - destination: "OS=13.7,name=iPhone 11 Pro" # name: "iOS 13.7" # testPlan: "iOS-NoTS" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk & - name: ${{ matrix.name }} run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty tvOS: name: Test Old tvOS runs-on: firebreak env: DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer timeout-minutes: 10 strategy: fail-fast: false matrix: include: - destination: "OS=15.4,name=Apple TV" name: "tvOS 15.4" testPlan: "tvOS-NoTS" - destination: "OS=14.5,name=Apple TV" name: "tvOS 14.5" testPlan: "tvOS-NoTS" # - destination: "OS=13.4,name=Apple TV" # name: "tvOS 13.4" # testPlan: "tvOS-NoTS" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk & - name: ${{ matrix.name }} run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire tvOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty watchOS: name: Test Old watchOS runs-on: firebreak env: DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer timeout-minutes: 10 strategy: fail-fast: false matrix: include: - destination: "OS=8.5,name=Apple Watch Series 7 (45mm)" name: "watchOS 8.5" testPlan: "watchOS-NoTS" - destination: "OS=7.4,name=Apple Watch Series 6 (44mm)" name: "watchOS 7.4" testPlan: "watchOS-NoTS" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk && firewalk & - name: ${{ matrix.name}} run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire watchOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty SPM: name: Test with SPM runs-on: ${{ matrix.runsOn }} env: DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" timeout-minutes: 10 strategy: fail-fast: false matrix: include: - xcode: "Xcode_14.3" runsOn: firebreak name: "macOS 13, SPM 5.8.0 Test" - xcode: "Xcode_14.2" runsOn: macOS-12 name: "macOS 12, SPM 5.7.2 Test" - xcode: "Xcode_14.1" runsOn: macOS-12 name: "macOS 12, SPM 5.7.1 Test" - xcode: "Xcode_14.0.1" runsOn: macOS-12 name: "macOS 12, SPM 5.7.0 Test" - xcode: "Xcode_13.4.1" runsOn: macOS-12 name: "macOS 12, SPM 5.6.1 Test" - xcode: "Xcode_13.3.1" runsOn: macOS-12 name: "macOS 12, SPM 5.6.0 Test" - xcode: "Xcode_13.2.1" runsOn: macOS-11 name: "macOS 11, SPM 5.5.2 Test" - xcode: "Xcode_13.1" runsOn: macOS-11 name: "macOS 11, SPM 5.5.1 Test" - xcode: "Xcode_13.0" runsOn: macOS-11 name: "macOS 11, SPM 5.5.0 Test" steps: - uses: actions/checkout@v3 - name: Install Firewalk run: brew install alamofire/alamofire/firewalk && firewalk & - name: Test SPM run: swift test -c debug Linux: name: Linux runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - image: swift:5.8.0-focal - image: swift:5.8.0-jammy - image: swift:5.8.0-bionic - image: swift:5.8.0-centos7 - image: swift:5.8.0-amazonlinux2 - image: swift:5.8.0-rhel-ubi9 - image: swiftlang/swift:nightly-focal - image: swiftlang/swift:nightly-jammy - image: swiftlang/swift:nightly-amazonlinux2 container: image: ${{ matrix.image }} timeout-minutes: 10 steps: - uses: actions/checkout@v3 - name: ${{ matrix.image }} run: swift build --build-tests -c debug Windows: name: Windows runs-on: windows-latest timeout-minutes: 10 steps: - name: Setup uses: compnerd/gha-setup-swift@main with: branch: swift-5.8-release tag: 5.8-RELEASE - name: Clone uses: actions/checkout@v3 - name: SPM Windows Build shell: cmd run: | cd ${{ github.workspace }} set SDKROOT=%SystemDrive%\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk %SystemDrive%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin\swift-build.exe --build-tests -c debug -Xlinker /INCREMENTAL:NO -v if not exist .build\x86_64-unknown-windows-msvc\debug\Alamofire.swiftmodule exit 1 CodeQL: name: Analyze with CodeQL runs-on: macOS-12 env: DEVELOPER_DIR: "/Applications/Xcode_14.2.app/Contents/Developer" CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT: true timeout-minutes: 10 steps: - name: Clone uses: actions/checkout@v3 - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: swift - name: Build macOS run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" clean build | xcpretty - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 with: category: "/language:swift"