1
1
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
2
2
3
+ trigger :
4
+ paths :
5
+ include :
6
+ - release
7
+ - .azure-pipelines
8
+ - .vsts.release.yml
9
+
3
10
schedules :
4
11
- cron : ' 0 6 * * 2'
5
12
displayName : Scheduled weekly run
@@ -88,11 +95,15 @@ extends:
88
95
Write-Host "isRelease = $isRelease"
89
96
Write-Host "##vso[task.setVariable variable=isRelease;isOutput=true]$isRelease"
90
97
98
+ $isTestRun = ($buildReason -eq 'IndividualCI' -or $buildReason -eq 'PullRequest')
99
+ Write-Host "isTestRun = $isTestRun"
100
+ Write-Host "##vso[task.setVariable variable=isTestRun;isOutput=true]$isTestRun"
101
+
91
102
$isScheduledRelease = $isRelease -and $buildReason -eq 'Schedule'
92
103
Write-Host "isScheduledRelease = $isScheduledRelease"
93
104
94
- if ($isRelease) {
95
- if ($isScheduledRelease) {
105
+ if ($isRelease -or $isTestRun ) {
106
+ if ($isScheduledRelease -or $isTestRun ) {
96
107
$majorAndMinorVersion = "3.$($currentSprint.sprint)"
97
108
$patchVersion = 0
98
109
## Looking for a free patch version
@@ -116,6 +127,9 @@ extends:
116
127
Write-Error "Version parameter is required for manual release." -ErrorAction Stop
117
128
}
118
129
}
130
+ if ($isTestRun) {
131
+ $agentVersion = '3.000.999'
132
+ }
119
133
Write-Host "agentVersion = $agentVersion"
120
134
Write-Host "##vso[task.setVariable variable=agentVersion;isOutput=true]$agentVersion"
121
135
@@ -137,10 +151,12 @@ extends:
137
151
# ###############################################################################
138
152
displayName : Create Release Branch
139
153
variables :
154
+ IsTestRun : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isTestRun'] ]
140
155
IsRelease : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isRelease'] ]
141
156
ReleaseBranch : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.releaseBranch'] ]
142
157
AgentVersion : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.agentVersion'] ]
143
- condition : and(succeeded(), eq(variables.IsRelease, 'True'))
158
+ condition : and(succeeded(), or(eq(variables.IsRelease, 'True'), eq(variables.IsTestRun, 'True')))
159
+
144
160
pool :
145
161
name : 1ES-ABTT-Shared-Pool
146
162
image : abtt-ubuntu-2204
@@ -178,10 +194,11 @@ extends:
178
194
name : 1ES-Shared-Hosted-Pool_Windows-Server-2022
179
195
demands : AzurePS
180
196
variables :
197
+ IsTestRun : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isTestRun'] ]
181
198
IsRelease : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isRelease'] ]
182
199
ReleaseBranch : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.releaseBranch'] ]
183
200
AgentVersion : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.agentVersion'] ]
184
- condition : and(succeeded(), eq(variables.IsRelease, 'True'))
201
+ condition : and(succeeded(), or( eq(variables.IsRelease, 'True'), eq(variables.IsTestRun, 'True') ))
185
202
steps :
186
203
187
204
# Clean
@@ -215,20 +232,46 @@ extends:
215
232
Select-AzSubscription -SubscriptionId $(SubscriptionId)
216
233
$storageContext = New-AzStorageContext -StorageAccountName vstsagentpackage -UseConnectedAccount
217
234
$versionDir = "$(AgentVersion)"
235
+
236
+ $container = "agent"
237
+ $isTestContainer = "$(IsTestRun)"
238
+ Write-Host "isTestContainer = $isTestContainer"
239
+
240
+ if ($isTestContainer -eq "True") {
241
+ $container = "testagent"
242
+ New-AzStorageContainer -Context $storageContext -Name $container -Permission Off
243
+ }
244
+ Write-Host "container = $container"
245
+
218
246
Get-ChildItem -LiteralPath "$(System.ArtifactsDirectory)/agent" | ForEach-Object {
219
247
$target=$_
220
248
Get-ChildItem -LiteralPath "$(System.ArtifactsDirectory)/agent/$target" -Include "*.zip","*.tar.gz" | ForEach-Object {
221
249
$executable = $_
222
- Write-Host "Uploading $executable to BlobStorage vstsagentpackage/agent /$versionDir"
223
- Set-AzStorageBlobContent -Context $storageContext -Container agent -File "$(System.ArtifactsDirectory)/agent/$target/$executable" -Blob "$versionDir/$executable" -Force
224
- $uploadFiles.Add("/agent /$versionDir/$executable")
250
+ Write-Host "Uploading $executable to BlobStorage vstsagentpackage/$container /$versionDir"
251
+ Set-AzStorageBlobContent -Context $storageContext -Container $container -File "$(System.ArtifactsDirectory)/agent/$target/$executable" -Blob "$versionDir/$executable" -Force
252
+ $uploadFiles.Add("/$container /$versionDir/$executable")
225
253
}
226
254
}
227
255
Write-Host "Purge Azure CDN Cache"
228
256
Clear-AzCdnEndpointContent -EndpointName vstsagentpackage -ProfileName vstsagentpackage -ResourceGroupName vstsagentpackage -ContentPath $uploadFiles
229
257
Write-Host "Force Refresh Azure CDN Cache"
230
258
Import-AzCdnEndpointContent -EndpointName vstsagentpackage -ProfileName vstsagentpackage -ResourceGroupName vstsagentpackage -ContentPath $uploadFiles
231
259
260
+ # Clean up blob container with test agent version
261
+ - task : AzurePowerShell@5
262
+ displayName : Delete Azure Blob container with test agent version
263
+ condition : and(succeeded(), eq(variables.IsTestRun, 'True'))
264
+ inputs :
265
+ azurePowerShellVersion : ' LatestVersion'
266
+ azureSubscription : ' azure-pipelines-agent-vstsagentpackage-oauth'
267
+ scriptType : ' InlineScript'
268
+ inline : |
269
+ Import-Module Azure, Az.Accounts, Az.Storage -ErrorAction Ignore -PassThru
270
+ Select-AzSubscription -SubscriptionId $(SubscriptionId)
271
+ $storageContext = New-AzStorageContext -StorageAccountName vstsagentpackage -UseConnectedAccount
272
+ $container = 'testagent'
273
+ Remove-AzStorageContainer -Name $container -Context $storageContext -Force
274
+
232
275
# Download all agent hashes created in previous phases
233
276
- task : DownloadBuildArtifacts@0
234
277
displayName : Download Agent Hashes
@@ -267,6 +310,7 @@ extends:
267
310
$releaseCreated = Invoke-RestMethod @releaseParams
268
311
Write-Host $releaseCreated
269
312
$releaseId = $releaseCreated.id
313
+ Write-Host "##vso[task.setVariable variable=releaseId;isoutput=true]$releaseId"
270
314
$assets = [System.IO.File]::ReadAllText("$(Build.SourcesDirectory)\assets.json").Replace("<AGENT_VERSION>","$(AgentVersion)")
271
315
$assetsParams = @{
272
316
Uri = "https://uploads.github.com/repos/Microsoft/azure-pipelines-agent/releases/$releaseId/assets?name=assets.json"
@@ -279,6 +323,36 @@ extends:
279
323
}
280
324
Invoke-RestMethod @assetsParams
281
325
displayName: Create agent release on Github
326
+ name: create_github_release
327
+
328
+ # Delete test agent release
329
+ - powershell : |
330
+ Write-Host "Deleting test github release."
331
+ $releaseId = $(create_github_release.releaseId)
332
+
333
+ $releaseParams = @{
334
+ Uri = "https://api.github.com/repos/Microsoft/azure-pipelines-agent/releases/$releaseId";
335
+ Method = 'DELETE';
336
+ Headers = @{
337
+ Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("vsts:$(GithubToken)"));
338
+ }
339
+ ContentType = 'application/json';
340
+ }
341
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
342
+ $releaseDeleted = Invoke-RestMethod @releaseParams
343
+ Write-Host $releaseDeleted.Id
344
+ displayName: Delete test agent release from Github
345
+ condition: and(succeeded(), eq(variables.IsTestRun, 'True'))
346
+
347
+ # Clean up test release branch
348
+ - powershell : |
349
+ git config --global user.email "[email protected] "
350
+ git config --global user.name "azure-pipelines-bot"
351
+ git status
352
+ git -c credential.helper='!f() { echo "username=pat"; echo "password=$(GithubToken)"; };f' push origin --delete $(ReleaseBranch)
353
+ git push --delete origin v$(AgentVersion)
354
+ displayName: Clean up test release branch
355
+ condition: and(succeeded(), eq(variables.IsTestRun, 'True'))
282
356
283
357
- stage : CreatePRs
284
358
dependsOn :
@@ -295,10 +369,11 @@ extends:
295
369
# ###############################################################################
296
370
displayName : Create PRs in AzureDevOps and ConfigChange
297
371
variables :
372
+ IsTestRun : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isTestRun'] ]
298
373
IsRelease : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isRelease'] ]
299
374
ReleaseBranch : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.releaseBranch'] ]
300
375
AgentVersion : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.agentVersion'] ]
301
- condition : and(succeeded(), eq(variables.IsRelease, 'True'))
376
+ condition : and(succeeded(), or( eq(variables.IsRelease, 'True'), eq(variables.IsTestRun, 'True') ))
302
377
steps :
303
378
- checkout : self
304
379
@@ -320,7 +395,7 @@ extends:
320
395
cd release
321
396
npm install
322
397
ls
323
- node createAdoPrs.js $(AgentVersion)
398
+ node createAdoPrs.js $(AgentVersion) --dryrun=$(IsTestRun)
324
399
name: s_CreateAdoPrs
325
400
displayName: Create PRs in AzureDevOps and ConfigChange
326
401
env:
@@ -341,6 +416,7 @@ extends:
341
416
- job : j_SendPRsNotifications
342
417
displayName : Send Release PRs notifications
343
418
variables :
419
+ IsTestRun : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isTestRun'] ]
344
420
IsRelease : $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.isRelease'] ]
345
421
AdoPrId : $[ stageDependencies.CreatePRs.create_ado_prs.outputs['s_CreateAdoPrs.AdoPrId'] ]
346
422
AdoPrLink : $[ stageDependencies.CreatePRs.create_ado_prs.outputs['s_CreateAdoPrs.AdoPrLink'] ]
@@ -350,6 +426,7 @@ extends:
350
426
and(
351
427
not(${{ parameters.disableNotifications }}),
352
428
eq(variables.IsRelease, 'True'),
429
+ eq(variables.IsTestRun, 'False'),
353
430
not(${{ parameters.onlyGitHubRelease }})
354
431
)
355
432
steps :
0 commit comments