TeamCity On-Premises 2025.03 Help

构建失败条件

TeamCity 允许更改将构建标记为 失败 的条件。 您可以在 构建配置设置 | 失败条件 中调整这些 构建失败条件

常见构建失败条件

常见失败条件 块中,您可以指定 TeamCity 将如何使构建失败。

设置自定义构建执行超时

如果运行时间超过...分钟这个条件允许设定一个构建的执行超时时间,单位是分钟。 如果超过指定的时间,构建将自动被取消。 这个选项有助于处理挂起的构建,并保持 agent 效率。

如果配置的超时时间为0(默认值),则全局的 服务器范围的 超时时间将适用。 否则,此配置中指定的超时时间将覆盖在 管理 | 全局设置 中指定的全局值。

如果退出代码不为零,则构建失败

如果 构建过程的退出代码不是零条件允许在构建过程未成功退出时失败构建。

测试失败时构建失败

如果至少有一个测试失败, if at least one test failed 条件将标记该构建失败。 如果禁用此选项,即使无法通过一些测试,构建也可以被标记为成功。 无论此选项如何,TeamCity 都会运行所有构建步骤。

如果启用了 支持测试重试:成功的测试运行会静默之前的测试失败 选项,TeamCity 会在测试失败后又在同一构建中成功时静默该测试。 这样的测试不会影响构建状态。 这对于配置中的不稳定测试非常方便,这些测试在应用于同一源修订版时会交替失败和成功。

在错误信息中构建失败

如果 构建运行程序记录了错误消息 条件,则表示如果构建运行程序在构建过程中报告错误,将标记该构建为失败。

在内存溢出崩溃时失败构建

如果检测到 内存溢出问题或崩溃(仅Java) 的情况,如果检测到 JVM 的崩溃,或者 Java 出现内存溢出问题,将会将构建标记为失败。 如果可能,TeamCity 将会将崩溃日志和内存转储作为此类构建的工件进行上传。

附加故障条件

您可以指示 TeamCity 标记一个构建失败,如果它的一些指标(例如,代码覆盖率或者构件大小)与另一个构建相比发生了改变。 例如,如果代码重复数高于上一个构建,您可以将构建标记为失败。

当构建日志中出现某些文本时,另一个构建失败条件会导致 TeamCity 将构建标记为失败。

要添加此类失败条件,请单击 添加构建失败条件 并从列表中选择:

指标变化时构建失败

当您的构建使用诸如代码覆盖率,重复查找器,或检查工具这样的代码检查工具时,它会生成各种数值性度量。 对于这些指标,您可以设定一个阈值,一旦超过这个阈值,将会导致构建失败。

一般来说,有两种方式可以配置此构建失败条件:

  • 一旦 构建度量 超过或低于指定的常数值(阈值)。
    例如,如果 构建失败 因为它的 "构建持续时间(秒)" 与常数值相比,是 "超过" "300"。
    在这种情况下,如果构建运行超过300秒,构建会失败。

  • 一种 构建度量 相比于某一特定构建的指定值有所改变。
    举例来说,如果 "构建持续时间(秒)"相比于另一次构建的值" "出至少" 300"个此度量的默认单位,那么" 如果构建失败"。相较于" 上一次成功的构建"的值。
    在这种情况下,如果一次构建比上次成功的构建多运行 300 秒,那么构建将会失败。 如果配置了 分支规格 ,则应用 下列逻辑

以下构建的值可以用作比较构建指标的基础:

  • 上次成功构建

  • 最后置顶的构建

  • 最后完成的构建

  • 使用指定的构建号进行构建

  • 具有指定标签的最后完成的构建。

默认情况下,TeamCity 提供了广泛的 构建指标

  • 构件大小(字节)- 构件的大小,不包括 内部构件.teamcity 目录下

  • 构建持续时间(秒)— 不包括检出源代码的时间在内的构建持续时间

  • 类的数量

  • 代码重复数量

  • 覆盖的类数量

  • 覆盖行数

  • 已覆盖方法的数量

  • 失败测试的数量

  • 被忽略的测试数量

  • 检查错误的数量

  • 巡查警告的数量

  • 代码行数

  • 方法的数量

  • 通过的测试数量

  • 测试数量

  • 区块覆盖率的百分比

  • 类覆盖率百分比

  • 行覆盖率百分比

  • 方法覆盖率的百分比

  • 语句覆盖率的百分比

  • 测试持续时间(秒)

  • 总工件大小(字节) — 包括 内部的 所有工件的大小

添加自定义构建度量

您可以添加您自己的构建度量。 有两种方法可以做到这一点:

  • 使用 Kotlin DSL 配置由构建报告的 自定义统计值上的构建失败条件

    以下是示例的 Kotlin DSL 代码:

    failureConditions { failOnMetricChange { param("metricKey", "myReportedCustomStatisticValue") .... } }
  • 修改 TeamCity 配置文件 <TeamCity Data Directory>/config/main-config.xml ,这需要系统管理员权限。 将以下部分添加到您的 main-config.xml 中,位于 服务器 节点下:

    <build-metrics> <statisticValue key="myMetric" description="build metric for number of files"/> </build-metrics>

如果您的构建发布了 myMetric 值,您可以将其用作构建失败的判断标准。

在构建日志中的特定文本上构建失败

TeamCity 可以检查构建日志中的所有行,以查找表明构建失败的某些特定文本出现。 在匹配行时,每条日志消息前的时间和块名称前缀将被忽视。

要配置这个构建失败条件,请指定:

  • 一个字符串或者一个 Java Regular Expression ,其在构建日志中的存在/缺失是构建失败的一个指标,

  • 当由于此条件导致构建失败时,在 构建结果 页面上显示的失败消息。

在使用 Regex 时,您可以在 "失败消息" 字段中引用正则表达式或其部分(例如,使用 $N 引用特定的 捕获组 ,其中 N 是组号)。 这样可以将匹配的错误文本包含到构建结果中显示的失败消息中。

TeamCity 只会报告在构建日志中发现的第一个文本出现处的构建问题。 要报告每个找到的匹配项上的问题,而不是只在第一个匹配项上,禁用选项 仅在找到第一个匹配项时创建构建问题。 如果构建工具发送多个与搜索模式匹配的不同错误,并且您希望为每一个错误都获取一个问题报告,那么这可能会有所帮助。

立即停止构建

在构建日志中遇到指定文本或超过使用 Fail build on metric change 条件指定的某个构建指标时,您可以立即停止构建。

最后修改日期: 2025年 3月 21日