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

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 Buildx │
│ 3. 登录镜像仓库 (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