如何使用旧保留模型删除运行

Krz*_*tof 5 azure-devops azure-pipelines

我有一些运行被保留,原因Legacy retention model如下:

在此输入图像描述

我不确定它来自哪里。我想删除它们,但不想每次运行都删除租约。有没有办法做到这一点?

Krz*_*tof 5

我在 Azure DevOps 上没有找到关闭它的设置,因此我编写了 powershell 脚本,该脚本遍历每个管道定义,然后构建和删除Legacy Retention Mode租约并使用此租约进行构建。

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":your-pat-here")) }

$organization = "org-name"
$project = "project-name"

$definitionsUrl = "https://dev.azure.com/${organization}/${project}/_apis/build/definitions?api-version=6.0"

$definitions = Invoke-RestMethod -Uri $definitionsUrl -Method Get -Headers $AzureDevOpsAuthenicationHeader

foreach ($definition in $definitions.value)
{
  Write-Host $definition.name -ForegroundColor Green
  
  $pipelineUrl = "https://dev.azure.com/${organization}/${project}/_apis/pipelines/$($definition.id)/runs?api-version=6.0-preview.1"

  # Invoke the REST call
  $result = Invoke-RestMethod -Uri $pipelineUrl -Method Get -Headers $AzureDevOpsAuthenicationHeader

  foreach ($run in $result.value) {
    $leasesUrl = "https://dev.azure.com/${organization}/${project}/_apis/build/builds/$($run.id)/leases?api-version=6.1-preview.1"

    $leasesResult = Invoke-RestMethod -Uri $leasesUrl -Method Get -Headers $AzureDevOpsAuthenicationHeader

    $ownerId = "Legacy Retention Model"
    foreach ($lease in $leasesResult.value) {
      if($lease.ownerId -Match $ownerId){

        $deleteLeaseUrl = "https://dev.azure.com/${organization}/${project}/_apis/build/retention/leases?ids=$($lease.leaseId)&api-version=6.0-preview.1"

        Write-Host "Removing ${ownerId} from run $($run.id) (created date $($run.createdDate))" -ForegroundColor Blue

        $leasesResult = Invoke-RestMethod -Uri $deleteLeaseUrl -Method Delete -Headers $AzureDevOpsAuthenicationHeader
        Write-Host "Removed lease"

        $deleteBuildUrl = "https://dev.azure.com/${organization}/${project}/_apis/build/builds/$($run.id)?api-version=6.0"

        $leasesResult = Invoke-RestMethod -Uri $deleteBuildUrl -Method Delete -Headers $AzureDevOpsAuthenicationHeader
        Write-Host "Removed build"
      }
    }
  }
}

Run Code Online (Sandbox Code Playgroud)