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. Android性能优化之巧用软引用与弱引用优化内存使用

    前言: 从事Android开发的同学都知道移动设备的内存使用是非常敏感的话题,今天我们来看下如何使用软引用与弱引用来优化内存使用.下面来理解几个概念. 1.StrongReference(强引用) 强 ...

  2. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

  3. 掌握javascript中的最基础数据结构-----数组

    这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...

  4. 普通程序员如何转向AI方向

    眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...

  5. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

  6. WCF基础

    初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...

  7. 后缀数组的倍增算法(Prefix Doubling)

    后缀数组的倍增算法(Prefix Doubling) 文本内容除特殊注明外,均在知识共享署名-非商业性使用-相同方式共享 3.0协议下提供,附加条款亦可能应用. 最近在自学习BWT算法(Burrows ...

  8. 【读书】PHP程序员要读的书目(不断完善中)

    本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. [Android]使用Dagger 2来构建UserScope(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6237731.html 使用Dagger 2来构建UserSco ...