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
+
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
0 commit comments