Some checks failed
Build and Push Docker Image to Aliyun Registry / build-and-push (push) Has been cancelled
Signed-off-by: Caijinglong <cjl_spy@163.com>
125 lines
3.0 KiB
Markdown
125 lines
3.0 KiB
Markdown
# GitHub Action 配置说明
|
||
|
||
## 概述
|
||
|
||
已为项目创建了 GitHub Action 工作流,用于自动构建 Docker 镜像并推送到阿里云容器镜像仓库。
|
||
|
||
## 配置文件
|
||
|
||
- **工作流文件**: `.github/workflows/docker-build-push.yml`
|
||
- **触发条件**:
|
||
- 推送到 `main` 分支
|
||
- 创建 tag(以 `v` 开头)
|
||
- Pull Request 到 `main` 分支
|
||
- 手动触发
|
||
|
||
## 必需的 GitHub Secrets
|
||
|
||
在 GitHub 仓库的 Settings > Secrets and variables > Actions 中添加以下 Secrets:
|
||
|
||
### 必需配置
|
||
- `ALIYUN_REGISTRY` - 阿里云镜像仓库地址
|
||
- 示例: `registry.cn-hangzhou.aliyuncs.com`
|
||
- `ALIYUN_USERNAME` - 阿里云镜像仓库用户名
|
||
- `ALIYUN_PASSWORD` - 阿里云镜像仓库密码
|
||
|
||
### 可选配置
|
||
- `IMAGE_NAME` - 镜像名称(可选)
|
||
- 如果不设置,将使用 GitHub 仓库名称
|
||
- 示例: `your-namespace/common-nginx-fpm`
|
||
|
||
## 镜像标签策略
|
||
|
||
工作流会自动生成以下标签:
|
||
|
||
### 分支推送
|
||
- `main` → `latest`, `alpine`
|
||
- 其他分支 → `branch-name`
|
||
|
||
### Tag 推送
|
||
- `v1.2.3` → `1.2.3`, `1.2`, `1`, `latest`, `alpine`
|
||
- `v2.0.0-beta.1` → `2.0.0-beta.1`
|
||
|
||
### Pull Request
|
||
- PR #123 → `pr-123`
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 单架构构建 (linux/amd64)
|
||
- ✅ 构建缓存优化
|
||
- ✅ 自动标签管理
|
||
- ✅ 元数据标签
|
||
- ✅ 构建状态输出
|
||
- ✅ 支持手动触发
|
||
|
||
## 使用示例
|
||
|
||
### 1. 配置 Secrets
|
||
|
||
```bash
|
||
# 在 GitHub 仓库设置中添加以下 Secrets:
|
||
ALIYUN_REGISTRY=registry.cn-hangzhou.aliyuncs.com
|
||
ALIYUN_USERNAME=your-username
|
||
ALIYUN_PASSWORD=your-password
|
||
IMAGE_NAME=your-namespace/common-nginx-fpm # 可选
|
||
```
|
||
|
||
### 2. 触发构建
|
||
|
||
```bash
|
||
# 方式1: 推送到 main 分支
|
||
git push origin main
|
||
|
||
# 方式2: 创建版本标签
|
||
git tag v1.0.0
|
||
git push origin v1.0.0
|
||
|
||
# 方式3: 在 GitHub 网页上手动触发
|
||
# Actions > Build and Push Docker Image to Aliyun Registry > Run workflow
|
||
```
|
||
|
||
### 3. 使用构建的镜像
|
||
|
||
```bash
|
||
# 拉取最新版本
|
||
docker pull registry.cn-hangzhou.aliyuncs.com/your-namespace/common-nginx-fpm:latest
|
||
|
||
# 拉取特定版本
|
||
docker pull registry.cn-hangzhou.aliyuncs.com/your-namespace/common-nginx-fpm:v1.0.0
|
||
|
||
# 运行容器
|
||
docker run -d -p 80:80 registry.cn-hangzhou.aliyuncs.com/your-namespace/common-nginx-fpm:latest
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 1. 认证失败
|
||
- 检查 `ALIYUN_USERNAME` 和 `ALIYUN_PASSWORD` 是否正确
|
||
- 确认阿里云账号有推送权限
|
||
|
||
### 2. 镜像仓库不存在
|
||
- 在阿里云控制台创建对应的镜像仓库
|
||
- 确认 `ALIYUN_REGISTRY` 和 `IMAGE_NAME` 配置正确
|
||
|
||
### 3. 构建失败
|
||
- 查看 GitHub Actions 日志
|
||
- 检查 Dockerfile 语法
|
||
- 确认依赖包可用性
|
||
|
||
## 安全建议
|
||
|
||
1. **使用专用账号**: 为 CI/CD 创建专用的阿里云子账号
|
||
2. **最小权限**: 只授予必要的镜像推送权限
|
||
3. **定期轮换**: 定期更新密码和访问密钥
|
||
4. **监控日志**: 定期检查构建和推送日志
|
||
|
||
## 扩展功能
|
||
|
||
如需添加更多功能,可以考虑:
|
||
|
||
- 多架构构建 (linux/amd64, linux/arm64)
|
||
- 安全扫描集成
|
||
- 构建通知 (Slack, 钉钉等)
|
||
- 自动部署到测试环境
|
||
- 镜像签名验证
|