buildkite/agentBuildkite Agent Docker 镜像是用于在 Docker 环境中运行 Buildkite Agent 的官方镜像。Buildkite Agent 是 Buildkite CI/CD 平台的客户端组件,负责接收和执行来自 Buildkite 服务的构建任务,支持自动化构建、测试和部署流程。该镜像提供了便捷的容器化部署方式,简化了 Agent 的配置与管理。
3)和精确版本标签(如 3.0.1),满足不同环境需求。/docker-entrypoint.d/ 目录自定义启动流程,无需修改 ENTRYPOINT。buildkite/agent 或 buildkite/agent:latest:默认指向最新稳定版(当前为 3.x 系列)。buildkite/agent:3:推荐用于新部署,指向 3.x 系列的最新稳定版。buildkite/agent:<版本号>:指定精确版本(如 3.0.1),适用于需要版本固定的场景。可访问 Docker Hub 标签页 查看所有可用版本。
查看 Agent 帮助信息:
bashdocker run --rm buildkite/agent:3 --help
大多数 Agent 配置项 可通过环境变量设置。注意:敏感数据(如 Agent Token)不建议通过环境变量或命令行参数传递,因为会在 docker inspect 等命令中暴露。
推荐通过挂载配置文件进行配置,文件路径为容器内 /buildkite/buildkite-agent.cfg。示例:
bashdocker run -it \ -v "$HOME/buildkite-agent.cfg:/buildkite/buildkite-agent.cfg:ro" \ buildkite/agent:3
配置文件格式参考 Buildkite Agent 配置文档。
钩子(hooks)用于自定义构建流程(如环境准备、构建前后操作),需挂载或复制到容器内 /buildkite/hooks 目录,并确保可执行。
通过只读卷挂载主机钩子目录:
bashdocker run -it \ -v "$HOME/buildkite-hooks:/buildkite/hooks:ro" \ buildkite/agent:3
buildkite-hooks 目录下的文件(如 environment、pre-checkout)将作为钩子执行。
基于官方镜像添加钩子:
dockerfileFROM buildkite/agent:3 ADD ./hooks /buildkite/hooks/ # 确保钩子可执行 RUN chmod +x /buildkite/hooks/*
构建过程中需使用的机密(如密钥、证书)可通过只读卷挂载到容器内。推荐将主机机密目录挂载为只读数据卷。
示例:挂载主机 $HOME/buildkite-secrets 目录到容器 /buildkite-secrets:
bashdocker run -it \ -v "$HOME/buildkite-secrets:/buildkite-secrets:ro" \ buildkite/agent:3
可通过 environment 钩子将机密暴露为环境变量或配置工具(如 git、ssh)。
若机密目录包含 Git 凭据文件(如 /buildkite-secrets/git-credentials),可通过 environment 钩子配置 Git:
$HOME/buildkite-hooks/environment:bash#!/bin/bash set -euo pipefail git config --global credential.helper "store --file=/buildkite-secrets/git-credentials" # 可添加其他环境变量 # export API_KEY=$(cat /buildkite-secrets/api-key)
bashdocker run -it \ -v "$HOME/buildkite-hooks:/buildkite/hooks:ro" \ -v "$HOME/buildkite-secrets:/buildkite-secrets:ro" \ buildkite/agent:3
若机密目录包含 SSH 密钥(如 /buildkite-secrets/id_rsa_buildkite_git),通过 environment 钩子配置 SSH:
$HOME/buildkite-hooks/environment:bash#!/bin/bash set -euo pipefail eval "$(ssh-agent -s)" ssh-add -k /buildkite-secrets/id_rsa_buildkite_git # 可添加其他环境变量 # export SSH_PASSPHRASE=$(cat /buildkite-secrets/ssh-passphrase)
ssh-agent,将其套接字挂载到容器(如 -v $SSH_AUTH_SOCK:/ssh-agent,并设置 SSH_AUTH_SOCK=/ssh-agent)。若构建任务需执行 Docker 命令(如构建镜像),需将主机 Docker 套接字挂载到容器:
bashdocker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ buildkite/agent:3
注意:此配置赋予构建任务与主机 Docker 相同的权限(通常为 root 权限),需谨慎使用。
镜像 Entrypoint 使用 tini 管理子进程信号传递。如需自定义启动流程,不建议重定义 ENTRYPOINT,推荐将可执行脚本复制到 /docker-entrypoint.d/ 目录。脚本需满足:
示例:添加自定义初始化脚本 my-init-script:
dockerfileFROM buildkite/agent:3 ADD my-init-script /docker-entrypoint.d/ RUN chmod +x /docker-entrypoint.d/my-init-script
以下示例整合配置文件、钩子、机密和 Docker 套接字挂载:
bashdocker run -d \ --name buildkite-agent \ -v "$HOME/buildkite-agent.cfg:/buildkite/buildkite-agent.cfg:ro" \ -v "$HOME/buildkite-hooks:/buildkite/hooks:ro" \ -v "$HOME/buildkite-secrets:/buildkite-secrets:ro" \ -v /var/run/docker.sock:/var/run/docker.sock \ buildkite/agent:3
创建 docker-compose.yml:
yamlversion: '3' services: buildkite-agent: image: buildkite/agent:3 volumes: - ./buildkite-agent.cfg:/buildkite/buildkite-agent.cfg:ro - ./hooks:/buildkite/hooks:ro - ./secrets:/buildkite-secrets:ro - /var/run/docker.sock:/var/run/docker.sock restart: always
启动命令:docker-compose up -d

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务