1- name : CI/CD Pipeline
1+ name : Release Builder
22
33on :
44 push :
5- branches :
6- - ' **'
75 tags :
86 - ' v*'
9- pull_request :
107 workflow_dispatch :
118
129jobs :
13- tests :
10+ test-build-release :
1411 name : Run Unit Tests with Coverage
1512 runs-on : windows-latest
13+ env :
14+ PROJECT_NAME : OffRouteMap
1615 outputs :
1716 test_outcome : ${{ steps.tests.outcome }}
1817 steps :
@@ -35,70 +34,32 @@ jobs:
3534 run : dotnet test --no-build --configuration Release --logger "trx;LogFileName=test-results.trx" --results-directory ./TestResults --collect:"XPlat Code Coverage"
3635
3736 - name : Publish Test Report to GitHub UI
38- uses : dorny/test-reporter@v1
3937 if : always()
38+ uses : dorny/test-reporter@v1
4039 with :
4140 name : Unit Tests
4241 path : ./TestResults/test-results.trx
4342 reporter : dotnet-trx
4443
4544 - name : Generate HTML Coverage Report
45+ if : success()
4646 uses : danielpalme/ReportGenerator-GitHub-Action@5.2.5
4747 with :
4848 reports : ' TestResults/**/coverage.cobertura.xml'
4949 targetdir : ' coveragereport'
5050 reporttypes : ' HtmlInline;Cobertura'
5151
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')
69- env :
70- PROJECT_NAME : OffRouteMap
71- steps :
72- - name : Checkout code
73- uses : actions/checkout@v4
74-
75- - name : Setup .NET
76- uses : actions/setup-dotnet@v4
77- with :
78- dotnet-version : ' 8.0.x'
79-
80- - name : Restore dependencies
81- run : dotnet restore
82-
83- - name : Build
84- run : dotnet build --configuration Release --no-restore
52+ - name : Zip Coverage Report
53+ if : success()
54+ run : |
55+ powershell Compress-Archive -Path coveragereport\* -DestinationPath coverage-report.zip
8556
8657 - name : Publish
58+ if : success()
8759 run : dotnet publish ${env.PROJECT_NAME}.csproj -c Release --self-contained true -r win-x64 /p:PublishSingleFile=true /p:IncludeAllContentForSelfExtract=true -o publish
8860
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-
10161 - name : Create GitHub Release and Upload Files
62+ if : success()
10263 uses : softprops/action-gh-release@v2
10364 with :
10465 tag_name : ${{ github.ref }}
10768 prerelease : false
10869 files : |
10970 publish/${{ env.PROJECT_NAME }}.exe
110- TestResults/**
111- coveragereport/**
71+ coverage-report.zip
72+ TestResults/test-results.trx
0 commit comments