Azure Pipeline 运行不会自动删除
Posted
技术标签:
【中文标题】Azure Pipeline 运行不会自动删除【英文标题】:Azure Pipeline runs not automatically deleting 【发布时间】:2021-06-27 15:53:01 【问题描述】:我们有两个构建 YAML 管道来在 TFS 上运行测试,一个用于前端测试,一个用于后端测试。我们使用两个自托管的 Windows 代理来运行这些构建,并且我们在 Azure DevOps Server 2020 上。自从我们开始运行管道以来,我们注意到我们的 TFS 数据库大小在膨胀。我们已尝试编辑保留设置以仅保留最新版本,但无论我们进行什么更改,它们仍会保存。
以下是我们的保留设置:
收集设置
项目管道设置
项目管道发布保留:
编辑:测试保留设置:
结束编辑
我们的 YAML 管道没有任何特定的保留设置,因此我的理解是它默认为项目管道设置。然而,情况似乎并非如此。我们的运行可以追溯到 11 月,那是我们第一次创建管道的时候。我还可以手动检查哪些构建被保留,哪些没有被保留:
保留构建示例
未保留构建示例
但是,这些运行永远不会被删除。我对保留工作原理的理解是否不正确,TFS 不应该自动删除构建?或者我是否需要以某种方式更改我的 Azure DevOps 设置,以便在保留设置不再适用时自动删除构建?
还值得一提的是,我们确实有一个发布管道,尽管我们在创建它之前就已经遇到了这些问题,并且发布管道仅依赖于 master,但也没有任何功能运行被删除。
我确实发现 this SO 帖子似乎只适用于经典 UI 管道编辑器。有没有办法可以将它应用到我的 YAML 管道?
编辑 2
所以我确实在这方面取得了一些进展。我编写了一个脚本,可以删除保留设置未保留的所有运行:
$token = "PAT"
$url="https://instance/collection/project/_apis/build/builds/?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @Authorization = "Basic $token" -Method Get -ContentType application/json
ForEach( $build in $response.value )
if ((-not $build.keepForever) -and (-not $build.retainedByRelease))
$url="https://instance/collection/project/_apis/build/builds/$($build.id)?api-version=6.0"
$deleteResponse = Invoke-RestMethod -Uri $url -Headers @Authorization = "Basic $token" -Method Delete -ContentType application/json
Write-Host "Deleted" $url
这删除了所有运行就好了。但是,从我在文档中可以看出,这应该由 TFS 自动发生。是否有任何我可以过滤的事件日志源或一天中的任何特定时间来检查可能导致我实际删除运行的位置?
【问题讨论】:
您能否查看此文档并按照步骤操作,看看它是否对您有帮助:docs.microsoft.com/en-us/azure/devops/pipelines/policies/…? 所以我们确实浏览了该文档,但它似乎仍然不起作用。它给出了删除运行需要满足的四个条件,并且似乎大多数运行都满足所有这些条件。 1. 已经过了足够的时间,因为我们已经运行了 4 个月以上。 2. 它不是最近在已保存分支上运行的,因为大多数运行不在 master 上。 3.它们没有被任何人标记为保留。 4. 它们不会被发布管道保留,因为这在我们实施发布管道之前就已经发生了。 您可以尝试其他团队项目吗?另外,到服务器机器上查看事件查看器中的事件日志,看看是否有有用的信息。 不幸的是,我们没有任何其他项目可以使用管道进行测试。我还尝试查看事件日志,但看不到任何异常突出的内容。一个潜在的问题是,我们在最初创建管道后确实对保留策略进行了更改。这会导致这些问题吗? 我不认为这会导致这个问题。您可以尝试一个新项目,看看是否可以重现此问题。 【参考方案1】:您的问题似乎已在Azure DevOps 2020.0.1 Patch 2 Release 中得到解决。我建议详细查看this thread,以了解该解决方案是否适用于您的情况。
【讨论】:
以上是关于Azure Pipeline 运行不会自动删除的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Dacpac for Azure Pipeline CI/CD 中自动排除仅开发表?
Azure Pipeline Selenium 测试筛选器不起作用