TeamCity : Build 失败条件
允许用户配置 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 失败条件的更多相关文章
- Jenkins build失败条件
在Jenkins 项目写了很多剧本.有时候,我发现脚本失败,但Jenkins运行成功. Jenkins无论是通过退出代码0比量build成功. 因此,newLISP在.您可以使用(exit)对于成功. ...
- TeamCity Build 步骤的执行策略
TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤.1 失败状态 当满足下面条件时 build 步骤的状态被确定为失败: b ...
- TeamCity : Build 版本控制系统配置
VCS (版本控制系统) 是用来跟踪项目源文件版本变化的系统.它还有其它的名字,比如 SCM(源代码管理).当前 TeamCity 内置支持的 VCS 类型有:Git, Subversion, Mer ...
- node c/c++扩展模块build失败.
"深入浅出nodejs 朴灵" 例子 c/c++扩展模块 http://diveintonode.org/ 在作者的帮助下,build成功. 下面贴出的hello.cc和bindi ...
- No compiler is provided in this environment. --Maven build失败
今天,maven build 失败了, 遇到下面的问题 经过查找,通过这个大佬的blog( https://blog.csdn.net/lslk9898/article/details/738367 ...
- IDEA配置好maven后新建maven项目一直build失败的解决方法
maven配置了aliyun中央仓库后,IDEA新建maven项目一直出现以下问题: 相信有遇到这个问题的小伙伴很蛋疼,明明maven配置没错,新建项目却一直build失败,为了这个问题我重装过几次I ...
- 【vue】解决npm run build失败问题
问题说明: 首先,npm run build失败的原因大部分都是因为webpack的子库和webpack的版本号不对应的问题
- TeamCity : Build 基本配置
前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...
- maven web项目build失败
通过maven build发布web项目到tomcat时报如下异常: [INFO] ---------------------------------------------------------- ...
随机推荐
- 在C#中初遇Socket - 2
后期项目实战:多人在线聊天室 源码位置:https://git.oschina.net/z13qu/BlogProjects 前言 第一篇主要对Socket有个基本认识,实现初始化,发送.接受消息:本 ...
- Css3视频教程下载
本套教程主要讲解了大量的CSS3新功能,包括: 边框.圆角.背景.渐变.阴影.文本特效.2D/3D转换.过渡.动画.伪类元素的使用等,同时伴随了大量的实例制作,比如CSS3实现红心的制作,火焰字.多彩 ...
- HTML行内元素、块状元素、行内块状元素的区别
HTML可以将元素分类方式分为行内元素.块状元素和行内块状元素三种.首先需要说明的是,这三者是可以互相转换的,使用display属性能够将三者任意转换: (1)display:inline;转换为行内 ...
- NoSQL数据库:Redis适用场景及产品定位
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...
- 1.如何安装maven
[确认]在CMD命令行中输入echo %JAVA_HOME%,查看JAVA_HOME是否配置.在CMD命令行中输入java -v,查看jdk是否正确安装. [下载]从http://maven.ap ...
- 怎么利用composer创建laravel项目
前提:已经安装了composer的电脑 创建laravel项目: 第一步: 找到你要创建文件的地方 然后打开doc,输入:composer create_project laravel/laravel ...
- html的基本标记符号
文本标记:<h1><h2><h3><h4><h5><h6>: 段落标记:<p>: 空格: : 换行: ...
- Java WebService学习资料
最近用到了WebService,以前没用过,想要好好学习一下.感觉网上资料比较少,而且很杂,找了很久,觉得下面的两个文章解释的比较清楚,分享一下: WebService概念.原理:http://mp. ...
- 如何将md文件转换成带目录的html文件
配置环境node 去官网下一个node安装包,下一步下一步: 由于现在的node都自带npm,直接 npm install i5ting_toc 这样安装好了i5ting_toc这个包, 进入你实现准 ...
- 使用Webpack加速Vue.js应用的4种方式
Webpack是开发Vue.js单页应用程序的重要工具. 通过管理复杂的构建步骤,你可以更轻松地开发工作流程,并优化应用程序的大小和性能. 其中介绍下面四种方式: 单个文件组件 优化Vue构建 浏览器 ...