From 5208ad29f63d862939aa338806abab78082ba7ca Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Sat, 6 Dec 2025 15:02:55 +0400 Subject: [PATCH] chore(ci): update workflow to run tests and build project --- .github/workflows/ci.yml | 189 +++--------------- .swiftlint.yml | 4 +- Package.swift | 2 +- Package@swift-5.7.swift | 22 -- Package@swift-5.8.swift | 22 -- ...swift-5.9.swift => Package@swift-6.0.swift | 2 +- 6 files changed, 34 insertions(+), 207 deletions(-) delete mode 100644 Package@swift-5.7.swift delete mode 100644 Package@swift-5.8.swift rename Package@swift-5.9.swift => Package@swift-6.0.swift (94%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d68cee0..21c2170 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,6 @@ on: push: branches: - main - - dev pull_request: paths: - '.swiftlint.yml' @@ -13,133 +12,18 @@ on: - "Source/**" - "Tests/**" -jobs: - SwiftLint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: GitHub Action for SwiftLint - uses: norio-nomura/action-swiftlint@3.2.1 - with: - args: --strict - env: - DIFF_BASE: ${{ github.base_ref }} - macOS: - 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: - - xcode: "Xcode_16.0" - runsOn: macOS-14 - name: "macOS 14, Xcode 16.0, Swift 6.0" - - xcode: "Xcode_15.4" - runsOn: macOS-14 - name: "macOS 14, Xcode 15.4, Swift 5.10" - - xcode: "Xcode_15.0" - runsOn: macos-13 - name: "macOS 13, Xcode 15.0, Swift 5.9.0" - - xcode: "Xcode_14.3.1" - runsOn: macos-13 - name: "macOS 13, Xcode 14.3.1, Swift 5.8.0" - steps: - - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Log" -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: Log - filename: ${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} +permissions: + contents: read - 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=18.1,name=iPhone 16 Pro" - name: "iOS 18.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=18.0,name=iPhone 16 Pro" - name: "iOS 18.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - destination: "OS=17.5,name=iPhone 15 Pro" - name: "iOS 17.5" - xcode: "Xcode_15.4" - runsOn: macOS-14 - - destination: "OS=17.0.1,name=iPhone 14 Pro" - name: "iOS 17.0.1" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=16.4,name=iPhone 14 Pro" - name: "iOS 16.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 - steps: - - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Log" -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: Log - filename: ${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} +concurrency: + group: log-${{ github.head_ref }} + cancel-in-progress: true - 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=18.1,name=Apple TV" - name: "tvOS 18.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=18.0,name=Apple TV" - name: "tvOS 18.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - destination: "OS=17.5,name=Apple TV" - name: "tvOS 17.5" - xcode: "Xcode_15.4" - runsOn: macOS-14 - - destination: "OS=17.0,name=Apple TV" - name: "tvOS 17.0" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=16.4,name=Apple TV" - name: "tvOS 16.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 - steps: - - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "Log" -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: Log - filename: ${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} +env: + SCHEME_NAME: "Log" - watchOS: +jobs: + test-apple-platforms: name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} env: @@ -149,26 +33,23 @@ jobs: fail-fast: false matrix: include: - - destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" - name: "watchOS 11.1" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - destination: "OS=11.0,name=Apple Watch Series 10 (46mm)" - name: "watchOS 11.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" - name: "watchOS 10.5" - xcode: "Xcode_15.4" - runsOn: macOS-14 - - destination: "OS=10.0,name=Apple Watch Series 9 (45mm)" - name: "watchOS 10.0" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)" - name: "watchOS 9.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 + # 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 + - { 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 + - { 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 + - { 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@v3 - name: ${{ matrix.name }} @@ -190,25 +71,17 @@ jobs: fail-fast: false matrix: include: - - name: "macOS 14, SPM 6.0.2 Test" - xcode: "Xcode_16.1" - runsOn: macOS-14 - - name: "macOS 14, SPM 6.0.0 Test" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - name: "macOS 14, SPM 5.9.0 Test" - xcode: "Xcode_15.0" - runsOn: macos-14 - - name: "macOS 13, SPM 5.8.1 Test" - xcode: "Xcode_14.3.1" - runsOn: macos-13 + - { 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@v3 - name: ${{ matrix.name }} run: swift build -c release merge-test-reports: - needs: [iOS, macOS, watchOS, tvOS] + needs: [test-apple-platforms] runs-on: macos-13 steps: - name: Download artifacts diff --git a/.swiftlint.yml b/.swiftlint.yml index ada4ca6..2750650 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,10 +1,8 @@ excluded: - Tests - Package.swift - - Package@swift-5.7.swift - - Package@swift-5.8.swift - - Package@swift-5.9.swift - Package@swift-5.10.swift + - Package@swift-6.0.swift - .build # Rules diff --git a/Package.swift b/Package.swift index e9b38d1..6d82973 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.0 +// swift-tools-version: 6.2 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Package@swift-5.7.swift b/Package@swift-5.7.swift deleted file mode 100644 index da68fea..0000000 --- a/Package@swift-5.7.swift +++ /dev/null @@ -1,22 +0,0 @@ -// swift-tools-version: 5.7 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "Log", - platforms: [ - .macOS(.v10_15), - .iOS(.v13), - .watchOS(.v7), - .tvOS(.v13), - ], - products: [ - .library(name: "Log", targets: ["Log"]), - ], - dependencies: [], - targets: [ - .target(name: "Log", dependencies: []), - .testTarget(name: "LogTests", dependencies: ["Log"]), - ] -) diff --git a/Package@swift-5.8.swift b/Package@swift-5.8.swift deleted file mode 100644 index fdb3ce5..0000000 --- a/Package@swift-5.8.swift +++ /dev/null @@ -1,22 +0,0 @@ -// swift-tools-version: 5.8 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "Log", - platforms: [ - .macOS(.v10_15), - .iOS(.v13), - .watchOS(.v7), - .tvOS(.v13), - ], - products: [ - .library(name: "Log", targets: ["Log"]), - ], - dependencies: [], - targets: [ - .target(name: "Log", dependencies: []), - .testTarget(name: "LogTests", dependencies: ["Log"]), - ] -) diff --git a/Package@swift-5.9.swift b/Package@swift-6.0.swift similarity index 94% rename from Package@swift-5.9.swift rename to Package@swift-6.0.swift index 7db16b1..e9b38d1 100644 --- a/Package@swift-5.9.swift +++ b/Package@swift-6.0.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription