Files
xgj/setup-env/README.md

200 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Setup Build Environment Action
这是一个用于配置构建和部署环境的 GitHub Action专门为 CI/CD 流水线设计。它能够自动安装和配置 Docker、kubectl 以及其他必要的构建工具。
## 🚀 特性
- ✅ 自动配置 Git 用户信息
- 🐳 安装 Docker CLI 和相关插件
- ☸️ 安装和配置 kubectl
- 🗄️ 智能缓存机制,提高构建速度
- 🌏 支持阿里云镜像源,提升国内访问速度
- 🔐 自动登录私有 Docker 仓库
- 📋 详细的日志输出和错误处理
- ⚡ 灵活的配置选项
## 📋 输入参数
| 参数名 | 描述 | 必填 | 默认值 |
| ------------------- | ------------------------------ | ---- | --------------------------- |
| `docker-registry` | Docker 私有仓库地址 | ❌ | `docker-registry.bjxgj.com` |
| `docker-username` | Docker 仓库用户名 | ❌ | `ci-action` |
| `docker-password` | Docker 仓库密码 | ✅ | - |
| `kube-config` | Base64 编码的 kubectl 配置文件 | ❌ | `''` |
| `cache-key` | 缓存键值 | ❌ | `setup-env` |
| `use-aliyun-mirror` | 是否使用阿里云镜像源 | ❌ | `true` |
| `git-user-name` | Git 用户名 | ❌ | `GiteaActions` |
| `git-user-email` | Git 用户邮箱 | ❌ | `actions@gitea.com` |
| `skip-kubectl` | 跳过 kubectl 安装和配置 | ❌ | `false` |
| `skip-docker-login` | 跳过 Docker 登录 | ❌ | `false` |
## 📤 输出参数
| 参数名 | 描述 |
| ----------------- | ------------------- |
| `cache-hit` | 缓存是否命中 |
| `kubectl-version` | 安装的 kubectl 版本 |
| `docker-version` | 安装的 Docker 版本 |
## 🏗️ 基本使用
### 最简配置
```yaml
- name: 配置构建环境
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
```
### 完整配置
```yaml
- name: 配置构建环境
uses: actions/xgj/setup-env@v1
with:
docker-registry: "your-registry.com"
docker-username: "your-username"
docker-password: ${{ secrets.DOCKER_PASSWORD }}
kube-config: ${{ secrets.KUBE_CONFIG }}
cache-key: "my-project-env"
use-aliyun-mirror: "true"
git-user-name: "CI Bot"
git-user-email: "ci@yourcompany.com"
```
### 仅 Docker 环境
```yaml
- name: 配置 Docker 环境
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
skip-kubectl: "true"
```
### 仅 kubectl 环境
```yaml
- name: 配置 Kubernetes 环境
uses: actions/xgj/setup-env@v1
with:
kube-config: ${{ secrets.KUBE_CONFIG }}
skip-docker-login: "true"
```
## 📝 完整工作流示例
```yaml
name: Build and Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 配置构建环境
id: setup
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
kube-config: ${{ secrets.KUBE_CONFIG }}
cache-key: "build-${{ github.sha }}"
- name: 检查环境信息
run: |
echo "缓存命中: ${{ steps.setup.outputs.cache-hit }}"
echo "Docker 版本: ${{ steps.setup.outputs.docker-version }}"
echo "kubectl 版本: ${{ steps.setup.outputs.kubectl-version }}"
- name: 构建 Docker 镜像
run: |
docker build -t my-app:latest .
- name: 部署到 Kubernetes
run: |
kubectl apply -f k8s/
```
## 🔧 高级配置
### 自定义缓存策略
```yaml
- name: 配置环境(自定义缓存)
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
cache-key: 'env-${{ matrix.os }}-${{ hashFiles("Dockerfile") }}'
```
### 多环境部署
```yaml
strategy:
matrix:
environment: [dev, staging, prod]
steps:
- name: 配置环境
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
kube-config: ${{ secrets[format('KUBE_CONFIG_{0}', matrix.environment)] }}
cache-key: "deploy-${{ matrix.environment }}"
```
## 🛠️ 故障排除
### 常见问题
1. **Docker 登录失败**
- 检查 `docker-password` 是否正确设置
- 确认 Docker 仓库地址和用户名
2. **kubectl 连接失败**
- 验证 `kube-config` 是否正确的 Base64 编码
- 检查集群网络连接
3. **缓存未命中**
- 检查 `cache-key` 配置
- 确认文件哈希是否变化
### 调试模式
启用详细日志输出:
```yaml
- name: 配置环境(调试模式)
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
env:
ACTIONS_STEP_DEBUG: true
```
## 📋 环境要求
- **操作系统**: Ubuntu 18.04+, Debian 10+
- **权限**: 需要 sudo 权限安装软件包
- **网络**: 需要访问外部软件包仓库
## 🔒 安全考虑
- 使用 GitHub Secrets 存储敏感信息
- 定期更新依赖版本
- 限制 kubectl 权限范围
- 使用最小权限原则
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
## 📄 许可证
MIT License