Jenkins 到 TeamCity 迁移指南
简介
本文档提供了从 Jenkins 迁移到 TeamCity CI 服务器时您需要了解的基础知识。 TeamCity 与 Jenkins 在管理 CI 和 CD 相关概念方面有很大的不同。 要了解更多关于持续交付的信息,并获取构建生产流程的提示,请按照我们的 CI / CD 指南。 如果您想立即开始使用 TeamCity,可以查看 入门指南 的说明。
概念
Jenkins 和 TeamCity 大多具有相同的概念集,但命名略有不同。 以下表格提供了一些 Jenkins 概念到 TeamCity 对应项的映射。
迁移 Freestyle 项目
Freestyle项目是 Jenkins 中最常见的项目类型,所以我们将描述 Freestyle 项目在 TeamCity 中的对应项目,以指导迁移。
项目和构建配置
在 Jenkins 和 TeamCity 中配置构建作业的概念上存在一些差异。
构建配置是 TeamCity 对 Jenkins 工作项 / 项目的对应项。 然而,构建配置需要先创建一个 Project 实例。 实际上,"Project" 的概念在 TeamCity 中是用户从 Jenkins 迁移时首次遇到的重大区别。 该项目包含了大部分为构建配置所需的设置。 在 TeamCity 中分配给项目的所有设置都在 这里 列出。
VCS 根目录
Jenkins 构建任务的源代码管理(SCM)相当于 TeamCity 的项目设置中的 VCS root。 一个项目可能包含任意数量的 VCS Roots。 任何构建配置都可以使用项目的任意数量的 VCS Roots。
当只需要 VCS Root 的一部分时,可以使用 VCS 签出规则。 这允许将配置的 VCS 根中的目录映射到构建代理上的 构建签出目录 的子目录中。
构建环境
在 Jenkins 中,Freestyle 项目的构建参数部分为项目指定了额外的功能。 在 TeamCity 中,相应的功能可能会在各种不同的部分进行配置,具体取决于目标:一般项目设置,构建配置设置,VCS 根设置等等。
示例:
要在构建前清理工作空间,请在构建配置的版本控制设置中启用 Clean build 复选框。
若要在进程卡顿时取消构建,请配置构建配置的 失败条件。 此外,TeamCity 还可提供开箱即用的 挂起构建检测 功能。
环境变量可以通过在配置的各个地方指定特殊的
%env.<环境变量名称>%
模式(例如:%env.JAVA_HOME%
)来访问。
触发器
Freestyle 项目允许配置可选触发器来控制 Jenkins 何时启动构建。 在大多数情况下,Jenkins 项目中的触发器将在 TeamCity 中有一个对应项。
在 TeamCity 中,有很多种触发构建的 选项 可用。 可以监视源代码控制仓库中的更改,监控外部资源,甚至是 Maven 依赖。 除了定期安排构建外,REST API 还可以用来从外部触发构建。
Build(构建)
这就是真正的工作发生的地方。 这部分在 Jenkins 和 TeamCity 中几乎是完全相同的。 TeamCity 提供了大量的现成 构建运行程序。 您可以配置多个构建步骤,以运行给定的构建配置所需的任务。
构建 Maven 项目
Jenkins Maven 项目在 TeamCity 中并没有直接对应的项目。 反而,选择了适当的构建步骤来执行工作。 实际上,TeamCity 自动化了 Maven 项目的许多设置,并提供了基于依赖项的额外构建触发 选项。
构建后操作
Freestyle 项目的后构建操作可以映射到 TeamCity 中的项目/构建配置的特定属性,或者通过使用额外的构建步骤。 您也可以通过在 TeamCity 中为构建配置添加 构建功能 来找到与任务相关的解决方案。
单个构建步骤可能会根据同一构建配置的前一个或多个构建步骤的成功或失败状况而被 配置为执行。
处理分支
TeamCity 为分布式版本控制系统 (DVCS) 中的 功能分支 提供了支持。
对功能分支的支持与各种 TeamCity 功能集成。 例如,每当 TeamCity 检测到构建配置的 VCS 根的特定分支出现变化时,分支远程运行触发器 会自动启动一个新的个人构建。
以下是与 TeamCity 中的 Feature Branches 相关的一些亮点列表:
插件
TeamCity默认内置了许多功能,并且可以通过安装 额外插件 进一步扩展。
构建管道
在 TeamCity 中,构建管道被称为 构建链。 这是一组通过快照依赖连接的构建配置集。 《TeamCity 对构建管道的理解》的文章详细描述了 TeamCity 如何处理构建链以及其带来的影响。
分布式构建
在 Jenkins 中,为了减轻主节点的负担,配置一个永久代理来运行构建。
TeamCity 服务器本身不运行任何构建。 相反,它总是将任务委派给一个 构建代理,这意味着在 TeamCity 中,构建是按设计分布的。
活动代理数量显示在 TeamCity 服务器 UI 的顶部: