diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5eaa13e..713f206 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,8 +22,11 @@ concurrency: group: validator-${{ github.head_ref }} cancel-in-progress: true +env: + SCHEME_NAME: "Validator-Package" + jobs: - macOS: + test-apple-platforms: name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} env: @@ -33,128 +36,44 @@ jobs: fail-fast: false matrix: include: - - xcode: "Xcode_26.0.1" - runsOn: macOS-26 - name: "macOS 26, Xcode 26.0, Swift 6.2.0" - - xcode: "Xcode_16.1" - runsOn: macOS-14 - name: "macOS 14, Xcode 16.1, Swift 6.0.2" - - xcode: "Xcode_15.4" - runsOn: macOS-14 - name: "macOS 14, Xcode 15.4, Swift 5.10" - steps: - - uses: actions/checkout@v5 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Validator-Package" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload test coverage reports to Codecov - uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main - with: - scheme_name: Validator-Package - filename: ${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} + # macOS + - { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" } + - { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" } + - { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" } - iOS: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 - strategy: - fail-fast: false - matrix: - include: - - destination: "OS=26.0.1,name=iPhone 17 Pro" - xcode: "Xcode_26.0.1" - runsOn: macOS-26 - name: "OS=26.0, Xcode 26.0, Swift 6.2.0" - - destination: "OS=18.1,name=iPhone 16 Pro" - name: "iOS 18.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=17.4,name=iPhone 15 Pro" - name: "iOS 17.4" - xcode: "Xcode_15.3" - runsOn: macos-14 - steps: - - uses: actions/checkout@v5 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - uses: actions/upload-artifact@v5 - with: - name: ${{ matrix.name }} - path: test_output + # iOS + - { platform: iOS, name: "iOS 26.0, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0.1,name=iPhone 17 Pro" } + - { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" } + - { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" } - tvOS: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 - strategy: - fail-fast: false - matrix: - include: - - destination: "OS=26.0,name=Apple TV" - xcode: "Xcode_26.0.1" - runsOn: macOS-26 - name: "tvOS 26.0" - - destination: "OS=18.1,name=Apple TV" - name: "tvOS 18.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=17.4,name=Apple TV" - name: "tvOS 17.4" - xcode: "Xcode_15.3" - runsOn: macos-14 - steps: - - uses: actions/checkout@v5 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload test coverage reports to Codecov - uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main - with: - scheme_name: Validator-Package - filename: ${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} + # tvOS + - { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" } + - { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" } + - { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" } - watchOS: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 - strategy: - fail-fast: false - matrix: - include: - - destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" - xcode: "Xcode_26.0.1" - runsOn: macOS-26 - name: "watchOS 26.0" - - destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" - name: "watchOS 11.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" - name: "watchOS 10.5" - xcode: "Xcode_15.3" - runsOn: macOS-14 - - destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" - name: "watchOS 10.4" - xcode: "Xcode_15.3" - runsOn: macos-14 + # watchOS + - { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" } + - { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" } + - { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" } + - { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" } steps: - - uses: actions/checkout@v5 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload test coverage reports to Codecov + - name: Checkout code + uses: actions/checkout@v5 + - name: Run tests - ${{ matrix.name }} + run: | + xcodebuild test \ + -scheme "${{ env.SCHEME_NAME }}" \ + -destination "${{ matrix.destination }}" \ + -enableCodeCoverage YES \ + -resultBundlePath "test_output/${{ matrix.name }}.xcresult" \ + clean || exit 1 + - name: Upload test coverage to Codecov uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: - scheme_name: Validator-Package + scheme_name: ${{ env.SCHEME_NAME }} filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} - - spm: + spm-build: name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} env: @@ -164,34 +83,30 @@ jobs: fail-fast: false matrix: include: - - destination: "macOS 26, SPM 6.2.0 Test" - xcode: "Xcode_26.0.1" - runsOn: macOS-26 - - destination: "macOS 15, SPM 6.0.2 Test" - xcode: "Xcode_16.0" - runsOn: macOS-15 - - name: "macOS 14, SPM 6.0.2 Test" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - name: "macOS 14, SPM 5.10.0 Test" - xcode: "Xcode_15.3" - runsOn: macos-14 + - { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 } + - { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 } + - { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 } + - { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 } steps: - - uses: actions/checkout@v5 - - name: ${{ matrix.name }} + - name: Checkout code + uses: actions/checkout@v5 + - name: Build with Swift Package Manager - ${{ matrix.name }} run: swift build -c release merge-test-reports: - needs: [iOS, macOS, watchOS, tvOS] + needs: test-apple-platforms runs-on: macos-15 steps: - name: Download artifacts uses: actions/download-artifact@v6 with: path: test_output + - run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult - - name: Upload Merged Artifact + + - name: Upload merged test results uses: actions/upload-artifact@v5 with: - name: MergedResult + name: MergedTestResults path: test_output/final + retention-days: 30 diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + +