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 版本控制系统配置的更多相关文章

  1. TeamCity : Build 基本配置

    前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...

  2. TeamCity : Build 失败条件

    允许用户配置 Build 失败的条件是很有用的功能,它是我们配置复杂 Build 流程的基础.TeamCity 为用户自定义 Build 失败条件提供了很好的支持.这些条件大体上可以分为两类,分别是: ...

  3. TeamCity Build 步骤的执行策略

    TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤.1 失败状态 当满足下面条件时 build 步骤的状态被确定为失败: b ...

  4. teamcity build web project arguments

    /p:Configuration=%system.Configuration%  => Release /p:DeployOnBuild=%system.DeployOnBuild%  => ...

  5. TeamCity 创建jar构建步骤

    1 创建工程 2 配置工程代码来源信息 2.1 From a repository URL 表示从代码仓库创建工程. 2.1.1 parent project 指定父工程,默认是root projec ...

  6. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)

    本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...

  7. TeamCity 创建docker构建步骤

    1 dockerfile source 选择dockerfile文件的路径,一共有三种方式: 1.1.1 file content 这种方式是在线写dockerfile文件. 其在进行创建的时候会在 ...

  8. Team City的安装1

    持续集成工具 Team City的安装 前两个月很大一部分精力投入在做部门的持续集成,从概念的了解和工具的选型,再到安装,部署,操作,到最后的真实项目持续集成应用的上线,写了一份手册,包括安装,配置, ...

  9. [Gradle系列]Gradle打包apk多版本,多渠道,多环境,多功能,多模块随心所欲

    Tamic: http://blog.csdn.net/sk719887916/article/details/53411771 开始 上篇Gradle发布Module(Maven)到jcenter, ...

随机推荐

  1. 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  2. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  3. C#中如何在Excel工作表创建混合型图表

    在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...

  4. ASP.NET MVC5----常见的数据注解和验证

    只要一直走,慢点又何妨. 在使用MVC模式进行开发时,数据注解是经常使用的(模型之上操作),下面是我看书整理的一些常见的用法. 什么是验证,数据注解 验证 从全局来看,发现逻辑仅是整个验证的很小的一部 ...

  5. Entity Framework 教程——Entity Framework中的实体类型

    Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...

  6. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  7. windows 7(32/64位)GHO安装指南(U盘引导篇)~

    上一篇我们说了怎么制作U盘启动盘,那么这一篇让我们来看看如何进行正确的U盘引导启动. 现在的个人计算机一般分为台式机和笔记本,由于各厂商的喜好不同(开玩笑的啦),所以对于主板的BIOS设置各所不同.进 ...

  8. Linux课堂笔记(一)

    一.Linux应用领域及版本介绍. 1.服务器.嵌入式.桌面应用等. (1)在服务器领域中,需要安全和稳定,特别是越老的内核版本越安全.越稳定. (2)Linux主要分内核版和发行版. 内核版本2.6 ...

  9. 烂泥:wiki系统confluence5.6.6安装、中文、破解及迁移

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它 ...

  10. 杂项之python描述符协议

    杂项之python描述符协议 本节内容 由来 描述符协议概念 类的静态方法及类方法实现原理 类作为装饰器使用 1. 由来 闲来无事去看了看django中的内置分页方法,发现里面用到了类作为装饰器来使用 ...