构建失败条件
TeamCity 允许更改将构建标记为 失败 的条件。 您可以在 Build Configuration Settings | Failure Conditions 中调整这些 build failure conditions
常见构建失败条件
在 常见失败条件 块中,您可以具体指定 TeamCity 如何失败构建。
设置自定义构建执行超时
如果运行时间超过...分钟这个条件允许设定一个构建的执行超时时间,单位是分钟。 如果超过指定的时间,构建将自动被取消。 这个选项有助于处理挂起的构建,并保持 agent 效率。
如果配置的超时时间为0(默认值),则全局的 服务器范围的 超时时间将适用。 否则,此配置中指定的超时将覆盖在 Administration | Global Settings 中指定的全局值。
如果退出代码不为零,则构建失败
如果构建过程的退出代码不是零" 条件允许在构建过程未成功退出时失败构建。
测试失败时构建失败
如果至少有一个测试失败,if at least one test failed 条件将标记该构建失败。 如果禁用此选项,即使无法通过一些测试,构建也可以被标记为成功。 无论此选项如何,TeamCity 都会运行所有构建步骤。
如果启用了 支持测试重试:成功的测试运行将静音前一次的测试失败 选项,那么 TeamCity 将在同一构建中静音失败然后成功的测试。 这样的测试不会影响构建状态。 这对于配置中的不稳定测试非常方便,这些测试在应用于同一源修订版时会交替失败和成功。
在错误信息中构建失败
如果 构建运行程序记录了错误消息 条件,则表示如果构建运行程序在构建过程中报告错误,将标记该构建为失败。
在内存溢出崩溃时失败构建
如果检测到 内存溢出问题或崩溃(仅Java) 的情况,如果检测到 JVM 的崩溃,或者 Java 出现内存溢出问题,将会将构建标记为失败。 如果可能,TeamCity 将会将崩溃日志和内存转储作为此类构建的工件进行上传。
附加故障条件
您可以指示 TeamCity 标记一个构建失败,如果它的一些指标(例如,代码覆盖率或者构件大小)与另一个构建相比发生了改变。 例如,如果代码重复数高于上一个构建,您可以将构建标记为失败。
当构建日志中出现某些文本时,另一个构建失败条件会导致 TeamCity 将构建标记为失败。
要添加此类失败条件,请点击 添加构建失败条件 并从列表中选择:
指标变化时构建失败
当您的构建使用诸如代码覆盖率,重复查找器,或检查工具这样的代码检查工具时,它会生成各种数值性度量。 对于这些指标,您可以设定一个阈值,一旦超过这个阈值,将会导致构建失败。
一般来说,有两种方式可以配置此构建失败条件:
一旦 构建度量 超过或低于指定的常数值(阈值)。
例如,如果 构建失败 因为它的 "构建持续时间(秒)" 与常数值相比,是 "超过" "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 条件指定的某个构建指标时,您可以立即停止构建。