-
Notifications
You must be signed in to change notification settings - Fork 1
150 lines (116 loc) · 3.97 KB
/
dotnet.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: .NET
on:
push:
paths-ignore: [ "StepLang.Wiki/**" ]
branches: [ "main" ]
pull_request:
paths-ignore: [ "StepLang.Wiki/**" ]
branches: [ "main" ]
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
version: [6.x, 7.x, 8.x]
runs-on: ${{ matrix.os }}
name: Build & Test on .NET ${{ matrix.version }} (${{ matrix.os }})
outputs:
badge: ${{ steps.coverage.outputs.badge }}
line_rate: ${{ steps.coverage.outputs.line_rate }}
branch_rate: ${{ steps.coverage.outputs.branch_rate }}
complexity: ${{ steps.coverage.outputs.complexity }}
health: ${{ steps.coverage.outputs.health }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ matrix.version }}
- name: Cache NuGet packages
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --configuration Release --no-build
test:
runs-on: ubuntu-latest
name: Test on .NET 7.x (ubuntu-latest)
outputs:
badge: ${{ steps.coverage.outputs.badge }}
line_rate: ${{ steps.coverage.outputs.line_rate }}
branch_rate: ${{ steps.coverage.outputs.branch_rate }}
complexity: ${{ steps.coverage.outputs.complexity }}
health: ${{ steps.coverage.outputs.health }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
- name: Cache NuGet packages
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./coverage
- name: Provide Code Coverage Summary
id: coverage
uses: ricardoboss/CodeCoverageSummary@dev
if: matrix.os == 'ubuntu-latest' && matrix.version == '7.x'
with:
filename: coverage/**/coverage.cobertura.xml
output: github
fail_below_min: true
thresholds: '0 85'
badge: true
report:
name: Report
needs: [ test ]
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check Style
id: style
run: dotnet tool update dotnet-format -g && dotnet format --verify-no-changes
- name: Check Docblock Coverage
id: docblocks
if: always()
run: dotnet tool update cranky -g && cranky --project ./StepLang/StepLang.csproj --github --set-exit-code --percentages 0,50
- name: Add PR comment
if: github.event_name == 'pull_request'
uses: thollander/actions-comment-pull-request@v2
with:
comment_tag: report
message: |
## Report
![Code Coverage](${{ needs.build.outputs.badge }})
Static Analysis:
- Code Style: `${{ steps.style.outcome }}`
- Docblocks: `${{ steps.docblocks.outputs.documented }} / ${{ steps.docblocks.outputs.total }}` (`${{ steps.docblocks.outputs.percent }}%`)