Skip to content

Commit 47f5c88

Browse files
author
Jochen
committed
workflow: test and on success build release with all artifacts
1 parent f4ab27b commit 47f5c88

2 files changed

Lines changed: 80 additions & 57 deletions

File tree

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,83 @@
1-
name: .NET 8
1+
name: CI/CD Pipeline
22

33
on:
44
push:
5+
branches:
6+
- '**'
57
tags:
68
- 'v*'
9+
pull_request:
710
workflow_dispatch:
811

912
jobs:
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/**

.github/workflows/tests.yml

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)