上周,我们在ADS 2019.1服务器上从TFVC迁移到Git。
在我们的验证过程中,我们有一个积极的保留政策。它被设置为保存2天,10个良好的构建使用分支过滤器*和所有复选框清除广告写为:+refs/head/*
我们看到的是,自从我们迁移之后,没有一个Git构建被删除。从过去的8天,我们现在有数百个构建与他们的多GB下降。
是否使用正确的分支过滤器?这是ADS输入的默认设置,我们确实希望通过此策略删除所有分支的所有构建。
我也尝试了**,但是这并没有改变,在我看到的构建结果页面中,所有的构建都是从一个临时分支构建的,这个分支有一个4位数的数字,这可能是拉请求号。
如何确保按照保留策略清理构建?
生成定义不链接到发布管道。这些构建是由开发人员创建的拉请求触发的。拉请求被标记为已完成。
另一个构建定义(一个带有CI触发器的构建定义,在每次提交后运行)似乎仍然基于定义的保留策略删除构建。
我们的TFS保留策略设置的图片。主生成被清理,拉请求生成不被清除。

上周手工清理后,TFS中最古老的构建列表,这些构建现在是4-5天的,超过了保留策略的2天限制。此外,您可以看到,没有保留锁在他们后面。

已删除版本的概述。您可以在其中看到已被保留策略删除的“主”构建。

显示主生成在2天保留策略设置后被删除。

发布于 2020-02-20 13:16:40
你也可以尝试:
解释:如果您在构建代理的源文件夹(名为s)中打开一个终端并运行git branch --all,那么您将看到很多分支,比如对于每个拉请求(例如,1234)。此外,如果您将您的分支规范*与左边显示的路径(+refs/heads/*)进行比较,您会发现它实际上并不匹配所有分支…。
发布于 2020-01-30 06:35:58
Azure DevOps Server 2019保留策略不再起作用
同意马特的观点。如果生成了发布管道的工件,则生成管道将使用发布保留而不是生成保留:

所以,我们需要检查释放保留,Project Settings->Release retention
您可以从文档构建和发布保留策略-Q&A中查看此信息。
此外,如果要无限期保留建设,保留政策将不再适用。
希望这能有所帮助。
发布于 2021-08-05 19:06:47
保留策略UI极具误导性,因为*并不是真正的* --它是refs/heads/*。当UI (或者API)保存“分支规范”时,它会隐式地将+refs/heads/添加到您输入的任何内容中。main变成+refs/heads/main,mybranch/*变成+refs/heads/mybranch/*。
通过查看Build.定义中的RetentionPolicy列中的JSON,您可以看到这一点。
SELECT [DefinitionName],[RetentionPolicy]
FROM [Tfs_DefaultCollection].[Build].[tbl_Definition]默认的构建保留策略将永远与拉请求分支相匹配,它存储为:
[
{
"branches": [
"+refs/heads/*"
],
"artifacts": [],
"artifactTypesToDelete": [
"FilePath",
"SymbolStore"
],
"daysToKeep": 10,
"minimumToKeep": 2,
"deleteBuildRecord": true,
"deleteTestResults": true
}
]TFS的构建保持策略作业将每个生成定义调用一次存储过程[Build].[prc_GetBuildsForRetention],以获得要清理的潜在构建的列表。版本保留的版本已经排除在查询结果之外。
您可以自己使用这样的查询(更新definitionId和maxFinishTime,可能还有dataspaceId和partitionId):
EXEC [Tfs_DefaultCollection].[Build].[prc_GetBuildsForRetention]
@partitionId = 1,
@dataspaceId = 22,
@definitionId = 164,
@minFinishTime = '0001-01-01',
@maxFinishTime = '2021-08-03',
@maxBuilds = 1000您将看到类似以下结果的结果:

若要在保留策略中包含拉请求,请在分支规范框中添加一个新条目并键入refs/pull/*。它将作为+refs/pull/*持久化到JSON中。您可能希望设置“日”以保持较低(我使用1),并设置“最低保持”(我使用0)。我们的PR构建将在几个小时内到期,因此保持它们的持续时间并没有什么好处。
作为以后的参考,构建保留策略作业代码位于<installFolder>\Application Tier\TFSJobAgent\Plugins\Microsoft.TeamFoundation.Build2.Server.Extensions.dll中的Microsoft.TeamFoundation.Build2.Server.Extensions.BuildRetentionPolicyJob类中。
https://stackoverflow.com/questions/59970547
复制相似问题