我正在尝试删除 Azure DevOps 构建定义,但它不允许我删除,因为它说:
“与请求的管道相关的一个或多个构建由版本保留。管道和构建不会被删除。”
然而,没有明显的方法来查看哪个版本导致构建被保留。当然,我尝试在线搜索,但如何在 Web UI 中执行此操作的所有示例/屏幕截图都显示了 Azure DevOps 网站几次迭代之前的 UI,因此所有控件看起来都不再相同。例如,我在任何地方都没有看到锁定图标。
如何找到保留这些构建定义的版本,以便删除它们,然后删除构建定义?
谢谢!
当您打开构建管道查看其详细构建记录时,您可以看到相关的发布名称及其链接:
在旧的管道版本上,有一个锁图标,可以明显地让我们知道它被保留。事实上,锁形图标不仅仅意味着它被release保留,手动构建retain也会显示这个图标。但是,当我们扩展新的冲刺时,我们似乎错过了这个明显的图标。
作为获取发布保留的构建列表的解决方法,这里有一个简短的脚本可以帮助您使用 Rest api 实现:
$token = "{PAT token}"
$url ="https://dev.azure.com/{org name}/{project name}/_apis/build/builds?api-version=5.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get
$results = $response.value | Where {$_.retainedByRelease -eq "true"} #|
Write-Host "results = $($results.id | ConvertTo-Json -Depth 100)"
Run Code Online (Sandbox Code Playgroud)
首先,使用 list builds api 获取当前项目中的所有构建。然后对于发布保留的构建,因为有一个参数可以指示它:retainedByRelease这里我用来$_.retainedByRelease -eq "true"获取发布实际保留的构建列表:
上面的脚本非常通用,可以在 Powershell-ise 和 Powershell Command Line 以及 VSTS 的 Powershell 任务中使用,无需进行任何更改。
11/19更新:
根据@Auth的评论,如果想要获取其关联的版本,最简单的方法是找到构建,然后检查其关联的发布管道,如我上面分享的屏幕截图所示。
如果这不能满足您的需求,并且我们之前使用的 API 中不包含任何版本信息,那么在这里,您需要使用这个 API:Releases - Get Release:
GET https://vsrm.dev.azure.com/{org name}/{project name}/_apis/release/releases?sourceId={project id}:{build definition id}&api-version=5.1
Run Code Online (Sandbox Code Playgroud)
在此 API 中,您需要指定project id:build definition id来过滤版本。
如果图标丢失,将让相应的团队知道并尝试在未来的冲刺中添加它。
| 归档时间: |
|
| 查看次数: |
7011 次 |
| 最近记录: |