1- name : .NET 8
1+ name : CI/CD Pipeline
22
33on :
44 push :
5+ branches :
6+ - ' **'
57 tags :
68 - ' v*'
9+ pull_request :
710 workflow_dispatch :
811
912jobs :
10- build :
13+ tests :
14+ name : Run Unit Tests with Coverage
1115 runs-on : windows-latest
16+ outputs :
17+ test_outcome : ${{ steps.tests.outcome }}
18+ steps :
19+ - name : Checkout code
20+ uses : actions/checkout@v4
21+
22+ - name : Setup .NET
23+ uses : actions/setup-dotnet@v4
24+ with :
25+ dotnet-version : ' 8.0.x'
26+
27+ - name : Restore dependencies
28+ run : dotnet restore
29+
30+ - name : Build
31+ run : dotnet build --no-restore --configuration Release
32+
33+ - name : Run Tests and collect Coverage
34+ id : tests
35+ run : dotnet test --no-build --configuration Release --logger "trx;LogFileName=test-results.trx" --results-directory ./TestResults --collect:"XPlat Code Coverage"
36+
37+ - name : Publish Test Report to GitHub UI
38+ uses : dorny/test-reporter@v1
39+ if : always()
40+ with :
41+ name : Unit Tests
42+ path : ./TestResults/test-results.trx
43+ reporter : dotnet-trx
44+
45+ - name : Generate HTML Coverage Report
46+ uses : danielpalme/ReportGenerator-GitHub-Action@5.2.5
47+ with :
48+ reports : ' TestResults/**/coverage.cobertura.xml'
49+ targetdir : ' coveragereport'
50+ reporttypes : ' HtmlInline;Cobertura'
51+
52+ - name : Upload Coverage Report as Artifact
53+ uses : actions/upload-artifact@v4
54+ with :
55+ name : Code-Coverage-Report
56+ path : coveragereport
57+
58+ - name : Upload Test Results as Artifact
59+ uses : actions/upload-artifact@v4
60+ with :
61+ name : TestResults
62+ path : ./TestResults
63+
64+ build-and-release :
65+ name : Build and Release (only for tags)
66+ runs-on : windows-latest
67+ needs : tests
68+ if : startsWith(github.ref, 'refs/tags/v')
1269 env :
1370 PROJECT_NAME : OffRouteMap
1471 steps :
15- - uses : actions/checkout@v5
72+ - name : Checkout code
73+ uses : actions/checkout@v4
1674
17- - name : Setup dotnet
75+ - name : Setup .NET
1876 uses : actions/setup-dotnet@v4
1977 with :
2078 dotnet-version : ' 8.0.x'
2179
22- - name : Install dependencies
80+ - name : Restore dependencies
2381 run : dotnet restore
2482
2583 - name : Build
@@ -28,11 +86,26 @@ jobs:
2886 - name : Publish
2987 run : dotnet publish ${env.PROJECT_NAME}.csproj -c Release --self-contained true -r win-x64 /p:PublishSingleFile=true /p:IncludeAllContentForSelfExtract=true -o publish
3088
31- - name : Create Release and Upload Artifact
89+ - name : Download Test Results
90+ uses : actions/download-artifact@v4
91+ with :
92+ name : TestResults
93+ path : ./TestResults
94+
95+ - name : Download Coverage Report
96+ uses : actions/download-artifact@v4
97+ with :
98+ name : Code-Coverage-Report
99+ path : coveragereport
100+
101+ - name : Create GitHub Release and Upload Files
32102 uses : softprops/action-gh-release@v2
33103 with :
34104 tag_name : ${{ github.ref }}
35105 name : ' Release ${{ github.ref }}'
36106 draft : false
37107 prerelease : false
38- files : publish/${{ env.PROJECT_NAME }}.exe
108+ files : |
109+ publish/${{ env.PROJECT_NAME }}.exe
110+ TestResults/**
111+ coveragereport/**
0 commit comments