77 branches : [ main ]
88 workflow_dispatch :
99
10- defaults :
11- run :
12- working-directory : ./Recap
13-
1410jobs :
1511 lint :
1612 name : SwiftLint
17- runs-on : macos-15
13+ runs-on : macos-latest
1814
1915 steps :
2016 - name : Checkout code
3026
3127 build :
3228 name : Build
33- runs-on : macos-15
29+ runs-on : macos-latest
3430
3531 steps :
3632 - name : Checkout code
@@ -39,36 +35,39 @@ jobs:
3935 - name : Setup Xcode
4036 uses : maxim-lobanov/setup-xcode@v1
4137 with :
42- xcode-version : ' 16.0 '
38+ xcode-version : latest-stable
4339
44- - name : Cache Swift Package Manager
40+ - name : Cache DerivedData
4541 uses : actions/cache@v4
4642 with :
47- path : |
48- ~/Library/Developer/Xcode/DerivedData
49- .build
50- key : ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
43+ path : ~/Library/Developer/Xcode/DerivedData
44+ key : ${{ runner.os }}-deriveddata-${{ hashFiles('Recap/Recap.xcodeproj/project.pbxproj') }}
5145 restore-keys : |
52- ${{ runner.os }}-spm-
53-
54- - name : Resolve Dependencies
55- run : |
56- cd Recap
57- swift package resolve
46+ ${{ runner.os }}-deriveddata-
5847
5948 - name : Build Debug
6049 run : |
6150 cd Recap
62- swift build -c debug
51+ xcodebuild build \
52+ -project Recap.xcodeproj \
53+ -scheme Recap \
54+ -configuration Debug \
55+ -destination 'platform=macOS' \
56+ | xcbeautify
6357
6458 - name : Build Release
6559 run : |
6660 cd Recap
67- swift build -c release
61+ xcodebuild build \
62+ -project Recap.xcodeproj \
63+ -scheme Recap \
64+ -configuration Release \
65+ -destination 'platform=macOS' \
66+ | xcbeautify
6867
6968 test :
7069 name : Test
71- runs-on : macos-15
70+ runs-on : macos-latest
7271 needs : build
7372
7473 steps :
@@ -78,57 +77,43 @@ jobs:
7877 - name : Setup Xcode
7978 uses : maxim-lobanov/setup-xcode@v1
8079 with :
81- xcode-version : ' 16.0 '
80+ xcode-version : latest-stable
8281
83- - name : Cache Swift Package Manager
82+ - name : Cache DerivedData
8483 uses : actions/cache@v4
8584 with :
86- path : |
87- ~/Library/Developer/Xcode/DerivedData
88- .build
89- key : ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
85+ path : ~/Library/Developer/Xcode/DerivedData
86+ key : ${{ runner.os }}-deriveddata-${{ hashFiles('Recap/Recap.xcodeproj/project.pbxproj') }}
9087 restore-keys : |
91- ${{ runner.os }}-spm -
88+ ${{ runner.os }}-deriveddata -
9289
9390 - name : Run Tests with Coverage
9491 run : |
9592 cd Recap
96- swift test --enable-code-coverage --parallel
97-
98- - name : Generate Test Report
99- run : |
100- cd Recap
101- swift test --parallel --xunit-output=test-results.xml || true
93+ xcodebuild test \
94+ -project Recap.xcodeproj \
95+ -scheme Recap \
96+ -destination 'platform=macOS' \
97+ -resultBundlePath TestResults \
98+ -enableCodeCoverage YES \
99+ | xcbeautify
102100
103101 - name : Generate Coverage Report
104102 run : |
105103 cd Recap
106- xcrun llvm-cov export \
107- .build/debug/RecapPackageTests.xctest/Contents/MacOS/RecapPackageTests \
108- -instr-profile .build/debug/codecov/default.profdata \
109- -format=lcov \
110- -ignore-filename-regex=".build|Tests|Mocks" \
111- > coverage.lcov || true
104+ xcrun xccov view --report --json TestResults.xcresult > coverage.json
112105
113106 - name : Upload Test Results
114107 uses : actions/upload-artifact@v4
115108 if : always()
116109 with :
117110 name : test-results
118- path : Recap/test-results.xml
111+ path : Recap/TestResults.xcresult
119112
120113 - name : Upload Coverage Reports
121114 uses : codecov/codecov-action@v5
122115 with :
123- file : ./ Recap/coverage.lcov
116+ file : Recap/coverage.json
124117 flags : unittests
125118 name : recap-coverage
126- fail_ci_if_error : false
127-
128- - name : Publish Test Report
129- uses : mikepenz/action-junit-report@v4
130- if : always()
131- with :
132- report_paths : ' Recap/test-results.xml'
133- check_name : ' Test Results'
134- fail_on_failure : true
119+ fail_ci_if_error : false
0 commit comments