TeamCity : 配置 Build 过程
Build 过程往往是比较复杂的,因此 TeamCtiy 通过 build 步骤的方式让您可以实现不同的应用场景。您可以在每个 build 步骤中只做一件事情,然后把一系列的 build 步骤组织起来按顺序执行来完成 build 过程。先看一下 build 步骤配置的概览:

每一个 Build 步骤都会对应一个 build runner 在背后完成真正的工作。我们要做的就是构思好 build 的过程,然后通过一系列的 build 步骤去实现它。在 build 的过程中,这些 build 步骤会被一个接一个的顺序执行。当然,您可以通过 TeamCity 提供的 UI 方便的排列您的 build 步骤的顺序。
Build 步骤的执行策略
TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤。当满足下面条件时 build 步骤的状态被确定为失败:build 步骤的执行过程返回了非零的退出代码 并且该 build 的失败条件配置为起作用。其它情况则认为 build 步骤的状态为成功。
我们可以在 build 步骤中指定不同的执行策略来告诉 TeamCity 究竟要不要执行下一个 build 步骤:

Only if build status is successful
只有在整个 build 处于成功的状态时才执行该步骤。
在开始运行该 build 步骤前,build agent 会向 TeamCity Server 请求整个 build 的状态,如果 build 的状态已经是失败,则跳过该步骤的执行。
If all previous steps finished successfully
前面所有 build 步骤必须都是成功的。
这种类型不会向 TeamCity Server 发送请求,只分析之前的 build 步骤有没有失败的。
Even if some of previous steps failed
即便前面的 build 步骤有失败的也会执行。
不管之前的 build 步骤是否失败,也不管整个 build 的状态是否已失败,都执行该 build 步骤。
Always, even if build stop command was issued
总是执行,即便是收到了停止 build 的命令也要执行该 build 步骤。
即便是用户在前面的 build 步骤中取消了整个 build 的执行,这个 build 步骤也依然会被执行。但是在这个 build 步骤执行的过程中,如果您取消 build,就可以终止它的执行。
接下来我们会演示如何创建一个命令行类型的 build 步骤。
手动添加 Build 步骤

TeamCity 提供了很智能的 “Auto-detect build steps” 功能,主要是搜索 VCS 目录下的可识别的编译配置文件然后自动生成 build 步骤。这种方式比较简单,我们主要介绍能支持复杂配置的手动配置 build 步骤的方式,所以请选择 “Add build step”。
Runner type
TeamCity 内置支持几乎所有的 build 类型:

我们可以选择自己的项目的 build 类型,当然我们还可以选择更通用的类型:Command Line。它可以执行我们写的脚本,如 windows 中的 bat 脚本和 linux 中的 shell 脚本。哈哈,有了执行脚本的能力还有什么事情做不了呢!
下面我们就来介绍如何创建一个 Command Line 类型的 build 步骤。请选择 Command Line 类型的 Runner type。
Step name

您可以为每一个 build 步骤设置名称。注意,这不是一个必选项,您可以选择什么也不填。
Execute step
请选择合适的执行策略,我们已经在前面详细的解释过了。
Working directory

对于要执行的命令来言,工作目录是非常重要的。如果设置不正确就会发生找不到文件的错误,所以一定要认真设置。您可以手动输入相对于 checkout 目录的路径,也可以通过右侧的工具进行选择。如果您希望工作目录就是 checkout 的目录,那么就不需要进行设置,留空就可以了。
Custom script

当选择 Custom script 类型时,我们可以直接在输入框中写脚本命令。这么做的好处是不用管理脚本文件了,因为 TeamCity 会把您写的脚本命令打包成脚本文件在 build 时执行。
Executable with parameters
如果是一个比较复杂的脚本,我们还是希望把它写成一个单独的脚本文件,这样更好维护管理。此时若是想要向单独的脚本文件传递参数又该怎么办呢?

选择 Executable with parameters 类型,可以执行脚本文件或者是可执行的二进制文件,并且可以传递命令行参数。上图中我们就把 checkout 目录传递给了 test.bat 脚本文件。
创建多个步骤
为了完成复杂的编译过程,往往需要多个步骤按顺序的执行。TeamCity 也提供了让用户可以重新排序 build 步骤的功能。

上图为添加了两个 build 步骤后点击 “Reorder build steps” 按钮的场景。此时build步骤会被列出,您可以用鼠标拖拽进行重新排序。完成后点击 “Apply” 按钮就可以了。
总结
本文并没有挨个的介绍所有 TeamCity 支持的 build 类型,而是介绍了最通用的脚本命令执行方式。因为笔者认为只有脚本方式才能够处理更为复杂的编译场景,属于必须要掌握的最具实用价值的方式!
TeamCity : 配置 Build 过程的更多相关文章
- 持续集成工具TeamCity配置使用
持续集成CI(Continuous Integration)主要包括自动化的编译.发布和测试集成,对于我们信息系统项目开发非常有用.一般开发人员机器上会搭建自己的开发环境,整个项目在服务器上会搭建测试 ...
- TeamCity : 配置第一个工程
前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译. 创建 .net core 项目 我们在本地创建一个简单的 .ne ...
- Android Studio 的 build 过程
如图, 编译器将源代码(包括 Application Module 及其所依赖的所有 Library 源代码)转换成 DEX(Dalvik Executable)文件(其中包括运行在 Android ...
- (转)Maven的pom.xml文件结构之Build配置build
在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>. 1. 在M ...
- @vue/cli3+配置build命令构建测试包&正式包
上一篇博客介绍了vue-cli2.x配置build命令构建测试包和正式包,但现在前端开发vue项目大多数使用新版@vue/cli脚手架搭建vue项目(vue create project-name) ...
- Redis主从配置详细过程
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...
- STM32F0xx_PWR低功耗配置详细过程
Ⅰ.概述 今天总结PWR部分知识,请看“STM32F0x128参考手册V8”第六章.提供的软件工程是关于电源管理中的停机模式,工程比较常见,但也是比较简单的一个实例,根据项目的不同还需要适当修改或者添 ...
- STM32F0xx_EXIT中断配置详细过程
Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...
- STM32F0xx_看门狗(独立+窗口)配置详细过程
Ⅰ.概述 对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0看门狗的功能,F0的看门狗有两种:独立和窗口看门狗. 今天提供两种看门狗的软件工程实例,供大家下载. 两种看 ...
随机推荐
- App你真的需要么
随着智能手机.移动路联网的普及,APP火的一塌糊涂,APP应用可谓五花八门,街上经常看到各种推广:扫码安装送东西,送优惠券.仿佛一夜之间一个企业没有自己的APP就跟不上时代了. 有时我在想:APP,你 ...
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...
- “RazorEngine.Templating.TemplateParsingException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理 其他信息: Expected model identifier.
这个问题是由于在cshtml中 引用了model这个单词 它可能和Model在解析时有冲突. 解决方法:把model换成别的单词就可以了.
- 对Maven、gradle、svn、spring 3.0 fragment、git的想法
1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...
- iOS 方法修饰符
一.NS_DESIGNATED_INITIALIZER 用来修饰init方法,被修饰的方法称为designated initializer:没有被这个修饰的init方法称为convenience i ...
- 第14章 Linux启动管理(1)_系统运行级别
1. CentOS 6.x 启动管理 (1)系统运行级别 ①运行级别 运行级别 含义 0 关机 1 单用户模式,可以想象为Windows的安全模式,主要用于系统修复.(但不是Linux的安全模式) 2 ...
- mono for android学习过程系列教程(1)
直接进入主题,关于mono for android的学习,首先配置好环境,如何配置环境,度娘谷歌一大堆,记得使用破解版. 我自己是百度“黑马四期”传智播客的视频,里面有破解版开发环境的软件. 今天直接 ...
- ASP.NET 5 Beta 8 发布
ASP.NET 5 的路线图(详见 ASP.NET 5 Schedule and Roadmap : https://github.com/aspnet/home/wiki/roadmap ):Bet ...
- JavaScript的妙与乐(一)之 函数优化
JavaScript的妙与乐系列文章主要是展示一些JavaScript上面比较好玩一点的特性和一些有用的技巧,里面很多内容都是我曾经在项目中使用过的一些内容(当然,未必所有技巧的使用频率都很高^_^) ...
- Hadoop2.2.0安装过程记录
1 安装环境1.1 客户端1.2 服务端1.3 安装准备 2 操作系统安装2.1.1 BIOS打开虚拟化支持2.1.2 关闭防火墙2.1.3 安装 ...