TeamCity On-Premises 2024.03 Help

TeamCity 数据清理

TeamCity 清理功能允许自动删除旧的和不再必要的构建数据。

服务器清理配置可在 Administration | Server Administration | Clean-up Settings 中找到。 它允许设定清理计划,并展示一般的清理信息。

清理规则,与特定项目相关,可在 项目设置 | 清理规则 中配置。 这些规则定义了需要清理的数据和需要保留的数据。 他们可以被分配给一个项目或构建配置。
建议配置清理规则,以删除过时的构建和其工件,清除数据库和缓存中不必要的数据,以释放磁盘空间,从 TeamCity 用户界面中移除构建,以减轻 TeamCity 的工作负担。

清理将删除存储在 <TeamCity 数据目录>/system 下的数据和数据库中的数据。 另外,在清理过程中,服务器会执行各种维护任务(例如,重置 VCS 全部补丁缓存)。

服务器清理设置

服务器清理设置Administration | Server Administration | Clean-up Settings中配置。

构建历史清理作为后台进程运行,这意味着没有服务器维护停机时间。

根据需要清理的数据量,这个过程可能需要很长时间,在此期间,服务器的性能可能会下降。 因此,建议您在非高峰时段安排清理工作。 默认情况下,TeamCity 将于凌晨3:00开始进行日常清理。 您可以更改每日开始时间,或配置自定义 cron 表达式 来按照必要的规律启动清理。
也可能 手动启动清理

您也可以指定清理过程的时间限制。 如果在指定的时间范围内未能清除所有数据,剩余的数据将在下次清理过程中被移除。

启用清理功能后,TeamCity 将默认保留服务器 审计记录 一年(365 天)。

手动清理启动

服务器清理设置的 上一次清理 部分使您能够:

  • 查看上一次服务器清理日期和持续时间的信息,帮助您决定是否在特定时刻启动清理进程。

  • 手动运行清理,使用立即开始清理按钮。

在清理过程中,TeamCity 报告了进度。 如果需要,您可以停止清理过程,剩余的数据将在下次清理时被移除。

清理规则

清理规则定义了如何清理当前项目、其子项目和构建配置中的数据。

清理规则 页面位于 项目设置 中,您可以在该页面查看和管理当前项目及其构建配置的清理规则。 如果此项目有子项目,您也可以选择显示它们的规则。

项目清理规则有两种类型:

  • 基础规则 定义了何时以及删除哪些数据。 他们易于配置,并覆盖了大多数常见的清理情况。 每个项目和构建配置都分配了一个基础规则。 阅读如何配置基础规则

  • 保持规则定义了在清理过程中需要保留的数据。 他们非常灵活,但比基础规则需要更多的配置工作。 多个保留规则可以分配给一个项目或构建配置。 阅读如何配置 保持规则

保留规则更为精细,可以涵盖如保留所有带有某个标签(例如, 发布 )或在某个分支的构建的情况。 尽管使用 保持 规则需要更好地理解不同类型的构建和它们的数据,但它也提供了更大的灵活性。 您可以设定一个基础规则来配置常见的清理方案,并添加多个保留规则来调整需要保留的确切数据,或仅依赖于保留规则。

在清理过程中,TeamCity 会分析并合并基础和保留规则,以确定需要保留和删除的数据范围。

分配给项目的清理规则将被其所有子项目和构建配置继承,但可以通过它们自己的规则来覆盖。 以下图表显示了规则如何在示例项目 A 中传播:

清理规则的继承

您始终可以将覆盖的规则重置为其在父项目中的原始定义,该父项目在层次结构中最为接近。

基础规则

每个项目或构建配置都被分配了一条基本规则。 有了基本规则,您可以定义要保留的成功构建的数量,和/或保留构建历史的时间周期。

以下清理级别在基本规则中可用:

  • Artifacts:包括构建日志在内的所有数据都将被保存;隐藏的工件 也将被保存。

  • 历史记录:除了在 统计图表中可见的构建统计值外,所有构建数据都被删除。

  • 所有内容:TeamCity 中不再保留任何构建数据。

每个级别都包含了其上面所列出的内容。

默认情况下,所有内容都将永久保留。 当您选择自定义设置时,您可以为上述每个级别指定:

  • 天数
    早于指定天数的构建将以指定的级别进行清理。 起始点是最后一次成功构建的日期,而不是当前日期。 一天等于24小时周期,而非日历中的一天。

  • 成功构建的数量
    只有在上次匹配成功的构建之后的构建才会用指定的级别进行清理(保存成功的构建之间的所有失败的构建都会被保留)。

当指定了两个条件时,只有根据所有适用的规则必须清理并且没有被保留规则保留的构建才会被实际删除:TeamCity会找到根据每条规则应该保留的最旧的构建,然后清理所有比这两个找到的最旧的构建还要旧的。
请注意,如果为层级指定了 成功构建的数量 限制,但历史记录中没有成功的构建,TeamCity将不会清理该层级上的任何数据。

对于 Artifacts 级别,您还可以指定工件名称的模式:匹配指定模式的工件将被包含或排除在清理之外。 遵循 Ant-like pattern 的换行分隔规则。 例如:

  • 为了清理名称中包含 文件 部分的工件,请使用以下语法: +:**/file*.*

  • 若要从清理中排除名称中包含 文件*.jar 工件,请使用 -:**/file*.jar

依赖构建的基本规则行为

在基础规则的 Dependencies 块中,您还可以为依赖性构建配置中的构建工件选择清理行为选项。 TeamCity 永远保留被其他构建用作 snapshot dependencies 的构建。 这些构建不会被清理过程从构建历史中删除,直到依赖的构建被删除。 这些构建的工件可以根据下面的选项进行删除。
TeamCity 可以选择保留在其他构建中通过 工件依赖 使用的构建及其工件。 以下选项可用:

  • 使用默认 使用在默认清理规则中配置的选项。

  • 防止清理用于保护那些作为当前构建配置的构建(及其工件)的工件或快照依赖源的构建。

  • 不要阻止清理(默认)使依赖构建的清理相关处理忽视它们被当前构建配置的构建所使用的事实。 依赖性构建和工件将被清理。 请注意,即使选择了此选项,清理也不会删除构建历史和快照依赖构建的日志。

例如,依赖构建配置 A 有一个对 B 的工件依赖。 如果为 A 使用了 防止清理 选项,则在清理构建过程中,不会处理为 A 的构建提供构建成果的 B 的构建,因此,构建及其构建成果将会被保留。

带有功能分支的构建配置的基本规则行为

如果某个构建配置来自几个 分支,在应用基础清理规则之前,TeamCity 将此配置的构建历史分为几组。 TeamCity 为每个 活动分支 创建一个组,并为所有来自非活动分支的构建创建一个组。 然后将基础清理规则独立应用于每个组。

个人构建的基本规则行为

基本清理规则分别对非个人构建和个人构建进行应用。 也就是说,如果您设定了保存3次成功构建的规则,那么将会保存3次非个人构建和3次个人构建(按上述描述中的每个分支组)。

构建配置模板的基础规则

在 TeamCity 2019.2 之前,可以将基本规则分配给构建配置模板。 为了兼容性,所有现有的用于构建配置模板的清理规则将保留,并可以在 清理规则 页面上访问。

保持规则

保留规则定义了在清理过程中需要保留的特定数据。 多个保留规则可以分配给一个项目或构建配置。

在每条保持规则中,您可以配置以下设置:

  • 构建用于保存的数据:历史记录,工件,日志,统计数据,或所有内容。

  • 是否要在依赖关系中 保留工件。 这个选项控制是否同时清理依赖构建配置的构建。 启用此选项后,如果某个构建被此规则保留,那么它的依赖构建的所有工件也将被保留。 此选项的工作方式与基础规则的 Dependencies 选项类似。

  • 构建范围:规则将影响哪个时间间隔或最后构建的数量。

  • 如有需要,您可以按照保留构建的 状态标签分支(支持具有模式匹配的 分支过滤器)进行 过滤。 您也可以仅对个人或非个人构建应用规则。

  • 选择是否需要将限制单独应用于每个匹配的分支,或者将其作为一个整体应用于所选分支中的所有构建。
    此条件每个受影响的构建配置应用一次。 如果过滤器中未指定任何分支,则其应用如下:应用于构建配置中的每个分支,或者作为一组应用于所有构建配置分支。
    例如:如果您选择保留最后10次构建的统计信息,并为此规则选择两个分支,则您可以选择"全部所选"以保留两个所选分支中的最后10次构建,或者选择"各选定的分支"以保留最后20次构建——每个分支10次。

TeamCity 按照以下顺序处理保持规则:

  1. 过滤器用于筛选受影响的项目或构建配置的构建。

  2. 确定规则是否适用于所有选定的分支,或者是针对每个选定分支中的构建(请参见 描述)。

  3. 仅在指定的 范围 内保留构建。

  4. 确定要保留哪些类型的 build data

  5. 确定是否必须保留依赖构建的工件。

关于 keep 规则行为的说明:

  • 如果输入了多个标签,该规则将适用于所有标记有这些标签中的任何一个的构建。

  • 在所有 "Days since" 范围选项中,TeamCity 不会考虑某个日期的小数小时,并且仅对在选定日期(从午夜到晚上 11:59)及其之后到受影响范围开始日(选定日期减去配置的天数限制)的时间间隔开始的构建应用规则。

已删除构建配置清理

当项目或构建配置被删除时,相应的构建数据会在清理过程中被移除,但前提是自删除以来已过去 5 天(432,000 秒)。

要更改超时时间,请将 teamcity.deletedEntities.cleanupTimeout 内部属性 设置为所需的秒数,以保护数据免于被删除。

最后修改日期: 16日 7月 2024年