-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (130 loc) · 4.39 KB
/
default.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
151
152
153
154
155
156
name: default
env:
DOTNET_NOLOGO: true
on:
push:
branches:
- develop
- main
pull_request:
branches:
- develop
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
cache: true
cache-dependency-path: ./**/packages.lock.json
global-json-file: global.json
- name: Restore dependencies
run: dotnet restore --locked-mode
- name: Build solution
run: dotnet build --configuration Release --no-restore
test:
needs: [build]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
cache: false
cache-dependency-path: ./**/packages.lock.json
global-json-file: global.json
- name: Restore dependencies
run: dotnet restore --locked-mode
- name: Run tests
run: foreach( $project in Get-ChildItem "ESCd.Extensions.*.Tests.csproj" -Recurse ) { dotnet test "$($project.FullName)" -f net8.0 --no-restore --results-directory TestResults --logger "trx;logFileName=$($project.BaseName).trx" --collect:"XPlat Code Coverage" /p:WarningLevel=0 -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.DeterministicReport=true }
shell: pwsh
- name: Upload artifact 'test-results'
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: test-results
path: TestResults
- name: Report test results
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: test results
path: TestResults/**/*.trx
reporter: dotnet-trx
- name: Generate coverage results
uses: danielpalme/ReportGenerator-GitHub-Action@5.3.6
with:
reports: TestResults/**/coverage.cobertura.xml
reporttypes: "Cobertura;MarkdownSummary"
targetdir: CoverageResults
title: coverage results
- name: Upload artifact 'coverage-results'
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: coverage-results
path: CoverageResults
- name: Report coverage results
uses: cryptoc1/cobertura-action@master
if: success() || failure()
with:
fail_below_threshold: false
link_missing_lines: true
minimum_coverage: 80
path: CoverageResults/Cobertura.xml
repo_token: ${{ secrets.GITHUB_TOKEN }}
report_name: coverage results
show_branch: false
show_class_names: true
show_missing: true
skip_covered: false
- name: Publish coverage results
if: success() || failure()
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
pack:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
cache: true
cache-dependency-path: ./**/packages.lock.json
global-json-file: global.json
- name: Restore dependencies
run: dotnet restore --locked-mode
- name: Create packages
run: dotnet pack --configuration Release --output dist /p:WarningLevel=0
- name: Upload artifact 'packages'
uses: actions/upload-artifact@v4
with:
name: packages
path: dist
publish:
if: startsWith(github.ref, 'refs/heads/main') || startsWith(github.ref, 'refs/heads/develop')
needs: [pack]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: global.json
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
cache: false
global-json-file: global.json
- name: Download artifact 'packages'
uses: actions/download-artifact@v4
with:
name: packages
- name: Push packages
run: dotnet nuget push "*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate