TeamCity : Build 版本控制系统配置
VCS (版本控制系统) 是用来跟踪项目源文件版本变化的系统。它还有其它的名字,比如 SCM(源代码管理)。当前 TeamCity 内置支持的 VCS 类型有:Git, Subversion, Mercurial, Perforce, Team Foundation Server, CVS, StarTeam, ClearCase, SourceGear Vault, Visual SourceSafe。

本文将通过实例比较详细的介绍 Build 中版本控制系统的设置。
VCS root
一个 VCS root 定义了一个到版本控制系统的连接,这个连接包含了 TeamCity 和版本控制系统通信的所有信息(源文件路径, 用户名, 密码和其它设置)。有了这些信息,TeamCity 就可以监控代码的变化并且在做 build 时把代码获得到本地。您创建的 VCS root 必须属于某个项目,它可以被这个项目和这个项目的子项目中的 build 使用。
创建 VCS root
您可以点击 “Attach VCS root” 按钮开始 VCS root 的创建过程:

选择您的 VCS 类型,点击 “Create” 按钮:

VCS 类型
TeamCity 内置支持了主流的 VCS :

您可以选择您使用的 VCS 的类型,然后按照提示完成 VCS root的创建。接下来笔者将通过一个实例来说明一些细节。VCS 的类型就选择笔者使用的 TFS (好土啊,居然还没用上 Git!)。

VCS root 名称
VCS root 名称需要是唯一的,以区分不同的 VCS root,我们在引用 VCS root 时就是通过这个唯一的名称:

VCS root ID
VCS root ID 也必须是唯一的,它会被 TeamCity 内部的程序引用,也可以被用作 REST API 的参数。一般我们不需要手动指定它,TeamCity 会按照下面的规则自动生成:
项目名称 + 下划线 + VCS root名称。
VCS URL
指向 VCS 的 URL,填写您取代码的地址,如:

代码路径
指定从代码库中获取代码的路径:

用户名和密码
从代码库获取代码时提供的认证信息:

强制获取所有文件
这是 TFS 相关的一个选项,当 TeamCity 通过 Build Agent 获取代码时这个选项会起作用。当选中 “Enforce overwrite all files” 时,TeamCity 会通过 请求 TFS 更新所有的文件。一般情况下您是不需要这么做的。当然,有时您可能会怀疑 TeamCity 没有从 TFS 上获取代码,那时您就可以使用这个选项:

最小的检查间隔时间

这个选项指出 TeamCity 多长时间检查一次 VCS 库的变化。默认情况下使用的是从系统继承来的值。在 Administration | Global Settings 页面有系统级别的设置。如果您要自定义这个值,可以选择 custom进行设置。
所属项目
在这里您可以指定当前创建的 VCS root 属于哪个项目:

检查连接情况
您可以在完成创建前检查当前的配置是否可以正确的连接到 VCS,点击 “Test connection” 按钮进行测试:

连接成功的样子:

下面点击 “Create” 按钮完成 VCS root的创建。
配置 VCS root Checkout Rules
我们可以为 VCS root 指定适当的规则,从而控制取到的代码在 build 时的路径。VCS Checkout Rules 允许我们获取库中部分的代码,并且可以映射到 Build Agent 上的指定目录。

具体的语法请参考《TeamCity : Build 基本配置》一文中的 Artifact paths 小节。
注意,Checkout 规则只能指定目录不能指定单个文件,也不能使用统配符。
VCS checkout mode
VCS checkout mode 用来指定源代码文件到达 Build Agent 的方式。从版本 10 开始 TeamCity 支持四种类型的 VCS checkout mode:

Prefer to checkout files on agent
这种方式是最新添加的,也是推荐的默认设置。取代码的方式为先尝试从 Build Agent 上向版本库请求代码,如果不行,再从 TeamCity Server 上尝试。
Always checkout files on server
总是尝试从 TeamCity Server上请求版本库,然后把代码发送到 Build Agent 上。
Always checkout files on agent
总是尝试从 Build Agent 上向版本库请求代码,这种方式的好处是 Build Agent 上有完整的工作区,您可以在 Build 的过程中调用版本库的命令。
Do not check out files automatically
这种模式下执行 Build 前是不会从版本库获取代码的,主要用于调试。比如您可以在 Build 目录中进行文件的修改,然后启动一次 Build,从而验证您的变更。
Checkout directory
默认情况下,Build 在 Build Agent 上的工作目录是被 TeamCity 控制的。但您可以通过设置 Checkout directory 项为 Custom path 来自行控制 Build 的工作目录:

个人感觉 TeamCity 默认的选项已经很好了,除非必要,否则不要自己指定这个选项。
Clean build
如果您有需求必须再每次 Build 之前清空 Build 的工作目录,那么您可以通过设置 Clean build 选项来达到目的:

Display options
允许显示来自 snapshot dependencies 的变更:

总结
Build 中版本控制系统的配置的重要性无须多言,好在 TeamCity 提供了比较灵活多样的配置方式,让我们可以简单便捷的实现各种用例。
TeamCity : Build 版本控制系统配置的更多相关文章
- TeamCity : Build 基本配置
前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...
- TeamCity : Build 失败条件
允许用户配置 Build 失败的条件是很有用的功能,它是我们配置复杂 Build 流程的基础.TeamCity 为用户自定义 Build 失败条件提供了很好的支持.这些条件大体上可以分为两类,分别是: ...
- TeamCity Build 步骤的执行策略
TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤.1 失败状态 当满足下面条件时 build 步骤的状态被确定为失败: b ...
- teamcity build web project arguments
/p:Configuration=%system.Configuration% => Release /p:DeployOnBuild=%system.DeployOnBuild% => ...
- TeamCity 创建jar构建步骤
1 创建工程 2 配置工程代码来源信息 2.1 From a repository URL 表示从代码仓库创建工程. 2.1.1 parent project 指定父工程,默认是root projec ...
- Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)
本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...
- TeamCity 创建docker构建步骤
1 dockerfile source 选择dockerfile文件的路径,一共有三种方式: 1.1.1 file content 这种方式是在线写dockerfile文件. 其在进行创建的时候会在 ...
- Team City的安装1
持续集成工具 Team City的安装 前两个月很大一部分精力投入在做部门的持续集成,从概念的了解和工具的选型,再到安装,部署,操作,到最后的真实项目持续集成应用的上线,写了一份手册,包括安装,配置, ...
- [Gradle系列]Gradle打包apk多版本,多渠道,多环境,多功能,多模块随心所欲
Tamic: http://blog.csdn.net/sk719887916/article/details/53411771 开始 上篇Gradle发布Module(Maven)到jcenter, ...
随机推荐
- SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...
- Aaron Stannard谈Akka.NET 1.1
Akka.NET 1.1近日发布,带来新特性和性能提升.InfoQ采访了Akka.net维护者Aaron Stannard,了解更多有关Akka.Streams和Akka.Cluster的信息.Aar ...
- Atitit godaddy 文件权限 root权限设置
Atitit godaddy 文件权限 root权限设置 1. ubuntu需要先登录,再su切换到root1 2. sudo 授权许可使用的su,也是受限制的su1 3. ubuntu默认吗roo ...
- Set up VLAN (802.1q) tagging on a network interface?
SOLUTION VERIFIED October 13 2015 KB39674 KB741413 environment Red Hat Enterprise Linux 4 Red Hat En ...
- 怎样在Dos里切换盘符
一:在Dos里切换盘符 a:在电脑左下角右击显示图片;(我用的是win10系统,其他系统类似) b:点击运行,输入cmd; c:点击确定: d:输入盘符:(如f:) 或F: 只写字母,不写分号是不行的 ...
- BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]
4453: cys就是要拿英魂! Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 90 Solved: 46[Submit][Status][Discu ...
- POJ3693 Maximum repetition substring [后缀数组 ST表]
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9458 Acc ...
- Linux学习日记-使用EF6 Code First(四)
一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是 请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...
- keepalived 知识备注
keepalived可用于配置nginx/lvs等负载均衡设备的双机热备. keepalived基于VRRP协议,简单的说就是两个物理路由节点(一主一备),虚拟成一个逻辑上的路由节点. 实际消息的路由 ...
- smartcrop.js智能图片裁剪库
今天将为大家介绍一款近期github上很不错的开源库 – smartcrop.js.它是一款图片处理的智能裁剪库.在很多项目开发中,经常会遇见上传图片的场景,它可能是用户照片信息,也可能是商品图片等. ...