在 Docker 中运行
在 Docker 中运行 构建功能允许您在同一个 Docker 或 Linux 容器中运行构建配置的所有步骤。 以下是可以在容器内启动的构建步骤列表:
不包含在此列表中的步骤将会在指定容器外运行。
note
Run in Docker 是 TeamCity-Docker/Podman 集成工具集的一部分。 请参考本文档文章,了解有关软件需求、支持的环境以及此集成的其他常见方面的信息: 将 TeamCity 与容器管理器集成。
TeamCity 提供了两种在容器内运行构建步骤的选项:
在 Docker 中运行 构建功能 — 指定此配置所有构建步骤通用的全局容器设置。
容器包装器 — 允许您在所需容器中运行单个步骤。
“Run in Docker”和“Container Wrapper”都提供相同的设置。
- 镜像名称
镜像名称如 DockerHub或其他注册表中所述。 TeamCity 将从指定的镜像启动一个容器,并尝试在此容器内运行所需的构建配置。 例如,`ruby:2.4` 将在 Ruby 容器(版本 2.4)中运行构建配置。
如果运行构建的代理安装了 Podman 而非 Docker,可以使用完整的镜像名称(例如,
docker.io/library/alpine:latest
,而非alpine:latest
),或确保在构建代理机器上的 registries.conf 文件中指定了注册表域。 另见: 如何管理 Linux 容器注册表。- 额外的运行参数
允许为
docker/podman run
命令指定其他选项。 默认参数是--rm
,但您可以提供更多参数。 例如,添加自定义卷映射。note
如果您需要在此字段中使用 环境变量 (例如,
%env.FOO%
),请注意 TeamCity 仅将构建配置和项目中声明的变量传递到容器中。 在 buildAgent.properties 文件中声明的代理特定环境变量不会传递到容器中。如果您需要在此文件中声明的参数,请执行以下操作:
在 buildAgent.properties 中定义一个系统属性 (
system.FOO=BAR
)。添加一个 构建配置参数 ,名称为
system.FOO
,值为%system.FOO%
。在“Additional run arguments”字段中将系统属性引用为
%system.FOO%
。如果您需要在构建脚本中将相同的值用作环境变量,您还可以添加一个名称为
env.FOO
,值为%system.FOO%
的构建配置参数。
以下代码片段说明了如何在 Kotlin DSL 中配置 在 Docker 中运行 功能:
object BuildConf : BuildType({
name = "BuildConf"
// ...
features {
runInDocker {
dockerImage = "python:latest"
dockerImagePlatform = RunInDockerBuildFeature.ImagePlatform.Linux
dockerPull = true
dockerRunParameters = "-a stdin -a stdout -i -t ubuntu /bin/bash"
}
}
})