Docker
这是与 Woodpecker 一起使用的原始后端。Docker 后端在代理上启动的单独容器内执行每个步骤。
私有注册表
Woodpecker 支持 Docker 凭据 以安全地存储注册表凭据。安装相应的凭据帮助程序并通过 WOODPECKER_DOCKER_CONFIG 传递的 Docker 配置文件中配置它。
要将您的凭据帮助程序添加到 Woodpecker 服务器容器中,您可以使用以下代码构建自定义镜像:
FROM woodpeckerci/woodpecker-server:latest-alpine
RUN apk add -U --no-cache docker-credential-ecr-login
步骤特定配置
运行用户
默认情况下,Docker 后端在没有 --user 标志的情况下启动步骤容器。这意味着步骤容器将使用容器的默认用户。要更改此行为,您可以将 user 后端选项设置为首选用户/组:
steps:
- name: example
image: alpine
commands:
- whoami
backend_options:
docker:
user: 65534:65534
语法与 docker run --user 标志相同。
提示和技巧
镜像清理
代理 不会 自动从主机中删除镜像。此任务应由主机系统管理。例如,您可以使用 cron 作业定期为 CI 运行器执行清理任务。
以下命令 是破坏性的 和 不可逆的,强烈建议您在通过 cron 作业或其他自动化在生产环境中运行这些命令之前在您的系统上测试它们。
-
删除所有未使用的镜像
docker image rm $(docker images --filter "dangling=true" -q --no-trunc) -
删除 Woodpecker 卷
docker volume rm $(docker volume ls --filter name=^wp_* --filter dangling=true -q)
Podman
没有对 Podman 的官方支持,但可以尝试设置环境变量 DOCKER_HOST 以指向 Podman 套接字。它可能会工作。请参阅博客文章。
环境变量
BACKEND_DOCKER_NETWORK
- 名称:
WOODPECKER_BACKEND_DOCKER_NETWORK - 默认值: 无
设置为现有网络的名称,该网络将附加到您的所有管道容器(步骤)。请小心,因为这允许不同管道的容器相互访问!
BACKEND_DOCKER_ENABLE_IPV6
- 名称:
WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6 - 默认值:
false
为管道容器(步骤)使用的网络启用 IPv6。确保您已配置 Docker 守护程序以支持 IPv6。
BACKEND_DOCKER_VOLUMES
- 名称:
WOODPECKER_BACKEND_DOCKER_VOLUMES - 默认值: 无
逗号分隔的默认卷列表,将挂载到所有管道容器(步骤)。例如,要使用主机上安装的自定义 CA 证书和主机时区,请使用 /etc/ssl/certs:/etc/ssl/certs:ro,/etc/timezone:/etc/timezone。
BACKEND_DOCKER_LIMIT_MEM_SWAP
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_MEM_SWAP - 默认值:
0
单个管道容器允许交换到磁盘的最大内存量,以字节为单位配置。如果为 0 则无限制。
BACKEND_DOCKER_LIMIT_MEM
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_MEM - 默认值:
0
单个管道容器可以使用的最大内存量,以字节为单位配置。如果为 0 则无限制。
BACKEND_DOCKER_LIMIT_SHM_SIZE
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_SHM_SIZE - 默认值:
0
允许的 /dev/shm 最大内存量,以字节为单位。如果为 0 则无限制。
BACKEND_DOCKER_LIMIT_CPU_QUOTA
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_CPU_QUOTA - 默认值:
0
容器在被限制之前每个 CPU 周期的微秒数。如果为 0 则无限制。
BACKEND_DOCKER_LIMIT_CPU_SHARES
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_CPU_SHARES - 默认值:
0
相对于其他容器的相对权重。
BACKEND_DOCKER_LIMIT_CPU_SET
- 名称:
WOODPECKER_BACKEND_DOCKER_LIMIT_CPU_SET - 默认值: 无
逗号分隔的列表,用于限制管道容器可以使用的特定 CPU 或核心。
示例: WOODPECKER_BACKEND_DOCKER_LIMIT_CPU_SET=1,2