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, ...
随机推荐
- 在 Laravel 中使用图片处理库 Integration/Image
系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...
- C#——传值参数(2)
//我的C#是跟着猛哥(刘铁猛)(算是我的正式老师)<C#语言入门详解>学习的,微信上猛哥也给我讲解了一些不懂得地方,对于我来说简直是一笔巨额财富,难得良师! 这次与大家共同学习C#中的 ...
- bzoj3037--贪心
题目大意: applepi手里有一本书<创世纪>,里面记录了这样一个故事--上帝手中有着N 种被称作"世界元素"的东西,现在他要把它们中的一部分投放到一个新的空间中去以 ...
- zookeeper(单机/集群)安装与配置
一.安装与单机配置 1.下载: wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz 如果网站下载不了 ...
- PHP 数组浅析
PHP的数组具有如下特点:1.数组初始化时无需指定长度:2.数组中的元素无需相同类型:3.数组的长度可变4.可使用var_dump(参数)或者print_r( 参数) 函数查看数组变量.5.数组内的 ...
- 如何让spring mvc web应用启动时就执行特定处理
Asp.Net的应用中通过根目录下的Global.asax,在Application_Start方法中做一些初始化操作,比如:预先加载缓存项对网站热点数据进行预热,获取一些远程的配置信息等等. Spr ...
- mono for android 用ISharedPreferences 进行状态保持 会话保持 应用程序首选项保存
由于项目需要 要保持用户登录状态 要进行状态保持 用途就好像asp.net的session一样 登录的时候进行保存 ISharedPreferences shared = GetSharedPrefe ...
- Chrome代码下载及编译
2-3年前在做客户端开发时,看过CHROME的一部分代码,主要是BASE库相关的.其项目之大,编译时间之长给我留下了深刻的印象. 3年后的最近,想着再读一下其他部分的代码,所以就对其纠结的下载和编译过 ...
- 如何扩展 Visual Studio 编辑器
在 Visual Studio 2010 的时代,扩展 Visual Studio 的途径有很多,开发者可以选择宏.Add-in.MEF 和 VSPackages 进行自定义的扩展.但是宏在 Visu ...
- Azure 上通过 SendGrid 发送邮件
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...