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