构建失败条件
TeamCity 允许更改将构建标记为 失败 的条件。 您可以在 Build Configuration Settings | Failure Conditions 中调整这些 build failure conditions
tip
如无法释放足够的磁盘空间以执行构建,则会导致构建失败,请参阅释放磁盘空间构建功能。
在 常见失败条件 块中,您可以具体指定 TeamCity 如何失败构建。
如果运行时间超过...分钟这个条件允许设定一个构建的执行超时时间,单位是分钟。 如果超过指定的时间,构建将自动被取消。 这个选项有助于处理挂起的构建,并保持 agent 效率。
如果配置的超时时间为0(默认值),则全局的 服务器范围的 超时时间将适用。 否则,此配置中指定的超时将覆盖在 Administration | Global Settings 中指定的全局值。
如果构建过程的退出代码不是零" 条件允许在构建过程未成功退出时失败构建。
如果至少有一个测试失败,if at least one test failed 条件将标记该构建失败。 如果禁用此选项,即使无法通过一些测试,构建也可以被标记为成功。 无论此选项如何,TeamCity 都会运行所有构建步骤。
如果启用了 支持测试重试:成功的测试运行将静音前一次的测试失败 选项,那么 TeamCity 将在同一构建中静音失败然后成功的测试。 这样的测试不会影响构建状态。 这对于配置中的不稳定测试非常方便,这些测试在应用于同一源修订版时会交替失败和成功。
如果 构建运行程序记录了错误消息 条件,则表示如果构建运行程序在构建过程中报告错误,将标记该构建为失败。
如果检测到 内存溢出问题或崩溃(仅Java) 的情况,如果检测到 JVM 的崩溃,或者 Java 出现内存溢出问题,将会将构建标记为失败。 如果可能,TeamCity 将会将崩溃日志和内存转储作为此类构建的工件进行上传。
您可以指示 TeamCity 标记一个构建失败,如果它的一些指标(例如,代码覆盖率或者构件大小)与另一个构建相比发生了改变。 例如,如果代码重复数高于上一个构建,您可以将构建标记为失败。
当构建日志中出现某些文本时,另一个构建失败条件会导致 TeamCity 将构建标记为失败。
要添加此类失败条件,请点击 添加构建失败条件 并从列表中选择:
tip
您可以随时临时或永久停用构建失败条件,即使它是从构建配置模板中继承的。
当您的构建使用诸如代码覆盖率,重复查找器,或检查工具这样的代码检查工具时,它会生成各种数值性度量。 对于这些指标,您可以设定一个阈值,一旦超过这个阈值,将会导致构建失败。
一般来说,有两种方式可以配置此构建失败条件:
一旦 构建度量 超过或低于指定的常数值(阈值)。
例如,如果 构建失败 因为它的 "构建持续时间(秒)" 与常数值相比,是 "超过" "300"。
在这种情况下,如果构建运行超过300秒,构建会失败。一种 构建度量 相比于某一特定构建的指定值有所改变。
举例来说,如果 "构建持续时间(秒)"相比于另一次构建的值"多"出至少"300"个此度量的默认单位,那么"如果构建失败"。相较于"上一次成功的构建"的值。
在这种情况下,如果一次构建比上次成功的构建多运行 300 秒,那么构建将会失败。 如果配置了 分支规格,则应用 下列逻辑。
以下构建的值可以用作比较构建指标的基础:
上次成功构建
最后置顶的构建
最后完成的构建
使用指定的构建号进行构建
具有指定标签的最后完成的构建。
默认情况下,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,其在构建日志中的存在/缺失是构建失败的一个指标,
当构建由于此条件失败时,将在 Build Results 页面上显示的失败信息。
在使用 Regex 时,您可以在 "失败消息" 字段中引用正则表达式或其部分(例如,使用 $N
引用特定的 捕获组 ,其中 N
是组号)。 这样可以将匹配的错误文本包含到构建结果中显示的失败消息中。
TeamCity 只会报告在构建日志中发现的第一个文本出现处的构建问题。 要报告每个找到的匹配项上的问题,而不是只在第一个匹配项上,禁用选项 仅在找到第一个匹配项时创建构建问题。 如果构建工具发送多个与搜索模式匹配的不同错误,并且您希望为每一个错误都获取一个问题报告,那么这可能会有所帮助。
在构建日志中遇到指定文本或超过使用 Fail build on metric change 条件指定的某个构建指标时,您可以立即停止构建。
感谢您的反馈!