使用 TeamCity 进行持续集成
TeamCity 是一个持续集成 / 持续交付(CI / CD)服务器。
持续集成是一种软件开发实践,开发人员每天会多次将代码更改提交到共享仓库中。 每次提交后都会跟随一个自动化构建,以确保新的更改能够很好地融入现有的代码库,并尽早发现问题。
要了解持续集成的基础知识, 请参阅 我们的网站。
什么是 TeamCity?
JetBrains TeamCity 是一款用户友好的持续集成(CI)服务器,面向开发人员和构建工程师 搭载专业服务器许可证,免费使用,并且易于设置!
这个视频概述了 TeamCity 的主要特性,并解释了 许可政策:
您可以使用 TeamCity 做什么?
在不同的平台和环境上同时运行并行构建
优化代码集成周期,确保您的仓库中永远不会出现损坏的代码
查看智能测试重新排序的即时测试结果报告
运行 Java 和 .NET 的代码覆盖率和重复项查找器
定制构建持续时间、成功率、代码质量和自定义指标的统计数据
还有更多
要了解更多关于 TeamCity 主要功能的信息,请参考 JetBrains 官方网站。
TeamCity 不仅适用于管理员和构建工程师,也适用于开发人员。 观看此视频,了解一些其标志性功能:
支持的平台和环境的完整列表可在此处 这里 查看。
基本的 TeamCity 概念
这个部分描述了主要的 TeamCity 概念。 您可以在 TeamCity 术语介绍 中找到更全面的解释。
TeamCity 构建系统包括一个服务器和构建代理。
概念 | 描述 |
---|---|
构建代理 | 一个实际执行构建过程的软件片段。 它的安装和配置与 TeamCity 服务器是分开的。 代理可以安装在单独的机器(物理或虚拟)上,它可以运行与服务器相同的操作系统(OS)或不同的操作系统。 |
TeamCity 服务器 | 服务器 自身 并不执行任何构建或测试: 服务器的工作是监控所有连接的构建代理, 根据兼容性要求,将 排队的构建 分配给代理, 并报告结果。 所有关于构建结果的信息(构建历史和除了构建工件和构建日志以外的所有与构建相关的数据)、VCS更改、代理、构建队列、用户帐户、用户权限等,都存储在数据库中。 |
项目 | 一个 TeamCity 项目对应于一个软件项目或软件项目的特定版本/发布。 一个项目是一系列的 build configurations 的集合。 |
构建配置 | |
VCS 根 | 一组版本控制设置(源路径、用户名、密码、签出模式 和其他设置),这些设置定义了 TeamCity 如何与版本控制系统(VCS)通信,以监视更改并获取构建的源代码。 |
构建步骤 | 待执行的任务。 每个构建步骤都由一个 build runner 表示,它提供与特定构建工具(比如 Ant、Gradle、MSBuild 等)、测试框架(例如 NUnit)或代码分析引擎的集成。 因此,您可以在单次构建中拥有多个步骤,并按顺序调用测试工具、代码覆盖率,例如,编译您的项目。 |
构建触发器 | 一条在某些事件中启动新构建的规则。 例如,每当 TeamCity 检测到配置的 VCS roots 发生 变更 时,VCS 触发器 将自动启动新的构建。 |
更改 | 您引入的任何源代码的修改。 如果一个变更已被提交到版本控制系统,但尚未包含在构建中,那么它被认为是某个构建配置的待定项。 |
构建 | 在代理上执行的 CI/CD 任务。 它包含一个或多个步骤,可以执行任何服务任务:编译、测试、部署、生成报告等等。 术语 build 既可能指的是构建的实际过程,也可能指构建的结果。 在触发构建后,它会被放入 构建队列 ,并且当兼容的代理变得可用时开始。 在构建完成后,构建代理将 构建工件 发送到服务器。 |
构建队列 | 一份已触发且等待启动的构建列表。 TeamCity 将在构建代理变为空闲状态时立即将它们分发给 兼容的 构建代理。 在代理开始执行时,队列中的构建任务会被分配给代理;在构建等待在构建队列中时,不会预先进行任务分配。 |
构建工件 | 由构建产生的文件,例如,安装程序,WAR 文件,报告,日志文件,在它们可供下载时。 |
TeamCity 中的基础 CI 工作流
为了理解服务器和代理之间的数据流,传递给代理的内容,以及何时以及如何 TeamCity 获取结果,让我们来看一下简单的构建生命周期。
TeamCity 服务器检测到您的 VCS 根目录(仓库)发生了变化。
服务器将此更改存储在数据库中。
附加到构建配置的触发器,检测数据库中的相关更改,并启动构建。
触发的构建将出现在构建队列中。
构建已分配给一个空闲的兼容构建代理。
代理执行在构建配置中描述的构建步骤。 在执行步骤时,代理向 TeamCity 服务器报告构建进度。 它实时发送所有的日志消息、测试报告、代码覆盖率结果,因此您可以实时监控构建过程。
构建完成后,代理会将构建工件发送到服务器。