我有一个脚本可以取消 Azure DevOps 管道中以前的构建。
这是我的代码:
$user = ""
$token = "<PAT>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
#repo id
$repoURL = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repo}?api-version=4.1"
$repo = Invoke-RestMethod -Uri $repoURL -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$repoId = $repo.id
$buildURL = "https://dev.azure.com/{organization}/{project}/_apis/build/builds?repository.type=TfsGit&repository.id=$repoId&branchName=refs/heads/develop&api-version=6.0"
$builds = Invoke-RestMethod -Uri $buildURL -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
foreach($build in $builds.value)
{
if ($build.status -ne "completed")
{
$buildId = $build.id
$uri = "https://dev.azure.com/{organization}/{project}/_apis/build/builds/$($buildId)?api-version=5.1"
$json = @{status="Cancelling"} | ConvertTo-Json -Compress
$build = Invoke-RestMethod -Uri $uri -Method Patch -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType "application/json" -Body $json
Write-Host $build
}
}
这很好用,但是它取消了所有构建。我如何取消除当前构建之外的所有构建?