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 过程的更多相关文章

  1. 持续集成工具TeamCity配置使用

    持续集成CI(Continuous Integration)主要包括自动化的编译.发布和测试集成,对于我们信息系统项目开发非常有用.一般开发人员机器上会搭建自己的开发环境,整个项目在服务器上会搭建测试 ...

  2. TeamCity : 配置第一个工程

    前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译. 创建 .net core 项目 我们在本地创建一个简单的 .ne ...

  3. Android Studio 的 build 过程

    如图, 编译器将源代码(包括 Application Module 及其所依赖的所有 Library 源代码)转换成 DEX(Dalvik Executable)文件(其中包括运行在 Android ...

  4. (转)Maven的pom.xml文件结构之Build配置build

    在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>. 1. 在M ...

  5. @vue/cli3+配置build命令构建测试包&正式包

    上一篇博客介绍了vue-cli2.x配置build命令构建测试包和正式包,但现在前端开发vue项目大多数使用新版@vue/cli脚手架搭建vue项目(vue create project-name) ...

  6. Redis主从配置详细过程

    Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...

  7. STM32F0xx_PWR低功耗配置详细过程

    Ⅰ.概述 今天总结PWR部分知识,请看“STM32F0x128参考手册V8”第六章.提供的软件工程是关于电源管理中的停机模式,工程比较常见,但也是比较简单的一个实例,根据项目的不同还需要适当修改或者添 ...

  8. STM32F0xx_EXIT中断配置详细过程

    Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...

  9. STM32F0xx_看门狗(独立+窗口)配置详细过程

    Ⅰ.概述 对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0看门狗的功能,F0的看门狗有两种:独立和窗口看门狗. 今天提供两种看门狗的软件工程实例,供大家下载. 两种看 ...

随机推荐

  1. 怎么让网站在本地支持SSL?

    打开vs,点击项目,查看属性,打开ssl 如果有什么危险提示,就允许 右击项目,选择属性 运行项目

  2. Python的单元测试(一)

    title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...

  3. Android Ormlite 学习笔记1 -- 基础

    Ormlite 是一个开源Java数据实体映射框架.其中依赖2个核心类库: 1.ormlite-android-4.48.jar 2.ormlite-core-4.48.jar 新建项目,引用上面2个 ...

  4. 如何远程关闭一个ASP.NET Core应用?

    在<历数依赖注入的N种玩法>演示系统自动注册服务的实例中,我们会发现输出的列表包含两个特殊的服务,它们的对应的服务接口分别是IApplicationLifetime和IHostingEnv ...

  5. Android Studio —— 重装 HAXM

    Android Studio -- 重装 HAXM 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. Android SDK 自带模拟器一直以慢.卡 ...

  6. 9、委托、事件、Lambda

    开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.)   第 ...

  7. C# await和async

    基础阅读:http://www.cnblogs.com/jesse2013/p/async-and-await.html 答疑阅读:http://www.cnblogs.com/heyuquan/ar ...

  8. css样式之border

    border用法详解: 1.border-width 属性设置边框的宽度 可能的值:像素 2.border-style 属性设置边框的样式 可能的值:solid(直线),dashed(虚线),dott ...

  9. css_02之盒模型、渐变

    1.框模型:盒模型,①对象实际宽度=左右外边距+左右边框+左右内边距 + width:②对象实际高度=上下外边距+上下边框+上下内边距 + height: 2.外边距:margin:取值:①top(上 ...

  10. Android中的多线程断点下载

    首先来看一下多线程下载的原理.多线程下载就是将同一个网络上的原始文件根据线程个数分成均等份,然后每个单独的线程下载对应的一部分,然后再将下载好的文件按照原始文件的顺序"拼接"起来就 ...