Skip to content

Commit d217105

Browse files
committed
Squashed commit of the following: CI/CD with Github action
1 parent 661a557 commit d217105

File tree

5 files changed

+240
-347
lines changed

5 files changed

+240
-347
lines changed

.github/workflows/ci.yml

+237
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
name: CI-CD
2+
3+
on: [push, pull_request]
4+
5+
env:
6+
solution: 'src\ReportGenerator.sln'
7+
buildPlatform: Any CPU
8+
buildConfiguration: Release
9+
version: 4.8.9
10+
dotnetSDKVersion: 5.0.301
11+
nodeVersion: 14
12+
13+
jobs:
14+
build:
15+
16+
runs-on: windows-latest
17+
18+
steps:
19+
- uses: actions/checkout@v2
20+
21+
- name: 'Install npm'
22+
uses: actions/setup-node@v2
23+
with:
24+
node-version: '${{ env.nodeVersion }}'
25+
26+
- name: setup-msbuild
27+
uses: microsoft/setup-msbuild@v1
28+
29+
- name: 'Install dependendies'
30+
run: msbuild .\build.proj /t:Restore
31+
working-directory: src
32+
33+
- name: 'Setup .NET Core'
34+
uses: actions/setup-dotnet@v1
35+
with:
36+
dotnet-version: ${{ env.dotnetSDKVersion }}
37+
38+
- name: 'Show dotnet info'
39+
run: dotnet --info
40+
41+
- name: 'Show dotnet version'
42+
run: dotnet --version
43+
44+
- name: 'Use NuGet 5.x'
45+
uses: nuget/setup-nuget@v1
46+
47+
- name: 'NuGet Restore'
48+
run: nuget restore ${{ env.solution }}
49+
50+
- name: 'Compile Solution'
51+
run: msbuild '${{ env.solution }}' /p:configuration='${{ env.buildConfiguration }}' /p:platform='${{ env.buildPlatform }}'
52+
53+
- name: dotnet publish Console.NetCore 2.0
54+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f netcoreapp2.0 ReportGenerator.Console.NetCore.csproj
55+
working-directory: src/ReportGenerator.Console.NetCore
56+
57+
- name: dotnet publish Console.NetCore 2.1
58+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f netcoreapp2.1 ReportGenerator.Console.NetCore.csproj
59+
working-directory: src/ReportGenerator.Console.NetCore
60+
61+
- name: dotnet publish Console.NetCore 3.0
62+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f netcoreapp3.0 ReportGenerator.Console.NetCore.csproj
63+
working-directory: src/ReportGenerator.Console.NetCore
64+
65+
- name: dotnet publish Console.NetCore 5.0
66+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f net5.0 ReportGenerator.Console.NetCore.csproj
67+
working-directory: src/ReportGenerator.Console.NetCore
68+
69+
- name: dotnet publish DotnetGlobalTool 2.1
70+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f netcoreapp2.1 ReportGenerator.DotnetGlobalTool.csproj
71+
working-directory: src/ReportGenerator.DotnetGlobalTool
72+
73+
- name: dotnet publish DotnetGlobalTool 3.0
74+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f netcoreapp3.0 ReportGenerator.DotnetGlobalTool.csproj
75+
working-directory: src/ReportGenerator.DotnetGlobalTool
76+
77+
- name: dotnet publish DotnetGlobalTool 5.0
78+
run: dotnet publish -c ${{ env.BuildConfiguration }} -f net5.0 ReportGenerator.DotnetGlobalTool.csproj
79+
working-directory: src/ReportGenerator.DotnetGlobalTool
80+
81+
- name: Test
82+
run: dotnet test src\ReportGenerator.Core.Test\ReportGenerator.Core.Test.csproj --configuration ${{ env.BuildConfiguration }} --no-build /p:CollectCoverage=true /p:DeterministicSourcePaths=true /p:IncludeTestAssembly=true /p:CoverletOutputFormat=opencover%2ccobertura /p:CoverletOutput=../target/reports/coverage/
83+
84+
- name: ReportGenerator
85+
uses: danielpalme/[email protected]
86+
with:
87+
reports: 'src\target\reports\coverage\coverage.opencover.xml'
88+
targetdir: 'src\target\reports\coverage'
89+
reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'
90+
assemblyfilters: '-xunit*'
91+
92+
- name: 'Publish code coverage results'
93+
uses: actions/[email protected]
94+
with:
95+
name: CoverageReport
96+
path: src/target/reports/coverage
97+
98+
- name: 'Prepare VSIX release: NetCore'
99+
run: |
100+
mkdir src/AzureDevopsTask/ReportGenerator/tools/netcoreapp2.1
101+
xcopy 'src\ReportGenerator.Console.NetCore\bin\Release\netcoreapp2.1\publish' 'src\AzureDevopsTask\ReportGenerator\tools\netcoreapp2.1' /s
102+
103+
- name: 'Prepare VSIX release: Install TFS Cross Platform Command Line Interface (tfx-cli)'
104+
run: npm install -g tfx-cli
105+
106+
- name: 'Prepare VSIX release: npm install'
107+
run: npm install
108+
working-directory: src/AzureDevopsTask/ReportGenerator
109+
110+
- name: 'Prepare VSIX release: Compile TypeScript'
111+
run: npm run tsc --
112+
working-directory: src/AzureDevopsTask/ReportGenerator
113+
114+
- name: Create VSIX release
115+
run: tfx extension create --manifest-globs vss-extension.json --output-path ../target/packages
116+
working-directory: src/AzureDevopsTask
117+
118+
- name: 'Prepare ZIP release: mkdir'
119+
run: |
120+
mkdir tmpzip
121+
mkdir tmpzip\net47
122+
mkdir tmpzip\netcoreapp2.0
123+
mkdir tmpzip\netcoreapp2.1
124+
mkdir tmpzip\netcoreapp3.0
125+
mkdir tmpzip\net5.0
126+
127+
- name: 'Prepare ZIP release'
128+
run: |
129+
xcopy "src\ReportGenerator.Console\bin\Release\Readme.txt" "tmpzip\"
130+
xcopy "src\ReportGenerator.Console\bin\Release\LICENSE.txt" "tmpzip\"
131+
xcopy "src\ReportGenerator.Console\bin\Release\appsettings.json" "tmpzip\net47\"
132+
xcopy "src\ReportGenerator.Console\bin\Release\*.dll" "tmpzip\net47"
133+
xcopy "src\ReportGenerator.Console\bin\Release\ReportGenerator.exe" "tmpzip\net47"
134+
xcopy "src\ReportGenerator.Console\bin\Release\ReportGenerator.exe.config" "tmpzip\net47"
135+
xcopy 'src\ReportGenerator.Console.NetCore\bin\Release\netcoreapp2.0\publish\*' 'tmpzip\netcoreapp2.0' /s
136+
xcopy 'src\ReportGenerator.Console.NetCore\bin\Release\netcoreapp2.1\publish\*' 'tmpzip\netcoreapp2.1' /s
137+
xcopy 'src\ReportGenerator.Console.NetCore\bin\Release\netcoreapp3.0\publish\*' 'tmpzip\netcoreapp3.0' /s
138+
xcopy 'src\ReportGenerator.Console.NetCore\bin\Release\net5.0\publish\*' 'tmpzip\net5.0' /s
139+
140+
- name: 'Pack ZIP release'
141+
run: Compress-Archive -Path tmpzip/* -DestinationPath src/target/packages/ReportGenerator_${{ env.Version }}.zip
142+
143+
- name: 'NuGet pack dotnet-reportgenerator-globaltool'
144+
run: nuget pack src/Deployment/nuget/dotnet-reportgenerator-globaltool.nuspec -OutputDirectory src/target/packages -Version ${{ env.Version }}
145+
146+
- name: 'NuGet pack ReportGenerator.Core'
147+
run: nuget pack src/Deployment/nuget/ReportGenerator.Core.nuspec -OutputDirectory src/target/packages -Version ${{ env.Version }}
148+
149+
- name: 'NuGet pack ReportGenerator'
150+
run: nuget pack src/Deployment/nuget/ReportGenerator.nuspec -OutputDirectory src/target/packages -Version ${{ env.Version }}
151+
152+
- name: 'Chocolatey pack reportgenerator.portable'
153+
run: .$env:USERPROFILE\.nuget\packages\chocolatey\0.10.14\tools\chocolateyInstall\choco.exe pack src/Deployment/chocolatey/reportgenerator.portable.nuspec --outputdirectory=src/target/packages --version=${{ env.Version }}
154+
155+
- name: 'Publish Artifact: packages'
156+
uses: actions/upload-artifact@v2
157+
with:
158+
path: src/target/packages
159+
name: packages
160+
161+
publish:
162+
163+
needs: build
164+
runs-on: windows-latest
165+
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && startsWith(github.event.commits[0].message, 'Release ') }}
166+
167+
steps:
168+
- uses: actions/checkout@v2
169+
170+
- name: 'Install npm'
171+
uses: actions/setup-node@v2
172+
with:
173+
node-version: '${{ env.nodeVersion }}'
174+
175+
- name: setup-msbuild
176+
uses: microsoft/setup-msbuild@v1
177+
178+
- name: 'Install dependendies'
179+
run: msbuild .\build.proj /t:Restore
180+
working-directory: src
181+
182+
- name: 'Use NuGet 5.x'
183+
uses: nuget/setup-nuget@v1
184+
185+
- uses: actions/download-artifact@v2
186+
with:
187+
name: packages
188+
189+
- name: GitHubRelease
190+
uses: softprops/action-gh-release@v1
191+
with:
192+
name: ReportGenerator_${{ env.Version }}
193+
body: This release requires .NET 4.7 or .NET Core 2.x/3.x/5.x.
194+
tag_name: v${{ env.Version }}
195+
files: ReportGenerator_${{ env.Version }}.zip
196+
env:
197+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
198+
continue-on-error: true
199+
200+
- name: 'Prepare FTP Upload'
201+
run: |
202+
mkdir ftp
203+
xcopy "ReportGenerator_${{ env.Version }}.zip" "ftp"
204+
205+
- name: 'FTP Upload: ZIP Release'
206+
uses: SamKirkland/[email protected]
207+
with:
208+
server: ${{ secrets.FTP_HOST }}
209+
username: ${{ secrets.FTP_USER }}
210+
password: ${{ secrets.FTP_PASSWORD }}
211+
local-dir: ftp
212+
dangerous-clean-slate: true
213+
continue-on-error: true
214+
215+
- name: 'NuGet push dotnet-reportgenerator-globaltool'
216+
run: nuget push dotnet-reportgenerator-globaltool.${{ env.Version }}.nupkg -ApiKey ${{ secrets.NUGETAPIKEY }} -Source https://www.nuget.org/api/v2/package
217+
continue-on-error: true
218+
219+
- name: 'NuGet push ReportGenerator.Core'
220+
run: nuget push ReportGenerator.Core.${{ env.Version }}.nupkg -ApiKey ${{ secrets.NUGETAPIKEY }} -Source https://www.nuget.org/api/v2/package"
221+
continue-on-error: true
222+
223+
- name: 'NuGet push ReportGenerator'
224+
run: nuget push ReportGenerator.${{ env.Version }}.nupkg -ApiKey ${{ secrets.NUGETAPIKEY }} -Source https://www.nuget.org/api/v2/package"
225+
continue-on-error: true
226+
227+
- name: 'Chocolatey push reportgenerator.portable'
228+
run: .$env:USERPROFILE\.nuget\packages\chocolatey\0.10.14\tools\chocolateyInstall\choco.exe push reportgenerator.portable.${{ env.Version }}.nupkg --apikey ${{ secrets.CHOCOLATEYAPIKEY }} --source https://push.chocolatey.org/
229+
continue-on-error: true
230+
231+
- name: 'Prepare VSIX release: Install TFS Cross Platform Command Line Interface (tfx-cli)'
232+
run: npm install -g tfx-cli
233+
continue-on-error: true
234+
235+
- name: Create VSIX release
236+
run: tfx extension publish --vsix Palmmedia.reportgenerator-${{ env.Version }}.vsix -t ${{ secrets.VISUALSTUDIOMARKETPLACETOKEN }}
237+
continue-on-error: true

README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ ReportGenerator
1111
<b>Powerful code coverage visualization</b>
1212

1313
[![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/danielpalme/ReportGenerator/master/LICENSE.txt)
14-
[![Build Status](https://dev.azure.com/danielpalme/ReportGenerator/_apis/build/status/danielpalme.ReportGenerator?branchName=master)](https://dev.azure.com/danielpalme/ReportGenerator/_build/latest?definitionId=3&branchName=master)
15-
![Coverage](https://img.shields.io/azure-devops/coverage/danielpalme/ReportGenerator/3.svg)
14+
[![CI-CD](https://github.com/danielpalme/ReportGenerator/actions/workflows/ci.yml/badge.svg)](https://github.com/danielpalme/ReportGenerator/actions/workflows/ci.yml)
1615

1716
</div>
1817

0 commit comments

Comments
 (0)