Sync eng/common directory with azure-sdk-tools for PR 1515 (#2088)
* Add lease to runs.
This commit is contained in:
parent
0fce2f7d68
commit
2a945c3053
21
eng/common/pipelines/templates/steps/retain-run.yml
Normal file
21
eng/common/pipelines/templates/steps/retain-run.yml
Normal file
@ -0,0 +1,21 @@
|
||||
parameters:
|
||||
- name: DaysValid
|
||||
default: 365
|
||||
type: number
|
||||
|
||||
steps:
|
||||
- task: PowerShell@2
|
||||
displayName: Retain pipeline run
|
||||
condition: ${{ parameters.Condition }}
|
||||
inputs:
|
||||
pwsh: true
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/scripts/Add-RetentionLease.ps1
|
||||
arguments: >
|
||||
-Organization azure-sdk
|
||||
-Project $(System.TeamProject)
|
||||
-DefinitionId $(System.DefinitionId)
|
||||
-RunId $(Build.BuildId)
|
||||
-OwnerId Pipeline
|
||||
-DaysValid ${{parameters.DaysValid}}
|
||||
-Base64EncodedAuthToken $(System.AccessToken)
|
||||
-Debug
|
||||
42
eng/common/scripts/Add-RetentionLease.ps1
Normal file
42
eng/common/scripts/Add-RetentionLease.ps1
Normal file
@ -0,0 +1,42 @@
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Organization,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Project,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[int]$DefinitionId,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[int]$RunId,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$OwnerId,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[int]$DaysValid,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Base64EncodedAuthToken
|
||||
)
|
||||
|
||||
. (Join-Path $PSScriptRoot common.ps1)
|
||||
|
||||
LogDebug "Checking for existing leases on run: $RunId"
|
||||
$existingLeases = Get-RetentionLeases -Organization $Organization -Project $Project -DefinitionId $DefinitionId -RunId $RunId -OwnerId $OwnerId -Base64EncodedAuthToken $Base64EncodedAuthToken
|
||||
|
||||
if ($existingLeases.count -ne 0) {
|
||||
LogDebug "Found $($existingLeases.count) leases, will delete them first."
|
||||
|
||||
foreach ($lease in $existingLeases.value) {
|
||||
LogDebug "Deleting lease: $($lease.leaseId)"
|
||||
Delete-RetentionLease -Organization $Organization -Project $Project -LeaseId $lease.leaseId -Base64EncodedAuthToken $Base64EncodedAuthToken
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LogDebug "Creating new lease on run: $RunId"
|
||||
$lease = Add-RetentionLease -Organization $Organization -Project $Project -DefinitionId $DefinitionId -RunId $RunId -OwnerId $OwnerId -DaysValid $DaysValid -Base64EncodedAuthToken $Base64EncodedAuthToken
|
||||
LogDebug "Lease ID is: $($lease.value.leaseId)"
|
||||
@ -90,3 +90,71 @@ function Get-DevOpsBuilds {
|
||||
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
|
||||
-MaximumRetryCount 3
|
||||
}
|
||||
|
||||
function Delete-RetentionLease {
|
||||
param (
|
||||
$Organization,
|
||||
$Project,
|
||||
$LeaseId,
|
||||
$Base64EncodedAuthToken
|
||||
)
|
||||
|
||||
$uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?ids=$LeaseId&api-version=6.0-preview.1"
|
||||
|
||||
return Invoke-RestMethod `
|
||||
-Method DELETE `
|
||||
-Uri $uri `
|
||||
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
|
||||
-MaximumRetryCount 3
|
||||
}
|
||||
|
||||
function Get-RetentionLeases {
|
||||
param (
|
||||
$Organization,
|
||||
$Project,
|
||||
$DefinitionId,
|
||||
$RunId,
|
||||
$OwnerId,
|
||||
$Base64EncodedAuthToken
|
||||
)
|
||||
|
||||
$uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?ownerId=$OwnerId&definitionId=$DefinitionId&runId=$RunId&api-version=6.0-preview.1"
|
||||
|
||||
return Invoke-RestMethod `
|
||||
-Method GET `
|
||||
-Uri $uri `
|
||||
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
|
||||
-MaximumRetryCount 3
|
||||
}
|
||||
|
||||
function Add-RetentionLease {
|
||||
param (
|
||||
$Organization,
|
||||
$Project,
|
||||
$DefinitionId,
|
||||
$RunId,
|
||||
$OwnerId,
|
||||
$DaysValid,
|
||||
$Base64AuthToken
|
||||
)
|
||||
|
||||
$parameter = @{}
|
||||
$parameter["definitionId"] = $DefinitionId
|
||||
$parameter["runId"] = $RunId
|
||||
$parameter["ownerId"] = $OwnerId
|
||||
$parameter["daysValid"] = $DaysValid
|
||||
|
||||
|
||||
$body = $parameter | ConvertTo-Json
|
||||
|
||||
$uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?api-version=6.0-preview.1"
|
||||
|
||||
return Invoke-RestMethod `
|
||||
-Method POST `
|
||||
-Body "[$body]" `
|
||||
-Uri $uri `
|
||||
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
|
||||
-MaximumRetryCount 3 `
|
||||
-ContentType "application/json"
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user