Kto-Blog

CI/CD Practice

CI/CD practice using GitHub Actions and Docker, automated build and push to Alibaba Cloud ACR

CI/CD Practice - Screenshot 1
Click to view larger
1 / 4

项目简介

这是一个完整的 CI/CD 实践示例,展示如何使用 GitHub Actions 实现自动化构建和部署流程。项目实现了代码提交后自动构建 Docker 镜像,并推送至阿里云容器镜像服务 (ACR) 私有仓库的完整流程。

技术栈

  • GitHub Actions - CI/CD 平台
  • Docker - 容器化技术
  • 阿里云 ACR - 容器镜像仓库
  • Docker Hub - 公共镜像仓库

工作流程

代码提交 (Push)
┌─────────────────────────────────────────────────────────────┐
GitHub Actions 工作流触发                      │
├─────────────────────────────────────────────────────────────┤
1. 代码检出 (Checkout)2. 设置 Docker Buildx3. 登录镜像仓库 (ACR/Docker Hub)4. 构建并推送镜像                                          │
5. 生成构建标签                                            │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
Docker 镜像构建                               │
├─────────────────────────────────────────────────────────────┤
│  • 多平台构建 (linux/amd64, linux/arm64)│  • 镜像标签管理 (latest, commit SHA, branch)│  • 构建缓存优化                                             │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│              推送至镜像仓库                                │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────────┐         ┌──────────────┐                │
│  │  阿里云 ACR   │         │  Docker Hub  │                │
  (私有仓库)  (公共仓库)   │                │
│  └──────────────┘         └──────────────┘                │
└─────────────────────────────────────────────────────────────┘

GitHub Actions 配置

name: Build and Push Docker Image

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

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

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

      - name: Login to ACR
        uses: docker/login-action@v2
        with:
          registry: ${{ secrets.ACR_REGISTRY }}
          username: ${{ secrets.ACR_USERNAME }}
          password: ${{ secrets.ACR_PASSWORD }}

      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          push: true
          tags: |
            ${{ secrets.ACR_REGISTRY }}/myapp:latest
            ${{ secrets.ACR_REGISTRY }}/myapp:${{ github.sha }}
          platforms: linux/amd64,linux/arm64

核心功能

1. 自动触发

  • Push 代码触发
  • Pull Request 触发
  • 手动触发
  • 定时触发

2. 多平台构建

  • AMD64 架构
  • ARM64 架构
  • 自动平台检测

3. 镜像管理

  • 多标签策略
  • 版本标签管理
  • 自动清理旧镜像

4. 安全配置

  • Secrets 管理
  • 访问令牌
  • 权限控制

最佳实践

镜像标签策略

  • latest - 最新稳定版本
  • <commit-sha> - 特定提交版本
  • <branch> - 分支版本
  • <version> - 语义化版本

构建优化

  • 使用构建缓存
  • 多阶段构建
  • 层缓存优化
  • 并行构建

项目特点

  • 完整的 CI/CD 流程
  • 多平台支持
  • 自动化程度高
  • 配置灵活
  • 易于维护

适用场景

  • 微服务部署
  • 自动化测试
  • 持续集成
  • 持续部署
  • DevOps 实践

源代码

查看源代码:Ktovoz/docker-push-Ali