mcpField
D
docker-cicd

docker-cicd

github.com/full-stack-skills云与 DevOps3106 次安装4 周前更新
代码仓库

关于 docker-cicd

为 Docker 自动化构建、测试和部署流水线提供指导,面向配置容器镜像 CI/CD 的团队。内容包括 GitHub Actions、Jenkins、缓存、多平台构建及相关安全注意事项。

主要功能

  1. 01配置 GitHub Actions Docker 流水线
  2. 02编写 Jenkins Docker 流水线
  3. 03使用缓存加速 CI 构建
  4. 04在 CI 中执行多平台构建
  5. 05说明凭据与构建密钥的安全做法

适用场景

  1. 01在代码发布时自动构建并推送镜像
  2. 02为 CI 流水线配置镜像层缓存
  3. 03在流水线中构建多个平台的镜像
  4. 04管理 CI 中的仓库凭据与构建密钥

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/full-stack-skills/docker-skills --skill docker-cicd

安装后在 Claude Code 中输入/docker-cicd确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
examples/
01-github-actions.md
02-jenkins-pipeline.md
03-multi-arch-build.md
references/
01-buildx-multi-platform.md
02-build-cloud.md

详细介绍

Docker CI/CD — 持续集成与持续部署

关于将 Docker 集成到自动化构建、测试和部署流水线中的指南。

使用时机

用户提到以下内容时,务必使用此技能:

  • “docker CI”“docker CD”“CI/CD pipeline”
  • “GitHub Actions docker”“Jenkins docker”
  • “buildx”“multi-platform build”“多平台构建”
  • “Docker Build Cloud”
  • “镜像构建流水线”

GitHub Actions

构建并推送流水线
name: Build and Push
on:
  push:
    tags: ['v*']

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Build and push
        uses: docker/build-push-action@v6
        with:
          push: true
          tags: user/app:${{ github.ref_name }},user/app:latest
          cache-from: type=gha
          cache-to: type=gha,mode=max
多平台构建
- name: Build and push multi-platform
  uses: docker/build-push-action@v6
  with:
    platforms: linux/amd64,linux/arm64
    push: true
    tags: user/app:latest

Jenkins 流水线

pipeline {
    agent any
    environment {
        DOCKER_IMAGE = 'myapp'
        DOCKER_TAG = "${env.BUILD_NUMBER}"
    }
    stages {
        stage('Build') {
            steps {
                sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
            }
        }
        stage('Test') {
            steps {
                sh "docker run --rm ${DOCKER_IMAGE}:${DOCKER_TAG} npm test"
            }
        }
        stage('Push') {
            steps {
                withDockerRegistry([credentialsId: 'docker-hub']) {
                    sh "docker push ${DOCKER_IMAGE}:${DOCKER_TAG}"
                }
            }
        }
    }
}

CI 中的层缓存

# Pull previous image for layer cache
docker pull $IMAGE:latest || true
docker build \
  --cache-from $IMAGE:latest \
  --build-arg BUILDKIT_INLINE_CACHE=1 \
  -t $IMAGE:$TAG .

工作流 — 推荐 CI/CD 流程

步骤 1:配置 CI 环境:docker/login-action + docker/setup-buildx-action 步骤 2:构建镜像:docker/build-push-action + 使用仓库缓存加速 步骤 3:安全扫描:使用 docker/scout-action 扫描 CVE + 策略门禁 步骤 4:推送仓库:使用多个标签(semver + sha + latest)推送到 ghcr.io/Docker Hub 步骤 5:部署:ArgoCD/Flux 监听仓库变更并自动部署

注意事项 — 常见陷阱

  • CI 缓存未命中:如果不使用 --cache-from,每次 CI 构建都会从头开始。→ 恢复方法:构建前执行 docker pull myapp:latest || true;在 GitHub Actions 中使用 --cache-from type=gha。
  • CI 日志中的构建密钥:切勿 echo 或打印密钥。使用 buildx --secret 或 CI 密钥屏蔽功能。→ 恢复方法:使用 docker buildx build --secret id=npmrc,src=$HOME/.npmrc;检查 CI 日志中的 CI 密钥是否已屏蔽。
  • CI 磁盘空间不足:多阶段构建可能会占用 CI 磁盘空间。→ 恢复方法:在构建之间执行 docker system prune -af;使用 docker system df 监控磁盘空间。
  • 多平台模拟速度慢:在 AMD 上使用 QEMU 模拟 ARM 的速度较慢(约慢 10 倍)。→ 恢复方法:使用原生 ARM 运行器(例如 GitHub Actions ARM64 运行器),或使用 Docker Build Cloud 进行多平台构建。

边界 — 能力边界(适用与不适用场景)

分类场景说明
✅ 能做GitHub Actions Docker 集成docker/build-push-action + QEMU + multi-arch
✅ 能做Jenkins Pipeline DockerDocker agent + build/push/scan
✅ 能做多平台 CI 构建buildx + QEMU + 多架构 manifest
⚠️ 需条件Docker Build Cloud 加速需付费订阅
⚠️ 需条件非 GitHub/Jenkins CI参考通用模式适配
❌ 超范围Dockerfile 编写使用 docker-dockerfile
❌ 超范围K8s CD(ArgoCD/Flux)K8s 部署技能
❌ 超范围CI 平台搭建(Jenkins 安装)DevOps 基础设施

不适用时机

❌ 跳过✅ 改用
编写 Dockerfiledocker-build
安全扫描docker-security / docker-scout
生产环境部署docker-production
仓库管理docker-hub

安全与稳定性

  • 切勿在 CI 配置中硬编码仓库凭据。使用 CI 密钥管理器(GitHub Secrets、Jenkins Credentials)。
  • 使用 OIDC(OpenID Connect)进行云仓库身份验证,避免使用长期有效的凭据。
  • 将镜像推送到生产仓库前,使用 Docker Scout 扫描镜像。
  • 使用 SHA 摘要标记镜像,以便审计追踪:image:sha-${GITHUB_SHA::7}。
  • 定期轮换仓库令牌。切勿在 CI 中使用个人访问令牌。

📚 官方文档参考

文档地址
Docker 构建 CIhttps://docs.docker.com/build/ci/
Docker Build Cloudhttps://docs.docker.com/build-cloud/
GitHub Actions Dockerhttps://docs.docker.com/build/ci/github-actions/
Docker Scout CIhttps://docs.docker.com/scout/policy/ci/
Buildx CI 集成https://docs.docker.com/build/ci/github-actions/build-push-action/

🧭 Docker Skills Journey

📍 你在这里:docker-cicd — CI/CD 自动化

← 上一项:docker-build | → 下一项:docker-production

常见问题

Q1:如何快速上手此技能? A:参考上方的快速开始章节,按步骤操作即可。

Q2:遇到版本不兼容问题怎么办? A:检查依赖版本,使用 lock 文件锁定,并参考常见陷阱章节。

Q3:如何在生产环境中使用? A:参考最佳实践章节,确保配置正确,并做好监控和日志记录。

Q4:如何优化性能? A:参考性能优化相关文档,使用缓存、索引等手段。

Q5:如何贡献或反馈问题? A:在 GitHub 仓库中提交 Issue 或 Pull Request。

Q6:是否支持中文? A:支持中文文档和中文注释,详见国内适配章节。

评论

支持 Markdown