允许用户配置 Build 失败的条件是很有用的功能,它是我们配置复杂 Build 流程的基础。TeamCity 为用户自定义 Build 失败条件提供了很好的支持。这些条件大体上可以分为两类,分别是:

基本的 Build 失败条件
高级的 Build 失败条件

基本的 Build 失败条件

打开 Build 的配置界面并选择 "Failure Conditions",红框中的内容即 TeamCity 提供的基本 Build 失败条件:

设置超时时间

此选项设置 Build 最大执行时间,超过这个时间就停止 Build,并显示 Build 失败,并提示 timeout 错误:

这个选项主要处理 Build 被挂起的问题,同时能保正高效的使用 agent。

Build 过程返回非 0 值

默认选中,当 Build 程序返回了非 0 值时就把 Build 标记为失败。

检查 Build 中单元测试的结果

这个选项默认也是选中。只要有一个失败的单元测试就把 Build 标记为失败。但是并不会由于单元测试的失败而终止 Build 过程。如果没有选中这个选项,即便有单元测试失败 Build 也会被标记为成功。

检查日志中的错误消息

当检测到 Build 日志中含有出错的消息时把 Build 标记为失败。使用这个选项带来的问题是很容易造成误报。因为一些复杂的 Build 很难完全消除日志中的错误消息。

检测到内存溢出或崩溃

这个选项仅用于 Java 项目, 如果检测到 JVM 崩溃或者是 Java out of memory 问题就把 Build 标记为失败。

高级的 Build 失败条件

检测 Build 指标的变化

TeamCity 内置了一些度量指标,比如代码覆盖率、重复的代码等等。这里有一个很长的列表,当有搞不定的需求时,不妨看看,说不定会有意外的收获:

每次的 Build 都会生成这些度量指标。对于这些度量的指标我们可以为之指定一个阈值,一旦超标就把 Build 标记为失败。TeamCity 在这里支持两种比较方式:分别是与一个固定值对比和与另外一个 Build 对比:

默认选项是与一个固定值,比较有用的是下一个选项:"value from another build",即和某次 Build 的结果比:

这幅图中的配置说明:与最后一次 Pinned 的 Build 相比,如果产物的 Size 增大超过了 1%,Build 就失败。运行一下,如果失败,消息是这样的:

检测日志中的文本

日志的内容往往是最丰富的,并且很容易控制。因此通过检测日志的内容控制 Build 成功与否就变得十分重要。
TeamCity 能够对 Build 日志中的每一行进行文本匹配,并根据匹配的结果决定 Build 是成功还是失败。需要注意的是,在匹配时会忽略掉行开始处的日期和前缀等信息,因为这些信息并不是真正的 Build 消息。TeamCity 支持使用纯文本进行匹配,也支持 Java 格式的正则表达式进行匹配。匹配的选项可以选择包含指定的文本或者是不包含指定的文本。下图演示了一个文本类型检测:

如果发现日志中出现了文本 'Failed to restore plugin "cordova-plugin-x-socialsharing" from config.xml' 就让 Build 失败,并且显示消息 "restore cordova-plugin-x-socialsharing failed." TeamCity 更为贴心的是提供了测试失败条件的功能。点击 "Test on finished build",并选择一个历史中的 Build 记录就可以了:

总结

如何判定 Build 成功/失败是相当重要的。 一般的 Build,使用 TeamCtiy 默认的配置基本就够用了。碰到复杂的场景,比如需要根据 Build 的结果来控制后续的执行流程时,就可以通过更高级的配置来完成任务。正是具备了这样的能力,我们才能够轻松的通过 TeamCity 进行持续集成。

TeamCity : Build 失败条件的更多相关文章

  1. Jenkins build失败条件

    在Jenkins 项目写了很多剧本.有时候,我发现脚本失败,但Jenkins运行成功. Jenkins无论是通过退出代码0比量build成功. 因此,newLISP在.您可以使用(exit)对于成功. ...

  2. TeamCity Build 步骤的执行策略

    TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤.1 失败状态 当满足下面条件时 build 步骤的状态被确定为失败: b ...

  3. TeamCity : Build 版本控制系统配置

    VCS (版本控制系统) 是用来跟踪项目源文件版本变化的系统.它还有其它的名字,比如 SCM(源代码管理).当前 TeamCity 内置支持的 VCS 类型有:Git, Subversion, Mer ...

  4. node c/c++扩展模块build失败.

    "深入浅出nodejs 朴灵" 例子 c/c++扩展模块 http://diveintonode.org/ 在作者的帮助下,build成功. 下面贴出的hello.cc和bindi ...

  5. No compiler is provided in this environment. --Maven build失败

    今天,maven build 失败了, 遇到下面的问题 经过查找,通过这个大佬的blog(  https://blog.csdn.net/lslk9898/article/details/738367 ...

  6. IDEA配置好maven后新建maven项目一直build失败的解决方法

    maven配置了aliyun中央仓库后,IDEA新建maven项目一直出现以下问题: 相信有遇到这个问题的小伙伴很蛋疼,明明maven配置没错,新建项目却一直build失败,为了这个问题我重装过几次I ...

  7. 【vue】解决npm run build失败问题

    问题说明: 首先,npm run build失败的原因大部分都是因为webpack的子库和webpack的版本号不对应的问题

  8. TeamCity : Build 基本配置

    前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...

  9. maven web项目build失败

    通过maven build发布web项目到tomcat时报如下异常: [INFO] ---------------------------------------------------------- ...

随机推荐

  1. 计时器60s

    计时器是经常用到的功能,下面以react nativ的例子简介来写一个倒计时60s的小demo. 代码如下: import React, { Component } from 'react'; imp ...

  2. ecshop商品页增加编辑器fckeditor

    最近在做ecshop的项目,需要在商品单页中增加一项FCKEditor的文本编辑器,但在ecshop的论坛和百度里搜出的方法,试了好几个都没有用,终于找到一个可以正确使用的,和大家分享. ecshop ...

  3. Linux下重启多个 tomcat 服务的脚本

    由于修改tomcat的配置文件或手动操作数据库数据后,tomcat的缓存和redis的缓存很严重,需要经常重启tomcat来释放缓存,经常就是手动重启. # .查找tomcat的进程ID ps -ef ...

  4. win7中python3.4下安装scrapy爬虫框架(亲测可用)

    貌似最新的scrapy已经支持python3,但是错误挺多的,以下为在win7中的安装步骤: 1.首先需要安装Scrapy的依赖包,包括parsel, w3lib, cryptography, pyO ...

  5. indexOf和lastIndexOf的使用

    indexOf()和 lastIndexOf()是返回位置index的两个方法:都是接收两个参数,其中,indexOf()方法从数组的开头(位 置 0)开始向后查找:lastIndexOf()方法则从 ...

  6. Java程序设计---io流读取文件内容并将其逆值输出到控制台

    import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileR ...

  7. 使用Scribefire在博客中插入语法高亮 II

    效果如下, 这是我们在Scribefire中添加的code按钮,单击此按钮,则会出现 在codeHere中直接输入代码就可以了. 查看html 可以看到,其中已经添加了<pre>标签. 下 ...

  8. Bootstrap进度条

    前面的话 在网页中,进度条的效果并不少见,比如一个评分系统,比如加载状态等,通过简单.灵活的进度条,可以为当前工作流程或动作提供实时反馈.本文将详细介绍Bootstrap进度条 基本样式 Bootst ...

  9. Android端恶意锁屏勒索应用分析

    一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...

  10. [图形学] 结束 [Unity Shader] 开始

    历时4个月,终于把<计算机图形学 with OpenGL>啃完了.如果边上班边看,即使一年应该都看不完. 虽然书里用到的GLUT库应该已经废弃,但并不影响用它去理解图形学的内容,我只把它当 ...