!Authelia
 功能,结合 Buildkite 支持 Authelia 持续集成 (CI) 流程中的自动化集成测试。当基础镜像 docker:dind 更新时,本镜像会自动重建。
本镜像采用 LinuxServer.io 团队开发的 Alpine 基础镜像,在此致谢。
核心功能与特性
- Docker-in-Docker 支持:基于
docker:dind,允许在容器内运行 Docker 命令,满足构建过程中嵌套容器需求。
- 自动更新机制:基础镜像
docker:dind 更新时自动触发本镜像重建,确保底层依赖安全性。
- 轻量基础:采用 Alpine 基础镜像,体积小、资源占用低。
- 多缓存共享:支持 SSH 密钥、构建缓存、Go 依赖、pnpm 存储等数据持久化与共享。
- 灵活配置:通过环境变量自定义 Agent 名称、令牌、标签、优先级等参数。
- 权限管理:支持通过 PUID/PGID 指定用户/组 ID,避免主机与容器间权限冲突。
- 扩展钩子:提供钩子目录,支持自定义构建生命周期(如环境变量注入、前置/后置操作)。
使用场景与适用范围
- Authelia CI 流程:主要用于 Authelia 项目的持续集成,执行自动化测试、构建和部署任务。
- 通用 CI/CD 环境:适用于需要 DinD 能力的构建场景,如多阶段构建、容器化应用测试等。
- 分布式构建节点:支持多节点部署,结合本地 registry 缓存提升构建效率。
使用方法和配置说明
前提条件
- 已安装 Docker 和 Docker Compose(如需使用 Compose 部署)。
- 拥有 Buildkite 账号及有效的 Agent 令牌(从 Buildkite 项目设置中获取)。
部署示例
Docker 命令行部署
bash
docker create \
--name=buildkite1 \
-e BUILDKITE_AGENT_NAME=命名节点1 \ # 构建节点名称
-e BUILDKITE_AGENT_TOKEN=你的令牌 \ # Buildkite Agent 令牌
-e BUILDKITE_AGENT_TAGS=标签=值,更多标签=值 \ # 节点标签(逗号分隔)
-e BUILDKITE_AGENT_PRIORITY=优先级 \ # 节点优先级
-e PUID=1000 \ # 用户ID(避免权限问题)
-e PGID=1000 \ # 组ID(避免权限问题)
-e TZ=Australia/Melbourne \ # 时区设置
-v <数据路径>/ssh:/buildkite/.ssh \ # SSH密钥目录(用于Git克隆)
-v <数据路径>/cache:/buildkite/.cache \ # 构建缓存目录(共享Go、Lint缓存)
-v <数据路径>/go:/buildkite/.go \ # Go依赖目录($GOPATH)
-v <数据路径>/pnpm-store:/buildkite/.local/share/pnpm/store \ # pnpm缓存目录
-v <数据路径>/hooks:/buildkite/hooks \ # 自定义钩子目录(如环境变量注入)
--restart unless-stopped \ # 非停止状态下自动重启
--privileged \ # 需特权模式以支持DinD
authelia/buildkite
Docker Compose 部署
兼容 Docker Compose v2 架构。示例包含一个节点,可扩展为多节点配置(项目仓库中提供含三节点和本地 registry 缓存的完整示例)。
yaml
---
version: "2.1"
services:
buildkite1:
image: authelia/buildkite
container_name: buildkite1
privileged: true # 启用特权模式
volumes:
- <数据路径>/ssh:/buildkite/.ssh # SSH密钥目录
- <数据路径>/cache:/buildkite/.cache # 构建缓存目录
- <数据路径>/go:/buildkite/.go # Go依赖目录
- <数据路径>/pnpm-store:/buildkite/.local/share/pnpm/store # pnpm缓存目录
- <数据路径>/hooks:/buildkite/hooks # 自定义钩子目录
restart: unless-stopped # 自动重启策略
environment:
- BUILDKITE_AGENT_NAME=命名节点1 # 节点名称
- BUILDKITE_AGENT_TOKEN=你的令牌 # Agent令牌
- BUILDKITE_AGENT_TAGS=标签=值,更多标签=值 # 节点标签
- BUILDKITE_AGENT_PRIORITY=优先级 # 节点优先级
- PUID=1000 # 用户ID
- PGID=1000 # 组ID
- TZ=Australia/Melbourne # 时区
配置参数详解
| 参数 | 功能说明 |
|---|
-e BUILDKITE_AGENT_NAME=命名节点1 | Agent 名称,用于标识构建节点 |
-e BUILDKITE_AGENT_TOKEN=你的令牌 | Agent 令牌,Buildkite 项目的认证令牌 |
-e BUILDKITE_AGENT_TAGS=标签=值,更多标签=值 | 节点标签,格式为 键=值,逗号分隔,用于任务调度匹配 |
-e BUILDKITE_AGENT_PRIORITY=优先级 | 节点优先级,数值越高优先级越高 |
-e PUID=1000 | 用户 ID,用于解决主机与容器间文件权限冲突(可通过 id 用户名 命令获取当前用户 UID) |
-e PGID=1000 | 组 ID,同上(获取当前用户 GID) |
-e TZ=Australia/Melbourne | 时区设置,如 Asia/Shanghai(中国标准时间) |
-v /buildkite/.ssh | SSH 密钥目录,存放 id_rsa 和 id_rsa.pub,用于 Git 仓库克隆 |
-v /buildkite/.cache | 构建缓存目录,共享 Go 构建缓存、golangci-lint 缓存等 |
-v /buildkite/.go | Go 工作目录($GOPATH),共享依赖以加速构建 |
-v /buildkite/.local/share/pnpm/store | pnpm 存储目录,共享 Node.js 依赖缓存 |
-v /buildkite/hooks | Agent 钩子目录,如 environment 钩子可注入密钥(如 DOCKER_USERNAME、GITHUB_TOKEN) |
用户/组 ID 说明
使用 -v 挂载卷时,主机与容器的用户/组 ID 可能不一致,导致权限错误。通过 PUID 和 PGID 指定与主机一致的 ID,可避免此问题。
获取当前用户 ID:
bash
id 用户名
# 示例输出:uid=1000(用户) gid=1000(组) 组=1000(组)
将输出的 uid 和 gid 分别作为 PUID 和 PGID 的值。
版本更新日志
- 2025-09-19:更新 buildkite agent(v3.107.0)、goreleaser(v2.12.2)、pnpm(v10.17.0)
- 2025-09-16:更新 buildkite agent(v3.106.0),新增 goreleaser(v2.12.1)、grype(v1.33.0)
- 2025-09-16:更新 buildkite agent(v3.105.0)、helm(v3.19.0)、pnpm(v10.16.1),新增 syft(v1.33.0)
- 2025-09-08:更新 buildkite agent(v3.104.0)、pnpm(v10.15.1)、buildx(v0.27.0)、reviewdog(v0.21.0),新增 apt,移除 gitleaks
- 2025-08-26:新增 .editorconfig,Dockerfile 改用 RUN Heredoc 语法
- 2025-08-26:回滚 helm 至 v3.18.4
- 2025-08-26:在 dockersetup 脚本中拉取 authelia/crossbuild 容器
- 2025-08-26:更新 pnpm(v10.15.0)、buildx(v0.27.0)、helm(v3.18.6),移除 eslint、musl-cc
- 2025-08-15:更新 buildkite agent(v3.103.1)、golangci-lint(v2.4.0)、pnpm(v10.14.0)、helm(v3.18.5)、kubectl(v1.33.4)
- 2025-07-24:更新 buildkite agent(v3.103.0)、buildx(v0.26.1)、golangci-lint(v2.3.0),新增 gitleaks(v8.28.0)
- 2025-07-12:更新 buildkite agent(v3.102.0)、pnpm(v10.13.1)、golangci-lint(v2.2.2)、helm(v3.18.4)
- 2025-07-04:更新 buildkite agent(v3.101.0)
- 2025-07-02:更新 buildkite agent(v3.100.1)、pnpm(v10.12.4)、buildx(v0.25.0)、musl-cross(20250520)、s6-overlay(v3.2.1.0)、golangci-lint(v2.2.1)、chart-testing(v3.13.0)、helm(v3.18.3)、kubectl(v1.33.2)
- 2025-05-04:更新 buildkite agent(v3.97.0)、pnpm(v10.10.0)、buildx(v0.23.0)、helm(v3.17.3)、kubectl(v1.33.0)
- 2025-03-11:更新 buildkite agent(v3.93.1)、pnpm(v10.6.2)、buildx(v0.21.2)、golangci-lint(v1.64.6)
- 2025-02-17:更新 pnpm(v10.4.1)、musl-cross(20250206)
- 2025-02-16:更新 buildkite agent(v3.92.1)、pnpm(v10.4.0)、golangci-lint(v1.64.5)、helm(v3.17.1)、kubectl(v1.32.2)
- 2025-02-08:更新 buildkite agent(v3.91.0)、pnpm(v10.2.1)
- 2025-01-23:更新 buildkite agent(v3.90.0)、pnpm(v9.15.4)、buildx(v0.20.1)、golangci-lint(v1.63.4)、reviewdog(v0.20.3)、chart-testing(v3.12.0)、helm(v3.17.0)、kubectl(v1.32.1)
- 2024-12-04:更新 buildkite agent(v3.87.1)、pnpm(v9.14.4)、buildx(v0.19.1)、musl-cross(20241103)、s6-overlay(v3.2.0.2)、golangci-lint(v1.62.2)、helm(v3.16.3)、kubectl(v1.31.3)
- 2024-10-19:修复 buildx 配置和容器权限
- 2024-10-10:更新 buildkite agent(v3.83.1)、pnpm(v9.12.1)
- 2024-10-01:更新 dockerd 服务以正确处理 cgroups,清理服务依赖
- 2024-09-26:将 musl 交叉编译器替换为 musl-cross/musl-cross
- 2024-09-26:更新 buildkite agent(v3.82.1)、pnpm(v9.11.0)、s6(v3.2.0.0)、reviewdog(v0.20.2)、kubectl(v1.31.1),移除 chromedriver,固定 chromium 为 alpine 3.19 版本
- 2024-09-16:降级 kubectl 至 v1.31.0
- 2024-09-15:更新 buildkite agent(v3.81.0)、pnpm(v9.10.0)、buildx(v0.17.1)、golangci-lint(v1.61.0)、helm(v3.16.1)、kubectl(v1.31.1)
- 2024-09-08:更新 buildkite agent(v3.80.0)、pnpm(v9.9.0)、golangci-lint(v1.60.3)、helm(v3.15.4)、chart-testing(v3.11.0)
- 2024-08-14:更新 buildkite agent(v3.77.0)、pnpm(v9.7.0)、golangci-lint(v1.60.1)、reviewdog(v0.20.1)、buildx(v0.16.2)、helm(v3.15.3)、kubectl(v1.30.1)
- 2024-06-10:更新 buildkite agent(v3.73.1)、pnpm(v9.2.0)、golangci-lint(v1.59.1)、reviewdog(v0.17.5)、buildx(v0.14.1)、helm(v3.15.1)、kubectl(v1.30.1)
- 2024-04-19:更新 buildkite agent(v3.70.0)、pnpm(v9.0.4)、buildx(v0.14.0)、kubectl(v1.31.0)
- 2024-04-19:使用自定义 cr 版本
- 2024-04-17:修复 ESLint 版本
- 2024-04-17:更新 pnpm(v9.0.1)、golangci-lint(v1.57.2)、reviewdog(v0.17.3)、helm(v3.14.4)、kubectl(v1.29.4)
- 2024-04-13:更新 buildkite agent(v3.69.0)、pnpm(v8.15.6)
- 2024-03-19:更新 buildx(v0.13.1)、reviewdog(v0.17.2)
- 2024-03-13:更新 buildkite agent(v3.66.0)
- 2024-03-06:更新 buildkite agent(v3.65.0)、pnpm(v8.15