Implement a CI pipeline (#13003)
Blue committed
May 29, 2025 at 16:31 UTC
0fcad801bca05155813e2509564669ce71b13d3c
7 files changed
+180
-135
.pipelines/build-stage.yml
+151
-122
@@ -36,6 +36,16 @@ parameters:
36
- x64
37
- arm64
38
39
+ - name: pool
40
+ type: string
41
+ default: ''
42
+
43
+ - name: vsoOrg
44
+ type: string
45
+
46
+ - name: vsoProject
47
+ type: string
48
+
49
- name: esrp
50
type: object
51
default:
@@ -55,13 +65,19 @@ stages:
65
- stage: build
66
jobs:
67
- job:
68
+
69
displayName: "Formatting & localization checks"
70
timeoutInMinutes: 30
60
- pool:
61
- type: windows
71
+
72
variables:
73
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
74
75
+ ${{ if eq(parameters.pool, '') }}:
76
+ pool: {'type': 'windows'}
77
+
78
+ ${{ else }}:
79
+ pool: ${{ parameters.pool }}
80
+
81
steps:
82
- script: python tools/devops/validate-localization.py localization/strings en-US
83
displayName: Validate localization resources
@@ -88,8 +104,12 @@ stages:
104
- job: build
105
displayName: "Build WSL package"
106
timeoutInMinutes: 120
91
- pool:
92
- type: windows
107
+
108
+ ${{ if eq(parameters.pool, '') }}:
109
+ pool: {'type': 'windows'}
110
+
111
+ ${{ else }}:
112
+ pool: ${{ parameters.pool }}
113
114
variables:
115
NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS: 60
@@ -146,7 +166,7 @@ stages:
166
displayName: "CMake ${{ platform }}"
167
inputs:
168
workingDirectory: "."
149
- cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId)
169
+ cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId) -DVSO_ORG=${{ parameters.vsoOrg }} -DVSO_PROJECT=${{ parameters.vsoProject }}
170
171
# This additional Restore NuGet package task is added as a workaround for WSL Settings to have its' packages restored properly.
172
# Without this, building wsl settings may encounter the following error:
@@ -161,47 +181,48 @@ stages:
181
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
182
displayName: "Build ${{ target.target }} (${{ platform }})"
183
164
- - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
165
- displayName: "Sign ${{ target.target }} (${{ platform }})"
166
- condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
167
- inputs:
168
- ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
169
- signConfigType: ${{ parameters.esrp.signConfigType }}
170
- SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
171
- MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
172
- MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
173
- ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
174
- AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
175
- AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
176
- AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
177
- AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
178
- FolderPath: "bin\\${{ platform }}"
179
- Pattern: "${{ target.pattern }}"
180
- UseMSIAuthentication: true
181
- EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
182
- inlineOperation: |
183
- [
184
- {
185
- "KeyCode": "CP-230012",
186
- "OperationCode": "SigntoolSign",
187
- "Parameters" : {
188
- "OpusName" : "Microsoft",
189
- "OpusInfo" : "http://www.microsoft.com",
190
- "FileDigest" : "/fd \"SHA256\"",
191
- "PageHash" : "/NPH",
192
- "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
184
+ - ${{ if eq(parameters.isRelease, 'true') }}:
185
+ - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
186
+ displayName: "Sign ${{ target.target }} (${{ platform }})"
187
+ condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
188
+ inputs:
189
+ ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
190
+ signConfigType: ${{ parameters.esrp.signConfigType }}
191
+ SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
192
+ MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
193
+ MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
194
+ ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
195
+ AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
196
+ AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
197
+ AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
198
+ AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
199
+ FolderPath: "bin\\${{ platform }}"
200
+ Pattern: "${{ target.pattern }}"
201
+ UseMSIAuthentication: true
202
+ EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
203
+ inlineOperation: |
204
+ [
205
+ {
206
+ "KeyCode": "CP-230012",
207
+ "OperationCode": "SigntoolSign",
208
+ "Parameters" : {
209
+ "OpusName" : "Microsoft",
210
+ "OpusInfo" : "http://www.microsoft.com",
211
+ "FileDigest" : "/fd \"SHA256\"",
212
+ "PageHash" : "/NPH",
213
+ "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
214
+ },
215
+ "ToolName" : "sign",
216
+ "ToolVersion" : "1.0"
217
},
194
- "ToolName" : "sign",
195
- "ToolVersion" : "1.0"
196
- },
197
- {
198
- "KeyCode" : "CP-230012",
199
- "OperationCode" : "SigntoolVerify",
200
- "Parameters" : {},
201
- "ToolName" : "sign",
202
- "ToolVersion" : "1.0"
203
- }
204
- ]
218
+ {
219
+ "KeyCode" : "CP-230012",
220
+ "OperationCode" : "SigntoolVerify",
221
+ "Parameters" : {},
222
+ "ToolName" : "sign",
223
+ "ToolVersion" : "1.0"
224
+ }
225
+ ]
226
227
# Replace the intermediate wslsettings binaries file with the signed versions so that any future steps building wslsettings will use the signed versions
228
- task: PowerShell@2
@@ -230,47 +251,48 @@ stages:
251
$arch = '${{ platform }}'
252
Copy-Item -Path "bin\$arch\release\wsl.msi" -Destination "$(ob_outputDirectory)\bundle\wsl.$(version.WSL_PACKAGE_VERSION).$arch.msi"
253
233
- - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
234
- displayName: "Sign the bundle"
235
- condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
236
- inputs:
237
- ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
238
- signConfigType: ${{ parameters.esrp.signConfigType }}
239
- SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
240
- MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
241
- MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
242
- ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
243
- AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
244
- AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
245
- AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
246
- AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
247
- FolderPath: "bundle"
248
- Pattern: "*.msixbundle"
249
- UseMSIAuthentication: true
250
- EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
251
- inlineOperation: |
252
- [
253
- {
254
- "KeyCode": "CP-230012",
255
- "OperationCode": "SigntoolSign",
256
- "Parameters" : {
257
- "OpusName" : "Microsoft",
258
- "OpusInfo" : "http://www.microsoft.com",
259
- "FileDigest" : "/fd \"SHA256\"",
260
- "PageHash" : "/NPH",
261
- "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
254
+ - ${{ if eq(parameters.isRelease, 'true') }}:
255
+ - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
256
+ displayName: "Sign the bundle"
257
+ condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
258
+ inputs:
259
+ ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
260
+ signConfigType: ${{ parameters.esrp.signConfigType }}
261
+ SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
262
+ MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
263
+ MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
264
+ ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
265
+ AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
266
+ AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
267
+ AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
268
+ AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
269
+ FolderPath: "bundle"
270
+ Pattern: "*.msixbundle"
271
+ UseMSIAuthentication: true
272
+ EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
273
+ inlineOperation: |
274
+ [
275
+ {
276
+ "KeyCode": "CP-230012",
277
+ "OperationCode": "SigntoolSign",
278
+ "Parameters" : {
279
+ "OpusName" : "Microsoft",
280
+ "OpusInfo" : "http://www.microsoft.com",
281
+ "FileDigest" : "/fd \"SHA256\"",
282
+ "PageHash" : "/NPH",
283
+ "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
284
+ },
285
+ "ToolName" : "sign",
286
+ "ToolVersion" : "1.0"
287
},
263
- "ToolName" : "sign",
264
- "ToolVersion" : "1.0"
265
- },
266
- {
267
- "KeyCode" : "CP-230012",
268
- "OperationCode" : "SigntoolVerify",
269
- "Parameters" : {},
270
- "ToolName" : "sign",
271
- "ToolVersion" : "1.0"
272
- }
273
- ]
288
+ {
289
+ "KeyCode" : "CP-230012",
290
+ "OperationCode" : "SigntoolVerify",
291
+ "Parameters" : {},
292
+ "ToolName" : "sign",
293
+ "ToolVersion" : "1.0"
294
+ }
295
+ ]
296
297
- script: md.exe $(ob_outputDirectory)\bin\nuget
298
displayName: "Create the nuget directory"
@@ -279,41 +301,42 @@ stages:
301
- script: nuget.exe pack ${{ package }} -OutputDirectory $(ob_outputDirectory)\bin\nuget -NonInteractive
302
displayName: Build ${{ package }}
303
282
- - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
283
- displayName: "Sign nuget packages"
284
- condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
285
- inputs:
286
- ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
287
- signConfigType: ${{ parameters.esrp.signConfigType }}
288
- SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
289
- MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
290
- MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
291
- ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
292
- AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
293
- AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
294
- AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
295
- AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
296
- FolderPath: '$(ob_outputDirectory)\bin\nuget'
297
- Pattern: "*.nupkg"
298
- UseMSIAuthentication: true
299
- EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
300
- inlineOperation: |
301
- [
302
- {
303
- "KeyCode": "CP-401405",
304
- "OperationCode": "NuGetSign",
305
- "Parameters" : {},
306
- "ToolName" : "sign",
307
- "ToolVersion" : "1.0"
308
- },
309
- {
310
- "KeyCode" : "CP-401405",
311
- "OperationCode" : "NuGetVerify",
312
- "Parameters" : {},
313
- "ToolName" : "sign",
314
- "ToolVersion" : "1.0"
315
- }
316
- ]
304
+ - ${{ if eq(parameters.isRelease, 'true') }}:
305
+ - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
306
+ displayName: "Sign nuget packages"
307
+ condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
308
+ inputs:
309
+ ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
310
+ signConfigType: ${{ parameters.esrp.signConfigType }}
311
+ SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
312
+ MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
313
+ MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
314
+ ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
315
+ AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
316
+ AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
317
+ AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
318
+ AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
319
+ FolderPath: '$(ob_outputDirectory)\bin\nuget'
320
+ Pattern: "*.nupkg"
321
+ UseMSIAuthentication: true
322
+ EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
323
+ inlineOperation: |
324
+ [
325
+ {
326
+ "KeyCode": "CP-401405",
327
+ "OperationCode": "NuGetSign",
328
+ "Parameters" : {},
329
+ "ToolName" : "sign",
330
+ "ToolVersion" : "1.0"
331
+ },
332
+ {
333
+ "KeyCode" : "CP-401405",
334
+ "OperationCode" : "NuGetVerify",
335
+ "Parameters" : {},
336
+ "ToolName" : "sign",
337
+ "ToolVersion" : "1.0"
338
+ }
339
+ ]
340
341
- powershell: |
342
foreach ($arch in @("x64", "ARM64"))
@@ -323,7 +346,7 @@ stages:
346
mkdir $pdbFolder
347
foreach ($filter in @("*.pdb", "*.debug"))
348
{
326
- foreach ($e in (Get-ChildItem -Recurse -Path $binFolder -Filter $filter)) {Copy-Item -Path $e.fullname -Destination (Join-Path $pdbFolder $e.name)}
349
+ foreach ($e in (Get-ChildItem -Recurse -Path $binFolder -Filter $filter)) {Move-Item -Path $e.fullname -Destination (Join-Path $pdbFolder $e.name)}
350
}
351
}
352
@@ -361,7 +384,7 @@ stages:
384
Move-Item -Path "tools\test\CloudTest-Setup.bat" -Destination "$(ob_outputDirectory)\testbin\CloudTest-Setup.bat"
385
Move-Item -Path "tools\wsl.wprp" -Destination "$(ob_outputDirectory)\testbin\wsl.wprp"
386
Move-Item -Path "test\linux\unit_tests" -Destination "$(ob_outputDirectory)\testbin\unit_tests"
364
-
387
+
388
Move-Item -Path bundle\release\* -Destination $(ob_outputDirectory)\bundle
389
$TestDistroVersion = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''Microsoft.WSL.TestDistro'']/@version').Node.Value
390
Copy-Item "packages\Microsoft.WSL.TestDistro.$TestDistroVersion\test_distro.tar.xz" "$(ob_outputDirectory)\testbin\x64"
@@ -380,5 +403,11 @@ stages:
403
$(ob_outputDirectory)/bin/**/*.exe
404
$(ob_outputDirectory)/bin/**/*.dll
405
406
+ - ${{ if ne(parameters.pool, '') }}:
407
+ - task: PublishPipelineArtifact@1
408
+ inputs:
409
+ targetPath: $(ob_outputDirectory)
410
+ artifactName: $(ob_artifactBaseName)$(ob_artifactSuffix)
411
+
412
- task: CodeQL3000Finalize@0
413
condition: ${{ and(parameters.isNightly, eq(variables['Build.SourceBranch'], 'refs/heads/main'))}}
.pipelines/test-job.yml
+9
-2
@@ -11,6 +11,10 @@ parameters:
11
- name: run
12
type: boolean
13
14
+ - name: pool
15
+ type: string
16
+ default: ''
17
+
18
jobs:
19
- job: test_${{ parameters.branch }}_${{ parameters.version }}
20
displayName: "${{ parameters.version }} tests - ${{ parameters.branch }}"
@@ -22,8 +26,11 @@ jobs:
26
ob_artifactSuffix: '_test'
27
timeoutInMinutes: 360
28
cancelTimeoutInMinutes: 420
25
- pool:
26
- type: cloudtestagentless
29
+ ${{ if eq(parameters.pool, '') }}:
30
+ pool: {'type': 'cloudtestagentless'}
31
+
32
+ ${{ else }}:
33
+ pool: ${{ parameters.pool }}
34
steps:
35
- task: CloudTestServerBuildTask@2
36
inputs:
.pipelines/test-stage.yml
+8
-3
@@ -3,12 +3,16 @@ parameters:
3
type: boolean
4
default: false
5
6
+ - name: pool
7
+ type: string
8
+ default: ''
9
+
10
- name: versions
11
type: object
12
default:
13
- wsl1
14
- wsl2
11
-
15
+
16
- name: test_images
17
type: object
18
default:
@@ -20,7 +24,7 @@ parameters:
24
image: 2022-datacenter-g2-2024-09-10
25
- name: vb_release
26
image: win10-22h2-ent-g2-2024-09-10
23
-
27
+
28
# TODO: ge_release
29
30
stages:
@@ -34,4 +38,5 @@ stages:
38
branch: "${{ image.name }}"
39
version: ${{ version }}
40
image: "${{ image.image }}"
37
- run: ${{ or(not(parameters.rs_prerelease_only), eq(image.name, 'rs_prerelease')) }}
\ No newline at end of file
41
+ run: ${{ or(not(parameters.rs_prerelease_only), eq(image.name, 'rs_prerelease')) }}
42
+ pool: "${{ parameters.pool }}"
\ No newline at end of file
.pipelines/wsl-build-nightly-onebranch.yml
+2
@@ -44,6 +44,8 @@ extends:
44
parameters:
45
isRelease: false
46
isNightly: true
47
+ vsoOrg: microsoft
48
+ vsoProject: Microsoft.WSL
49
50
- template: test-stage.yml@self
51
parameters:
.pipelines/wsl-build-pr.yml
+4
-4
@@ -4,15 +4,15 @@ trigger:
4
- master
5
- release/*
6
7
-git:
8
- fetchDepth: -1
9
- fetchTags: true
10
-
7
stages:
8
- template: build-stage.yml@self
9
parameters:
10
isRelease: false
11
+ pool: 'wsl-build'
12
+ vsoOrg: shine-oss
13
+ vsoProject: wsl
14
15
- template: test-stage.yml@self
16
parameters:
17
rs_prerelease_only: true
18
+ pool: server
.pipelines/wsl-build-release-onebranch.yml
+2
@@ -52,6 +52,8 @@ extends:
52
isRelease: true
53
packageVersion: ${{ iif(eq(parameters.testVersion, ''), variables['Build.SourceBranchName'], parameters.testVersion) }}
54
traceLoggingConfig: $(ReleaseTraceLoggingConfig)
55
+ vsoOrg: microsoft
56
+ vsoProject: Microsoft.WSL
57
58
- template: test-stage.yml@self
59
parameters:
cloudtest/TestMap.xml.in
+4
-4
@@ -5,7 +5,7 @@
5
<Provider Type="PipelineArtifacts">
6
<Properties>
7
<Add Name="CloudTest.ProviderCustomName" Value="[drop]" />
8
- <Add Name="PipelineArtifactBuildUrl" Value="https://microsoft.visualstudio.com/Microsoft.WSL/_build/results?buildId=${PIPELINE_BUILD_ID}"/>
8
+ <Add Name="PipelineArtifactBuildUrl" Value="https://${VSO_ORG}.visualstudio.com/${VSO_PROJECT}/_build/results?buildId=${PIPELINE_BUILD_ID}"/>
9
<Add Name="PipelineArtifactName" Value="drop_wsl_build"/>
10
</Properties>
11
</Provider>
@@ -13,21 +13,21 @@
13
<Properties>
14
<Add Name="CloudTest.ProviderCustomName" Value="[test_distro]" />
15
<!-- When updating the drops for this make sure the rentention is set to never expire -->
16
- <Add Name="DropURL" Value="https://microsoft.artifacts.visualstudio.com/DefaultCollection/_apis/drop/drops/WSL/${CLOUDTEST_TEST_DISTRO_DROP}"/>
16
+ <Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_DISTRO_DROP}"/>
17
</Properties>
18
</Provider>
19
<Provider Type="VSODrop">
20
<Properties>
21
<Add Name="CloudTest.ProviderCustomName" Value="[test_packages]" />
22
<!-- When updating the drops for this make sure the rentention is set to never expire -->
23
- <Add Name="DropURL" Value="https://microsoft.artifacts.visualstudio.com/DefaultCollection/_apis/drop/drops/WSL/${CLOUDTEST_TEST_PACKAGES}"/>
23
+ <Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_PACKAGES}"/>
24
</Properties>
25
</Provider>
26
<Provider Type="VSODrop">
27
<Properties>
28
<Add Name="CloudTest.ProviderCustomName" Value="[dump_tool]" />
29
<!-- When updating the drops for this make sure the rentention is set to never expire -->
30
- <Add Name="DropURL" Value="https://microsoft.artifacts.visualstudio.com/DefaultCollection/_apis/drop/drops/WSL/${DUMPTOOL_DROP}"/>
30
+ <Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${DUMPTOOL_DROP}"/>
31
</Properties>
32
</Provider>
33
</Providers>