首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure DevOps Server 2019保留策略不再起作用

Azure DevOps Server 2019保留策略不再起作用
EN

Stack Overflow用户
提问于 2020-01-29 15:39:07
回答 3查看 2.9K关注 0票数 2

上周,我们在ADS 2019.1服务器上从TFVC迁移到Git。

在我们的验证过程中,我们有一个积极的保留政策。它被设置为保存2天,10个良好的构建使用分支过滤器*和所有复选框清除广告写为:+refs/head/*

我们看到的是,自从我们迁移之后,没有一个Git构建被删除。从过去的8天,我们现在有数百个构建与他们的多GB下降。

是否使用正确的分支过滤器?这是ADS输入的默认设置,我们确实希望通过此策略删除所有分支的所有构建。

我也尝试了**,但是这并没有改变,在我看到的构建结果页面中,所有的构建都是从一个临时分支构建的,这个分支有一个4位数的数字,这可能是拉请求号。

如何确保按照保留策略清理构建?

生成定义不链接到发布管道。这些构建是由开发人员创建的拉请求触发的。拉请求被标记为已完成。

另一个构建定义(一个带有CI触发器的构建定义,在每次提交后运行)似乎仍然基于定义的保留策略删除构建。

我们的TFS保留策略设置的图片。主生成被清理,拉请求生成不被清除。

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-20 13:16:40

你也可以尝试:

  1. 标签“保留”
  2. 选择一个策略(在您的例子中:“保存2天,…")
  3. 在“分支筛选器”下,添加另一个
  4. 类型:“包括”,分支规范:“参考资料/拉/*”

解释:如果您在构建代理的源文件夹(名为s)中打开一个终端并运行git branch --all,那么您将看到很多分支,比如对于每个拉请求(例如,1234)。此外,如果您将您的分支规范*与左边显示的路径(+refs/heads/*)进行比较,您会发现它实际上并不匹配所有分支…。

票数 2
EN

Stack Overflow用户

发布于 2020-01-30 06:35:58

Azure DevOps Server 2019保留策略不再起作用

同意马特的观点。如果生成了发布管道的工件,则生成管道将使用发布保留而不是生成保留:

所以,我们需要检查释放保留,Project Settings->Release retention

您可以从文档构建和发布保留策略-Q&A中查看此信息。

此外,如果要无限期保留建设,保留政策将不再适用。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-08-05 19:06:47

保留策略UI极具误导性,因为*并不是真正的* --它是refs/heads/*。当UI (或者API)保存“分支规范”时,它会隐式地将+refs/heads/添加到您输入的任何内容中。main变成+refs/heads/mainmybranch/*变成+refs/heads/mybranch/*

通过查看Build.定义中的RetentionPolicy列中的JSON,您可以看到这一点。

代码语言:javascript
复制
SELECT [DefinitionName],[RetentionPolicy]
FROM [Tfs_DefaultCollection].[Build].[tbl_Definition]

默认的构建保留策略将永远与拉请求分支相匹配,它存储为:

代码语言:javascript
复制
[
  {
    "branches": [
      "+refs/heads/*"
    ],
    "artifacts": [],
    "artifactTypesToDelete": [
      "FilePath",
      "SymbolStore"
    ],
    "daysToKeep": 10,
    "minimumToKeep": 2,
    "deleteBuildRecord": true,
    "deleteTestResults": true
  }
]

TFS的构建保持策略作业将每个生成定义调用一次存储过程[Build].[prc_GetBuildsForRetention],以获得要清理的潜在构建的列表。版本保留的版本已经排除在查询结果之外。

您可以自己使用这样的查询(更新definitionId和maxFinishTime,可能还有dataspaceId和partitionId):

代码语言:javascript
复制
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类中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59970547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档