diff --git a/release-web/README.md b/release-web/README.md index 007996f..f3fec01 100644 --- a/release-web/README.md +++ b/release-web/README.md @@ -2,16 +2,15 @@ [![GitHub](https://img.shields.io/badge/github-actions-blue.svg)](https://github.com/features/actions) -自动化 Web 项目发布流程的 GitHub Action,包括版本发布、Docker 镜像构建和推送等完整的 CI/CD 流程。 +自动化 Web 项目发布流程的 GitHub Action,专注于版本管理和发布核心功能。 ## 功能特性 -- 🚀 **自动化发布**: 支持 `release-it` 工具进行版本管理和发布 -- 🐳 **Docker 集成**: 自动构建和推送 Docker 镜像到私有仓库 -- 🏷️ **灵活标签**: 支持自定义 Docker 标签,自动生成版本标签 -- 📊 **Sentry 集成**: 可选的 Sentry 错误监控集成 -- 🔧 **高度可配置**: 丰富的输入参数满足不同项目需求 -- ✅ **参数验证**: 自动验证必需参数和文件存在性 +- 🚀 **自动化发布**: 支持任意发布命令进行版本管理和发布 +- 🌍 **环境变量支持**: 支持传递任意数量的环境变量给发布命令 +- 📦 **版本信息**: 自动获取和输出版本号信息 +- 🔧 **简洁配置**: 最小化配置,专注于发布核心功能 +- ✅ **灵活使用**: 可配置发布命令,适应不同项目需求 ## 快速开始 @@ -20,8 +19,8 @@ ```yaml - name: 发布Web项目 uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} ``` ### 使用环境变量 @@ -29,10 +28,9 @@ ```yaml - name: 发布Web项目 uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} env: # 🌍 可以传递任意数量的环境变量给发布命令 + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} APP_ENV: production SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_DSN: ${{ vars.SENTRY_DSN }} @@ -49,34 +47,21 @@ - name: 发布Web项目 uses: actions/xgj/release-web@main with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: "production" - sentry-auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} - sentry-dsn: ${{ vars.SENTRY_DSN }} - enable-sentry: "true" - docker-registry: "docker-registry.bjxgj.com" - dockerfile-path: "./container/prod/Dockerfile" - docker-tags: | - stable - v2024 + release-command: "npm run release -- --release -V" + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + APP_ENV: "production" + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_DSN: ${{ vars.SENTRY_DSN }} + SENTRY_VITE: "true" ``` ## 输入参数 -| 参数名 | 描述 | 必需 | 默认值 | -| --------------------- | ------------------------- | ---- | --------------------------------- | -| `gitea-token` | Gitea 访问令牌 | ✅ | - | -| `app-env` | 应用环境 | ❌ | `production` | -| `sentry-auth-token` | Sentry 认证令牌 | ❌ | - | -| `sentry-dsn` | Sentry DSN 配置 | ❌ | - | -| `enable-sentry` | 是否启用 Sentry | ❌ | `false` | -| `release-command` | 发布命令 | ❌ | `npm run release -- --release -V` | -| `docker-registry` | Docker 仓库地址 | ❌ | `docker-registry.bjxgj.com` | -| `docker-context` | Docker 构建上下文路径 | ❌ | `.` | -| `dockerfile-path` | Dockerfile 路径 | ❌ | `./container/dev/Dockerfile` | -| `docker-tags` | 额外的 Docker 标签 | ❌ | - | -| `enable-docker-build` | 是否执行 Docker 构建 | ❌ | `true` | -| `node-debug` | 是否启用 Node.js 调试模式 | ❌ | `false` | +| 参数名 | 描述 | 必需 | 默认值 | +| ----------------- | ------------------------- | ---- | --------------------------------- | +| `release-command` | 发布命令 | ❌ | `npm run release -- --release -V` | +| `node-debug` | 是否启用 Node.js 调试模式 | ❌ | `false` | ## 环境变量支持 @@ -84,10 +69,9 @@ Action 支持通过 `env` 传递**任意数量**的环境变量给发布命令 ```yaml - uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} env: # 🌍 任意环境变量都会自动传递给发布命令 + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} APP_ENV: production SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_TOKEN }} CUSTOM_VAR: "your-value" @@ -100,6 +84,7 @@ Action 支持通过 `env` 传递**任意数量**的环境变量给发布命令 | 环境变量名 | 描述 | 示例值 | | ------------------- | ---------------- | ----------------------------- | +| `GITEA_TOKEN` | Gitea 访问令牌 | `${{ secrets.GITEA_TOKEN }}` | | `APP_ENV` | 应用环境 | `production` | | `SENTRY_AUTH_TOKEN` | Sentry 认证令牌 | `${{ secrets.SENTRY_TOKEN }}` | | `SENTRY_DSN` | Sentry DSN 配置 | `${{ vars.SENTRY_DSN }}` | @@ -109,12 +94,10 @@ Action 支持通过 `env` 传递**任意数量**的环境变量给发布命令 ## 输出参数 -| 参数名 | 描述 | -| --------------------- | ------------------------ | -| `version` | 发布的版本号 | -| `version-with-dash` | 版本号(点号替换为横线) | -| `docker-image-digest` | Docker 镜像摘要 | -| `docker-image-tags` | Docker 镜像标签列表 | +| 参数名 | 描述 | +| ------------------- | ------------------------ | +| `version` | 发布的版本号 | +| `version-with-dash` | 版本号(点号替换为横线) | ## 使用场景 @@ -136,8 +119,8 @@ steps: - name: 发布项目 uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} ``` ### 2. 完整 CI/CD 流程 @@ -165,16 +148,12 @@ steps: - name: 发布构建 id: release uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }} - sentry-auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} - sentry-dsn: ${{ vars.SENTRY_DSN }} - enable-sentry: "true" - dockerfile-path: "./Dockerfile" - docker-tags: | - ${{ github.sha }} - ${{ github.ref_name }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + APP_ENV: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_DSN: ${{ vars.SENTRY_DSN }} + SENTRY_VITE: "true" - name: 部署到Kubernetes run: | @@ -200,37 +179,31 @@ strategy: steps: - name: 发布到 ${{ matrix.environment }} uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: ${{ matrix.app-env }} - dockerfile-path: ${{ matrix.dockerfile }} - docker-tags: ${{ matrix.environment }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + APP_ENV: ${{ matrix.app_env }} ``` ## 工作流程 -1. **参数验证**: 检查必需参数和文件是否存在 -2. **发布构建**: 执行 `release-it` 命令进行版本发布 -3. **获取版本**: 从 `/tmp/last-version` 读取新版本号 -4. **准备标签**: 生成 Docker 镜像标签列表 -5. **Docker 构建**: 构建并推送 Docker 镜像(可选) -6. **发布总结**: 输出发布信息和结果 +1. **发布构建**: 执行指定的发布命令进行版本发布 +2. **获取版本**: 从 `/tmp/last-version` 读取新版本号 +3. **发布总结**: 输出发布信息和结果 ## 依赖要求 ### 项目要求 - 包含 `package.json` 文件 -- 配置了 `release-it` 工具 +- 配置了发布工具(如 `release-it`) - 包含发布脚本(如 `npm run release`) -- Docker 构建需要有效的 `Dockerfile` +- 发布命令能够生成版本文件到 `/tmp/last-version` ### 环境依赖 - Node.js 环境 - npm/pnpm/yarn 包管理器 -- Docker(如果启用 Docker 构建) -- 配置好的 Docker 仓库访问权限 +- 配置好的 Gitea 访问权限 ## 配置示例 @@ -296,9 +269,9 @@ Action 会在以下情况报错并退出: ### 常见问题 -**Q: 版本文件不存在错误** +### Q: 版本文件不存在错误 -``` +```bash ❌ 错误: 版本文件 /tmp/last-version 不存在 ``` @@ -310,15 +283,7 @@ hooks: { } ``` -**Q: Docker 构建失败** - -A: 检查: - -1. Dockerfile 路径是否正确 -2. Docker 仓库是否已登录(使用 `actions/xgj/setup-env` action) -3. 构建上下文是否包含必需文件 - -**Q: Gitea Token 权限不足** +### Q: Gitea Token 权限不足 A: 确保 token 具有以下权限: @@ -332,8 +297,9 @@ A: 确保 token 具有以下权限: ```yaml - uses: actions/xgj/release-web@main with: - gitea-token: ${{ secrets.GITEA_TOKEN }} node-debug: "true" + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} ``` ## 更新日志 diff --git a/release-web/action.yml b/release-web/action.yml index 88e08a2..7a36410 100644 --- a/release-web/action.yml +++ b/release-web/action.yml @@ -7,18 +7,8 @@ branding: color: 'green' inputs: - gitea-token: - description: 'Gitea访问令牌' - required: true - - app-env: - description: '应用环境 (development, production等)' - required: false - default: 'production' - - release-command: - description: '发布命令,默认为 npm run release -- --release -V' + description: '发布命令,例如 npm run release -- --release -V' required: false default: 'npm run release -- --release -V' @@ -39,18 +29,6 @@ outputs: runs: using: 'composite' steps: - - name: 验证必需参数 - shell: bash - run: | - echo "🔍 验证输入参数..." - - if [[ -z "${{ inputs.gitea-token }}" ]]; then - echo "❌ 错误: gitea-token 参数是必需的" - exit 1 - fi - - echo "✅ 参数验证通过" - - name: 发布构建 shell: bash run: | @@ -60,8 +38,6 @@ runs: echo "✅ 发布构建完成" env: NODE_DEBUG: ${{ inputs.node-debug == 'true' && 'release-it:*' || '' }} - GITEA_TOKEN: ${{ inputs.gitea-token }} - APP_ENV: ${{ inputs.app-env }} - name: 获取版本信息 id: get_var @@ -91,4 +67,3 @@ runs: echo "" echo "📋 发布信息:" echo " - 版本号: ${{ steps.get_var.outputs.version }}" - echo " - 应用环境: ${{ inputs.app-env }}" diff --git a/release-web/examples/basic-release.yml b/release-web/examples/basic-release.yml index b535a20..28b53f3 100644 --- a/release-web/examples/basic-release.yml +++ b/release-web/examples/basic-release.yml @@ -32,9 +32,8 @@ jobs: - name: 发布构建 id: release uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: "production" + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} - name: 发布结果 run: | diff --git a/release-web/examples/environment-variables.yml b/release-web/examples/environment-variables.yml index 19e954c..073db0b 100644 --- a/release-web/examples/environment-variables.yml +++ b/release-web/examples/environment-variables.yml @@ -32,10 +32,9 @@ jobs: - name: 发布构建(环境变量配置) id: release uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} env: - # 🌍 任意数量的环境变量都会自动传递给 release-it 命令 + # 🌍 任意数量的环境变量都会自动传递给发布命令 + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} APP_ENV: "production" SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_DSN: ${{ vars.SENTRY_DSN }} @@ -56,10 +55,9 @@ jobs: - name: 多环境配置示例 uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} env: # 🎯 根据分支设置不同的环境变量 + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} APP_ENV: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }} SENTRY_VITE: ${{ github.ref == 'refs/heads/main' && 'true' || 'false' }} diff --git a/release-web/examples/full-cicd.yml b/release-web/examples/full-cicd.yml index 635a349..3b4aa52 100644 --- a/release-web/examples/full-cicd.yml +++ b/release-web/examples/full-cicd.yml @@ -72,9 +72,9 @@ jobs: - name: 发布构建 id: release uses: actions/xgj/release-web@main - with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: ${{ github.ref == 'refs/heads/main' && 'production' || 'develop' }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + APP_ENV: ${{ github.ref == 'refs/heads/main' && 'production' || 'develop' }} - name: 通知发布结果 run: | diff --git a/release-web/examples/multi-environment.yml b/release-web/examples/multi-environment.yml index dfe8fd2..d9f7642 100644 --- a/release-web/examples/multi-environment.yml +++ b/release-web/examples/multi-environment.yml @@ -65,9 +65,10 @@ jobs: id: release uses: actions/xgj/release-web@main with: - gitea-token: ${{ secrets.GITEA_TOKEN }} - app-env: ${{ matrix.app_env }} release-command: "npm run release -- --release -V --increment ${{ github.event.inputs.version_type }}" + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + APP_ENV: ${{ matrix.app_env }} - name: 部署应用 run: |