TeamCity On-Premises 2024.03 Help

Docker 支持

Docker Support 构建功能允许在开始构建之前自动登录到 DockerHub 或其他容器注册表。

将此功能添加至:

  • 允许 TeamCity 监控并检测 Docker / Podman 操作(例如, docker pullpodman run);

  • 在构建前自动登录已认证的注册表,构建后退出登录。

  • 清理本地(适用于 Docker 和 Podman)和推送到注册表的镜像(仅适用于 Docker);

  • Container Info 标签页添加到 Build Results 页面。 该标签页提供了与使用的容器管理器相关的操作信息。

    容器信息"选项卡

登录和退出存储库以及清理镜像需要配置好的 Docker 注册表 连接:

Docker 支持构建功能

Docker 镜像清理

推送镜像的清理

如果您有一个用于发布镜像的构建配置,那么您需要在某个时间点删除它们。 您可以选择相应的选项,并指示 TeamCity 在构建自身被 清理 时,移除由某个特定构建发布的镜像。

它的工作原理如下:当发布一个镜像时,TeamCity会存储构建发布的镜像的注册表信息。 当运行 服务器清理 并删除构建时,系统将搜索所有配置的连接以找到此注册表的地址,并使用找到的连接中指定的凭据清理构建发布的镜像。

如果镜像是从 Linux 代理推送的,且设置了 --digestfile=<文件名> 选项,目前只有在这种情况下,才能清理通过 Podman 推送的镜像。 请注意, fileName 应该是相对于 checkout directory 的路径,并应指向最终摘要文件的位置(此路径不应被进一步的导航指令修改)。

在构建代理上清理镜像

作为释放磁盘空间构建功能的一部分,Docker Support 清理了由 TeamCity 构建在此构建代理上创建的镜像。 Docker 支持假定,Docker 镜像存储在下面的位置。

  • /var/lib/docker 在 Linux上

  • 在 Windows 上的 %ProgramData% 目录

  • $HOME 在其他系统上的目录

位置非常重要,因为 Free disk space 功能会分析应清理哪些磁盘卷以进行构建。 如果您的 docker 守护进程使用非标准位置存放镜像/容器,则可以使用 teamcity.docker.data.path 配置参数指定该位置,最好在 buildAgent.properties 文件中指定。

Docker Registry 自动登录/登出

如果您需要在构建前登录到需要身份验证的注册表,请选择相应选项,并在 项目设置 中配置 Docker 的连接。 构建完成后,系统将自动执行注销操作。

Amazon ECR

连接到 Amazon Elastic Container Registry(ECR)可以在私有的 AWS 注册表中存储 Docker / LXC 镜像。 为此,在向构建配置中添加 Docker Support 功能时,需要选择此类连接。

连接设置:

设置

描述

AWS 区域

选择位于目标资源的 AWS 区域。

凭证类型

  • 访问密钥:选择以使用预配置的 AWS 帐户访问密钥。 您可以在 AWS 控制台的 Identity and Access Management 部分找到他们。

  • 临时凭证:通过 AWS STS 获取 临时访问密钥。 此类凭据为短期,并不属于特定用户。

IAM 角色 ARN

仅适用于临时凭证

指定用于生成临时凭据的角色。 您需要在您的 AWS 控制台中提前创建此角色,并将其分配给所有必要的权限。

外部 ID

仅适用于临时凭证

指定一个 external ID。 我们强烈建议您在使用临时凭证时始终进行定义。 这确保了只有 TeamCity 能够使用指定的 IAM 角色。

默认凭据提供程序链

启用此选项,系统会根据 default chain 自动寻找访问密钥。

访问密钥 ID

指定访问密钥 ID。

查看如何获取 这里

密钥访问密钥

指定秘密访问密钥。

查看如何获取 这里

注册表 ID

输入您的注册表 ID 或 AWS 帐户。

Kotlin DSL

以下 Kotlin DSL 代码段演示了如何向您的构建配置中添加 Docker Support 构建功能。

import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport object MyBuildConfig : BuildType({ name = "Deploy Web (Windows)" features { dockerSupport { cleanupPushedImages = true loginToRegistry = on { dockerRegistryId = "PROJECT_EXT_5" } } } })
最后修改日期: 16日 7月 2024年