mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 04:13:37 +08:00
5.4 KiB
5.4 KiB
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 版本 |
🏗️ 基本使用
最简配置
- name: 配置构建环境
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
完整配置
- 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 环境
- name: 配置 Docker 环境
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
skip-kubectl: "true"
仅 kubectl 环境
- name: 配置 Kubernetes 环境
uses: actions/xgj/setup-env@v1
with:
kube-config: ${{ secrets.KUBE_CONFIG }}
skip-docker-login: "true"
📝 完整工作流示例
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/
🔧 高级配置
自定义缓存策略
- name: 配置环境(自定义缓存)
uses: actions/xgj/setup-env@v1
with:
docker-password: ${{ secrets.DOCKER_PASSWORD }}
cache-key: 'env-${{ matrix.os }}-${{ hashFiles("Dockerfile") }}'
多环境部署
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 }}"
🛠️ 故障排除
常见问题
-
Docker 登录失败
- 检查
docker-password
是否正确设置 - 确认 Docker 仓库地址和用户名
- 检查
-
kubectl 连接失败
- 验证
kube-config
是否正确的 Base64 编码 - 检查集群网络连接
- 验证
-
缓存未命中
- 检查
cache-key
配置 - 确认文件哈希是否变化
- 检查
调试模式
启用详细日志输出:
- 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