Docker 支持
Docker Support 构建功能允许在开始构建之前自动登录到 DockerHub 或其他容器注册表。
将此功能添加至:
允许 TeamCity 监控并检测 Docker / Podman 操作(例如,
docker pull
和podman run
);在构建前自动登录已认证的注册表,构建后退出登录。
清理本地(适用于 Docker 和 Podman)和推送到注册表的镜像(仅适用于 Docker);
将 Container Info 标签页添加到 Build Results 页面。 该标签页提供了与使用的容器管理器相关的操作信息。
登录和退出存储库以及清理镜像需要配置好的 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 区域。 |
凭证类型 |
|
IAM 角色 ARN (仅适用于临时凭证) | 指定用于生成临时凭据的角色。 您需要在您的 AWS 控制台中提前创建此角色,并将其分配给所有必要的权限。 |
外部 ID (仅适用于临时凭证) | 指定一个 external ID。 我们强烈建议您在使用临时凭证时始终进行定义。 这确保了只有 TeamCity 能够使用指定的 IAM 角色。 |
默认凭据提供程序链 | 启用此选项,系统会根据 default chain 自动寻找访问密钥。 |
访问密钥 ID | 指定访问密钥 ID。 查看如何获取 这里。 |
密钥访问密钥 | 指定秘密访问密钥。 查看如何获取 这里。 |
注册表 ID | 输入您的注册表 ID 或 AWS 帐户。 |
Kotlin DSL
以下 Kotlin DSL 代码段演示了如何向您的构建配置中添加 Docker Support 构建功能。