mirror of https://github.com/dotnet/tye.git
committed by
GitHub
5 changed files with 86 additions and 20 deletions
@ -0,0 +1,47 @@ |
|||||
|
|
||||
|
Param( |
||||
|
[Parameter(Mandatory=$true)][int] $buildId, |
||||
|
[Parameter(Mandatory=$true)][string] $azdoOrgUri, |
||||
|
[Parameter(Mandatory=$true)][string] $azdoProject, |
||||
|
[Parameter(Mandatory=$true)][string] $token |
||||
|
) |
||||
|
|
||||
|
$ErrorActionPreference = 'Stop' |
||||
|
Set-StrictMode -Version 2.0 |
||||
|
. $PSScriptRoot\tools.ps1 |
||||
|
|
||||
|
|
||||
|
function Get-AzDOHeaders( |
||||
|
[string] $token) |
||||
|
{ |
||||
|
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":${token}")) |
||||
|
$headers = @{"Authorization"="Basic $base64AuthInfo"} |
||||
|
return $headers |
||||
|
} |
||||
|
|
||||
|
function Update-BuildRetention( |
||||
|
[string] $azdoOrgUri, |
||||
|
[string] $azdoProject, |
||||
|
[int] $buildId, |
||||
|
[string] $token) |
||||
|
{ |
||||
|
$headers = Get-AzDOHeaders -token $token |
||||
|
$requestBody = "{ |
||||
|
`"keepForever`": `"true`" |
||||
|
}" |
||||
|
|
||||
|
$requestUri = "${azdoOrgUri}/${azdoProject}/_apis/build/builds/${buildId}?api-version=6.0" |
||||
|
write-Host "Attempting to retain build using the following URI: ${requestUri} ..." |
||||
|
|
||||
|
try { |
||||
|
Invoke-RestMethod -Uri $requestUri -Method Patch -Body $requestBody -Header $headers -contentType "application/json" |
||||
|
Write-Host "Updated retention settings for build ${buildId}." |
||||
|
} |
||||
|
catch { |
||||
|
Write-PipelineTelemetryError -Category "Build" -Message "Failed to update retention settings for build: $_.Exception.Response.StatusDescription" |
||||
|
ExitWithExitCode 1 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Update-BuildRetention -azdoOrgUri $azdoOrgUri -azdoProject $azdoProject -buildId $buildId -token $token |
||||
|
ExitWithExitCode 0 |
||||
@ -0,0 +1,28 @@ |
|||||
|
parameters: |
||||
|
# Optional azure devops PAT with build execute permissions for the build's organization, |
||||
|
# only needed if the build that should be retained ran on a different organization than |
||||
|
# the pipeline where this template is executing from |
||||
|
Token: '' |
||||
|
# Optional BuildId to retain, defaults to the current running build |
||||
|
BuildId: '' |
||||
|
# Azure devops Organization URI for the build in the https://dev.azure.com/<organization> format. |
||||
|
# Defaults to the organization the current pipeline is running on |
||||
|
AzdoOrgUri: '$(System.CollectionUri)' |
||||
|
# Azure devops project for the build. Defaults to the project the current pipeline is running on |
||||
|
AzdoProject: '$(System.TeamProject)' |
||||
|
|
||||
|
steps: |
||||
|
- task: powershell@2 |
||||
|
inputs: |
||||
|
targetType: 'filePath' |
||||
|
filePath: eng/common/retain-build.ps1 |
||||
|
pwsh: true |
||||
|
arguments: > |
||||
|
-AzdoOrgUri: ${{parameters.AzdoOrgUri}} |
||||
|
-AzdoProject ${{parameters.AzdoProject}} |
||||
|
-Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} |
||||
|
-BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} |
||||
|
displayName: Enable permanent build retention |
||||
|
env: |
||||
|
SYSTEM_ACCESSTOKEN: $(System.AccessToken) |
||||
|
BUILD_ID: $(Build.BuildId) |
||||
Loading…
Reference in new issue