TeamCity 与 Docker 持续集成

借助 TeamCity,您可以为任意规模和复杂程度的项目自动执行 CI/CD,同时为管道的每个步骤使用 Docker。

在 Docker 环境中构建

您是否曾沮丧地发现,您在自己的机器上调试的代码无法在其他环境中使用?借助 TeamCity,您可以在 Docker 中运行构建和测试,确保您的应用程序不会绑定到特定系统,在其他地方也能够正常使用,而无论是在 QA 人员的机器上还是在位于云端的生产实例中。

规模化构建和管理 Docker 镜像

正在寻找一种构建可扩缩、可维护的 CI/CD 基础架构的方式?借助 TeamCity,您可以通过构建参数自定义 Docker 命令,使用模板设置集中式管道,并自动从过时的 Docker 镜像中清理构建代理和 Docker 注册表。

对容器化服务运行集成测试

您是否需要测试不同应用组件的协作情况,或者在特定的环境中测试您的应用?TeamCity 将启动 Docker 容器,运行集成测试,并在测试结束后安全地将其关闭,测试流程高度可靠、可重现。

将 Docker 集成到 CI/CD 管道中

TeamCity 支持所有使用 Docker 的软件开发工作流并可以加快开发速度。其他 CI/CD 工具仅可以提供构建结果的二进制信息(即成功还是失败),而 TeamCity 与 Docker 深度集成,为您提供管道的全面信息,包括:

  • 实时的构建日志和测试结果
  • 统计信息、趋势和代码质量检查
  • 进程和线程的堆栈跟踪
  • 导致构建中断的更改

因此,您可以快速找出构建中存在的问题,了解需要修正的内容,以更快的速度和更高的质量交付新功能。

用于集成 Docker 的核心 TeamCity 功能

Docker 构建运行程序

借助 Docker 构建运行程序,您可以添加执行 Docker 命令的构建步骤。如果您需要动态自定义 Docker 参数,这会非常有用。例如,您可以在管道中早前定义的特定版本的操作系统下运行构建。它还可以让 TeamCity 自动清理构建代理上 Docker 镜像的本地缓存,确保它们为后续构建做好准备。

有关详情,请参阅我们文档中的 Docker 运行程序部分。

Docker 包装器

借助 Docker 包装器,您可以独立于主机操作系统,在 Docker 容器中运行 TeamCity 构建步骤,提供一致、可重现的结果。TeamCity 会跟踪构建过程中发生的所有事件,为您提供实时报告、测试分析和其他智能功能,如 Docker 容器内的堆栈跟踪。

有关详情,请参阅我们文档中的 Docker 包装器部分。

Docker Compose 构建运行程序

Docker Compose 构建运行程序用于在构建开始时启动 Docker 容器,并确保 TeamCity 在构建完成或停止后将其关闭。它的主要用例是运行集成测试,其中的组件被容器化,它们的执行可以使用 Docker Compose 文件进行描述。例如,根据可以作为其后端运行的不同数据库的多个版本对 TeamCity 本身进行测试,并使用 Docker Compose 构建运行程序运行各自的集成测试。

有关详情,请参阅我们文档中的 Docker Compose 运行程序部分。

Docker 支持构建功能

Docker 支持构建功能用于管理对 Docker 注册表的访问。它在项目级别配置,支持所有流行的服务,包括 Docker Hub、Amazon ECR、JFrog Container Registry 等,可以使用各种不同的 TeamCity 功能。例如,当服务器清理功能删除与过时的构建相关的数据时,它可以配置为移除在该构建中发布的 Docker 镜像。

有关详情,请参阅我们文档中的 Docker 支持部分。

用例:Docker 和持续集成如何加快开发工作流

假设您实现了一个在自己的计算机上构建和运行的后端服务。即使您不打算在本地环境以外使用该服务,但随着时间的推移,仍然会有许多事情发生变化:操作系统、构建工具、第三方库等。实际上,我们无法在本地机器上保持完全静态的环境;一些东西迟早会损坏。

借助 Docker 和 TeamCity,您可以完全重现您的构建,而且不必管理依赖项和修正兼容性错误。使用 Maven 的 Java 项目的 CI/CD 管道可能类似这样:

在从您提交至 VCS 到获得结果的整个过程中,TeamCity 将对您的构建和测试提供实时报告,让您尽快获得反馈。它支持任何复杂程度和规模的项目,帮助团队最大限度地减少错误、更快地发布功能、建立更加透明的开发流程。

您可以使用简单的 Web 用户界面设置 CI/CD 管道,无需编写任何代码。您还可以使用 Kotlin 通过编程来配置它们,并实现可维护、可重现的持续集成设置,该设置可以组合多种编程语言、操作系统和云平台。

常见问题解答:通过 Docker 和 TeamCity 实现 CI/CD

TeamCity 和 Docker 集成支持哪些操作系统?

TeamCity 可以在任何支持 Docker 运行时的平台上使用 Docker,包括 Linux、Windows 和 macOS。

TeamCity 可以创建 Docker 镜像吗?

是的,除了在 Docker 容器中运行构建外,TeamCity 还可以创建 Docker 镜像,将其推送至 Docker 注册表,以及根据各种条件删除它们。

TeamCity 是免费的吗?

是的,TeamCity On-Premises 对小型项目免费,而且没有用户数量或构建时间限制。TeamCity Cloud 提供 14 天免费试用期。两个版本均对 Docker 提供全功能支持。

TeamCity 是否在 Docker 容器中运行构建?

借助 TeamCity,您可以选择直接在机器上运行构建,也可以使用 Docker 容器运行它们。