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的看门狗有两种:独立和窗口看门狗. 今天提供两种看门狗的软件工程实例,供大家下载. 两种看 ...
随机推荐
- 怎么让网站在本地支持SSL?
打开vs,点击项目,查看属性,打开ssl 如果有什么危险提示,就允许 右击项目,选择属性 运行项目
- HTML5 语义元素(一)页面结构
本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>.<aside>.<figure>.<figcaption>.< ...
- DDD 领域驱动设计-商品建模之路
最近在做电商业务中,有关商品业务改版的一些东西,后端的架构设计采用现在很流行的微服务,有关微服务的简单概念: 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独 ...
- Angular源码分析之$compile
@(Angular) $compile,在Angular中即"编译"服务,它涉及到Angular应用的"编译"和"链接"两个阶段,根据从DO ...
- 普通程序员如何转向AI方向
眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- Android Studio切换为eclipse的快捷键之后还是有区别的部分快捷键
Android Studio Eclipse 把代码提示换成了Class Name Completion, 快捷键是Ctrl+Alt+Space(空格键). 代码提示快捷键Alt+/, ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- 如何区别char与varchar?
1.varchar与char两个数据类型用于存储字符串长度小于255的字符,MySQL5.0之前是varchar支持最大255.比如向一个长度为40个字符的字段中输入一个为10个字符的数据.使用var ...
- 一键生成APP官网
只需要输入苹果下载地址,安卓市场下载地址,或者内测下载地址,就能一键生成APP的官网,方便在网上推广. 好推APP官网 www.hotapp.cn/app