-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
azure-pipelines.yml
223 lines (214 loc) Β· 7.48 KB
/
azure-pipelines.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# .NET Core
# Build and test projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
# Only trigger CI builds for the master branch, instead
# of every branch. You'll automatically be configured to
# build PRs, but you can't currently control that from the YAML directly
# For details, see https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers
trigger:
branches:
include:
- 'master'
tags:
include:
- '*'
paths:
include:
- src/*
pr:
branches:
include:
- '*'
paths:
include:
- src/*
variables:
COREHOST_TRACE: 0
# Disable the .NET logo in the console output.
DOTNET_NOLOGO: true
# Disable the .NET first time experience to skip caching NuGet packages and speed up the build.
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# Disable sending .NET CLI telemetry to Microsoft.
DOTNET_CLI_TELEMETRY_OPTOUT: true
# Set the build number in MinVer.
MINVERBUILDMETADATA: build.$(Build.BuildId)
# We can run multiple jobs in parallel. For this project
# we are running Linux, Windows, and macOS jobs. For syntax details
# see https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases
jobs:
# Provide a name for the job
- job: Linux
# The VM image to use for the hosted agent. For a list of possible agents
# see https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted
# You can see the software installed on each agent at the same link.
pool:
vmImage: 'ubuntu-latest'
variables:
BuildConfiguration: 'release'
BuildPlatform: 'any cpu'
disable.coverage.autogenerate: 'true'
# The steps to run to execute the build.
steps:
- task: UseDotNet@2
displayName: 'Use .NET SDK 7.0'
inputs:
packageType: 'sdk'
version: '7.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
displayName: 'Build Project in $(BuildConfiguration) mode'
inputs:
command: 'build'
projects: '**/NaCl.Core.csproj'
arguments: '-c $(BuildConfiguration)'
- script: dotnet test -f net7.0 test/NaCl.Core.Tests --logger trx /p:CollectCoverage=true /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/ /p:CoverletOutputFormat=cobertura /p:Exclude='[NaCl.Core.Tests]*'
displayName: 'Unit testing'
enabled: false
- task: DotNetCoreCLI@2
displayName: 'Unit testing'
inputs:
command: 'test'
projects: '**/NaCl.Core.Tests.csproj'
arguments: '/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:Include="[NaCl.*]*" /p:Exclude="[*Tests]*"'
enabled: false
- task: reportgenerator@4
displayName: 'Generate Coverage Report'
inputs:
reports: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'
targetdir: '$(Build.ArtifactStagingDirectory)/TestResults/'
reporttypes: 'HtmlInline_AzurePipelines_Dark;Cobertura;Badges'
enabled: false
- script: dotnet test -f net7.0 test/NaCl.Core.Tests --logger trx
displayName: 'Run Unit Tests'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '**/*.trx'
continueOnError: true
condition: always()
- task: PublishCodeCoverageResults@1
displayName: 'Publish Coverage Results'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Build.ArtifactStagingDirectory)/TestResults/Cobertura.xml'
reportDirectory: '$(Build.ArtifactStagingDirectory)/TestResults/'
continueOnError: true
condition: always()
enabled: false
- task: DotNetCoreCLI@2
displayName: 'Publish Library'
inputs:
command: 'publish'
arguments: '-c $(BuildConfiguration) -f net6.0 -o $(Build.ArtifactStagingDirectory) --no-restore'
projects: src/NaCl.Core/NaCl.Core.csproj
publishWebProjects: false
modifyOutputPath: true
zipAfterPublish: true
enabled: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Logs'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
continueOnError: true
condition: always()
enabled: false
# Run a build on macOS at the same time
- job: macOS
pool:
vmImage: 'macOS-latest'
variables:
BuildConfiguration: 'release'
steps:
- task: UseDotNet@2
displayName: 'Use .NET SDK 7.0'
inputs:
packageType: 'sdk'
version: '7.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: dotnet restore
displayName: 'Restore Project'
- script: dotnet build -c $(BuildConfiguration) --no-restore
displayName: 'Build Project in $(BuildConfiguration) mode'
- script: dotnet test -f net7.0 test/NaCl.Core.Tests --logger trx
displayName: 'Run Unit Tests'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
continueOnError: true
condition: always()
# Run a build on Windows at the same time
- job: Windows
pool:
vmImage: 'windows-latest'
variables:
BuildConfiguration: 'release'
BuildPlatform: 'any cpu'
disable.coverage.autogenerate: 'true'
steps:
- task: NuGetAuthenticate@0
displayName: 'Authenticate with Azure Artifacts'
condition: ne(variables['Build.Reason'], 'PullRequest')
- task: UseDotNet@2
displayName: 'Use .NET SDK 7.0'
inputs:
packageType: 'sdk'
version: '7.0.x'
- task: DotNetCoreCLI@2
displayName: 'Build Project in $(BuildConfiguration) mode'
inputs:
command: 'build'
projects: '**/NaCl.Core.csproj'
arguments: '-c $(BuildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Run Tests'
inputs:
command: 'test'
projects: '**/*.Tests.csproj'
arguments: '/p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Include="[NaCl.*]*" /p:Exclude="[*Tests]*"'
- task: reportgenerator@4
displayName: 'Generate Coverage Report'
inputs:
reports: '$(Build.SourcesDirectory)/**/coverage.opencover.xml'
targetdir: '$(Build.ArtifactStagingDirectory)/TestResults/'
reporttypes: 'HtmlInline_AzurePipelines_Dark;HTMLChart;Cobertura'
- task: PublishCodeCoverageResults@1
displayName: 'Publish Coverage Results'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Build.ArtifactStagingDirectory)/TestResults/cobertura.xml'
reportDirectory: '$(Build.ArtifactStagingDirectory)/TestResults/'
- task: DotNetCoreCLI@2
displayName: 'Pack NuGet'
inputs:
command: 'pack'
packagesToPack: '**/NaCl.Core.csproj'
nobuild: true
includesymbols: true
- task: NuGetCommand@2
displayName: 'Push NuGet'
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'ffbd9fd0-ffca-4040-8576-0fa5065bd6d9/b465c74e-3671-458e-996f-8bbf45f957bc'
- task: DotNetCoreCLI@2
displayName: 'Publish Library'
inputs:
command: 'publish'
arguments: '-c $(BuildConfiguration) -f net7.0 -o $(Build.ArtifactStagingDirectory) --no-restore'
projects: src/NaCl.Core/NaCl.Core.csproj
publishWebProjects: false
enabled: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'library'
publishLocation: 'Container'
enabled: false