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的看门狗有两种:独立和窗口看门狗. 今天提供两种看门狗的软件工程实例,供大家下载. 两种看 ...
随机推荐
- 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...
- 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器
LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- JS魔法堂:不完全国际化&本地化手册 之 理論篇
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
- Springboot搭建web项目
最近因为项目需要接触了springboot,然后被其快速零配置的特点惊呆了.关于springboot相关的介绍我就不赘述了,大家自行百度google. 一.pom配置 首先,建立一个maven项目,修 ...
- 【开发软件】 在Mac下配置php开发环境:Apache+php+MySql
本文地址 原文地址 本文提纲: 1. 启动Apache 2. 运行PHP 3. 配置Mysql 4. 使用PHPMyAdmin 5. 附录 有问题请先 看最后的附录 摘要: 系统OS X ...
- eclipse如何添加Memory Analyzer
①启动Eclipse,并打开"Install New software..."对话框: ②点击Add,如图: ③点击OK,最后一直点next,完成
- Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
回到目录 .Net MVC之所以发展的如些之好,一个很重要原因就是它公开了一组AOP的过滤器,即使用这些过滤器可以方便的拦截controller里的action,并注入我们自己的代码逻辑,向全局的异常 ...
- Android中访问sdcard路径的几种方式
以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...
- XAMARIN.ANDROID SIGNALR 实时消息接收发送示例
SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...