forked from stryker-mutator/stryker-net
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathazure-pipelines.yml
More file actions
237 lines (226 loc) · 8.48 KB
/
Copy pathazure-pipelines.yml
File metadata and controls
237 lines (226 loc) · 8.48 KB
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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
name: $(PackageVersion).$(VersionBuildNumber)
schedules:
- cron: "0 1 * * *"
displayName: Nightly
branches:
include:
- master
always: true
trigger:
batch: true
branches:
include:
- master
pr:
branches:
include:
- '*'
paths:
exclude:
- 'docs/*'
- '.github/*'
variables:
PackageVersion: '0.15.0'
VersionBuildNumber: $[counter('0.15.0', 1)]
IntegrationTestVersion: $(PackageVersion)-alpha.$(VersionBuildNumber)
ProjectsToPack: src/Stryker.Core/Stryker.Core/Stryker.Core.csproj;src/Stryker.CLI/Stryker.CLI/Stryker.CLI.csproj
MygetFeed: https://www.myget.org/F/stryker-mutator-integrationtest
AzureArtifactFeedUri: https://pkgs.dev.azure.com/stryker-mutator/Stryker/_packaging/stryker-net/nuget/v3/index.json
MygetFeedUri: https://www.myget.org/F/stryker-mutator-integrationtest/api/v3/index.json
NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages
LibManCacheWindows: $(USERPROFILE)/.librarymanager/cache
LibManCacheMacLinux: $(HOME)/.librarymanager/cache
RestoreLockedMode: true
pool:
vmImage: 'windows-latest'
stages:
- template: pipeline-templates/update-package-lock-files-stage.yml
- stage: Analysis
dependsOn: UpdatePackageLockFiles
condition: and(not(failed()), eq(variables['System.PullRequest.IsFork'], 'False'))
jobs:
- job:
displayName: Run Sonar Analysis
steps:
- template: pipeline-templates/populate-cache-steps.yml
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'SonarCloud stryker-net'
organization: 'stryker-net'
scannerMode: 'MSBuild'
projectKey: 'stryker-net'
projectName: 'Stryker .NET'
projectVersion: '$(Build.BuildNumber)'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: 'src/Stryker.CLI/Stryker.CLI.sln'
- task: DotNetCoreCLI@2
displayName: 'Run unit tests'
inputs:
command: test
projects: 'src/Stryker.Core/Stryker.Core.UnitTest/Stryker.Core.UnitTest.csproj'
arguments: '--logger trx --results-directory $(Agent.TempDirectory) --collect "Code coverage"'
publishTestResults: false
- task: SonarCloudAnalyze@1
- task: SonarCloudPublish@1
inputs:
pollingTimeoutSec: '300'
- job: RunStryker
displayName: Run stryker on Stryker.CLI and Stryker.Core
condition: eq(variables['Build.Reason'], 'Schedule')
timeoutInMinutes: 240
steps:
- task: DotNetCoreCLI@2
displayName: 'Install dotnet-stryker'
inputs:
command: custom
custom: tool
arguments: install dotnet-stryker -g
includeNuGetOrg: true
- script: dotnet stryker --reporters "['dashboard', 'dots']" --dashboard-project github.com/stryker-mutator/stryker-net --dashboard-version master --dashboard-module cli --dashboard-api-key $(Stryker.Dashboard.Api.Key)
condition: succeeded()
displayName: Run Stryker on Stryker.CLI
workingDirectory: 'src\Stryker.CLI\Stryker.CLI.UnitTest'
- script: dotnet stryker --reporters "['dashboard', 'dots']" --dashboard-project github.com/stryker-mutator/stryker-net --dashboard-version master --dashboard-module core --dashboard-api-key $(Stryker.Dashboard.Api.Key)
condition: succeeded()
displayName: Run Stryker on Stryker.Core
workingDirectory: 'src\Stryker.Core\Stryker.Core.UnitTest'
- stage: DeployIntegrationtestPackage
displayName: Deploy Integrationtest Package
dependsOn: UpdatePackageLockFiles
condition: not(failed())
jobs:
- deployment: PublishIntegrationTestPackage
displayName: Prepare integrationtest package
environment: 'myget'
strategy:
runOnce:
deploy:
steps:
- checkout: self
- template: pipeline-templates/populate-cache-steps.yml
- task: DotNetCoreCLI@2
displayName: 'Restore vstest binaries'
inputs:
command: 'custom'
custom: 'restore'
arguments: '--packages ./.vstest/'
workingDirectory: 'src/Stryker.Core/Stryker.Core/ToolHelpers/'
- task: DotNetCoreCLI@2
displayName: 'Pack integrationtest packages'
inputs:
command: pack
versioningScheme: byEnvVar
versionEnvVar: IntegrationTestVersion
packagesToPack: $(ProjectsToPack)
packDirectory: $(Build.ArtifactStagingDirectory)/integrationtest
includesymbols: true
- task: DotNetCoreCLI@2
displayName: 'Publish integrationtest packages'
condition: eq(variables['System.PullRequest.IsFork'], 'True')
inputs:
command: custom
custom: 'nuget'
arguments: 'push *dotnet-stryker*$(IntegrationTestVersion).nupkg -s $(MygetFeed) -k $(IntegrationTestFeedKey)'
workingDirectory: '$(Build.ArtifactStagingDirectory)/integrationtest'
- task: DotNetCoreCLI@2
displayName: 'Publish integrationtest packages'
condition: eq(variables['System.PullRequest.IsFork'], 'False')
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/integrationtest/*$(IntegrationTestVersion).nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: '506a1f46-900e-434e-805f-ff8d36fc81af/cc8fa47b-395f-417d-8b3d-72618b95ddb8'
- job: WaitOnMyGetProcessing
displayName: Wait on pre-release packages to be processed on MyGet
dependsOn: 'PublishIntegrationTestPackage'
pool: server
steps:
- task: Delay@1
inputs:
delayForMinutes: '1'
- stage: IntegrationTests
dependsOn:
- Analysis
- DeployIntegrationtestPackage
condition: not(failed())
jobs:
- job: WindowsTests
displayName: Run tests on Windows
steps:
- task: NuGetToolInstaller@0
displayName: 'Install nuget for stryker full framework'
- template: pipeline-templates/prepare-integration-test-steps.yml
- template: pipeline-templates/run-integration-test-steps.yml
parameters:
testName: 'windows-netcore'
workingDirectory: 'integrationtest/TargetProjects/NetCoreTestProject.XUnit'
- template: pipeline-templates/run-integration-test-steps.yml
parameters:
testName: 'windows-netframework'
workingDirectory: 'integrationtest/TargetProjects/NetFramework/FullFrameworkApp.Test'
- task: DotNetCoreCLI@2
displayName: 'Assert integration test results'
inputs:
command: test
projects: '**/Validation.csproj'
- job: LinuxTests
displayName: Run tests on Linux
pool:
vmImage: ubuntu-latest
steps:
- template: pipeline-templates/prepare-integration-test-steps.yml
- template: pipeline-templates/run-integration-test-steps.yml
parameters:
testName: 'linux-netcore'
workingDirectory: 'integrationtest/TargetProjects/NetCoreTestProject.XUnit'
- task: DotNetCoreCLI@2
displayName: 'Assert integration test results'
inputs:
command: test
projects: '**/Validation.csproj'
- job: MacOsTests
displayName: Run tests on Mac OS
pool:
vmImage: macOS-latest
steps:
- template: pipeline-templates/prepare-integration-test-steps.yml
- template: pipeline-templates/run-integration-test-steps.yml
parameters:
testName: 'macos-netcore'
workingDirectory: 'integrationtest/TargetProjects/NetCoreTestProject.XUnit'
- task: DotNetCoreCLI@2
displayName: 'Assert integration test results'
inputs:
command: test
projects: '**/Validation.csproj'
- stage: PublishReleaseArtifact
displayName: Publish Release Artifact
dependsOn:
- Analysis
- IntegrationTests
condition: eq(variables['build.sourcebranch'], 'refs/heads/master')
jobs:
- job: PublishRelease
displayName: Publish Release Artifacts
steps:
- template: pipeline-templates/populate-cache-steps.yml
- task: DotNetCoreCLI@2
displayName: 'Restore vstest binaries'
inputs:
command: 'custom'
custom: 'restore'
arguments: '--packages ./.vstest/'
workingDirectory: 'src/Stryker.Core/Stryker.Core/ToolHelpers/'
- task: DotNetCoreCLI@2
displayName: 'Pack release package'
inputs:
command: pack
packagesToPack: $(ProjectsToPack)
packDirectory: $(Build.ArtifactStagingDirectory)/release
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: release'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/release'
ArtifactName: release