feat: 增强 Web 项目发布构建的 GitHub Action,添加自定义版本文件路径支持,优化版本获取逻辑,确保版本号格式一致,更新文档以反映新功能和使用示例。

This commit is contained in:
Lyda
2025-08-20 17:53:45 +08:00
parent 59104cf204
commit c039fac36c
5 changed files with 342 additions and 18 deletions

View File

@@ -2,13 +2,13 @@
[![GitHub](https://img.shields.io/badge/github-actions-blue.svg)](https://github.com/features/actions)
自动化 Web 项目发布流程的 GitHub Action专注于版本管理和发布核心功能。
自动化 Web 项目发布流程的 GitHub Action专注于版本管理和发布核心功能,智能处理各种版本格式
## 功能特性
- 🚀 **自动化发布**: 支持任意发布命令进行版本管理和发布
- 🌍 **环境变量支持**: 支持传递任意数量的环境变量给发布命令
- 📦 **版本信息**: 自动获取和输出版本号信息
- 📦 **智能版本处理**: 自动获取版本号,确保输出格式一致(无 `v` 前缀)
- 🔧 **简洁配置**: 最小化配置,专注于发布核心功能
-**灵活使用**: 可配置发布命令,适应不同项目需求
@@ -56,12 +56,38 @@
SENTRY_VITE: "true"
```
### 自定义版本文件路径
```yaml
- name: 发布Web项目
uses: actions/xgj/release-web@main
with:
version-file: "./dist/version.txt" # 自定义版本文件位置
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
```
### 版本格式处理
Action 自动处理各种版本格式,确保输出一致:
```yaml
# 输入可能的格式:
# - 版本文件: "v1.2.3" 或 "1.2.3"
# - Git tag: "v1.2.3" 或 "1.2.3"
# - package.json: "v1.2.3" 或 "1.2.3"
# - 提交信息: "release: v1.2.3" 或 "release: 1.2.3"
# 输出始终为: "1.2.3" (不含 v 前缀)
```
## 输入参数
| 参数名 | 描述 | 必需 | 默认值 |
| ----------------- | ------------------------- | ---- | --------------------------------- |
| `release-command` | 发布命令 | ❌ | `npm run release -- --release -V` |
| `node-debug` | 是否启用 Node.js 调试模式 | ❌ | `false` |
| `version-file` | 自定义版本文件路径 | ❌ | `/tmp/last-version` |
## 环境变量支持
@@ -187,17 +213,22 @@ steps:
## 工作流程
1. **发布构建**: 执行指定的发布命令进行版本发布
2. **获取版本**: 从 `/tmp/last-version` 读取新版本号
2. **智能版本获取**: 通过多种方法自动获取版本号
- 优先从版本文件读取(`/tmp/last-version` 或自定义路径)
- 回退到最新 git tag自动去除 `v` 前缀)
- 回退到 `package.json` 中的版本
- 最后尝试从提交信息解析(支持 `v1.2.3``1.2.3` 格式)
- **所有方法都确保输出不包含 `v` 前缀**
3. **发布总结**: 输出发布信息和结果
## 依赖要求
### 项目要求
- 包含 `package.json` 文件
- 包含 `package.json` 文件(用于版本回退)
- 配置了发布工具(如 `release-it`
- 包含发布脚本(如 `npm run release`
- 发布命令能够生成版本文件到 `/tmp/last-version`
- 推荐发布命令生成版本文件到 `/tmp/last-version`(或自定义路径)
### 环境依赖
@@ -269,19 +300,44 @@ Action 会在以下情况报错并退出:
### 常见问题
### Q: 版本文件不存在错误
### Q: 无法获取版本信息
```bash
❌ 错误: 版本文件 /tmp/last-version 不存在
❌ 错误: 无法获取版本信息
```
A: 检查 `release-it` 配置是否包含创建版本文件的 hook
A: Action 会按优先级尝试多种方法获取版本
```javascript
hooks: {
'before:release': ['echo \'${version}\' > /tmp/last-version']
}
```
1. **版本文件** (推荐):确保发布命令创建版本文件
```javascript
// .release-it.js
hooks: {
'before:release': ['echo \'${version}\' > /tmp/last-version']
}
```
2. **Git Tags**:确保发布过程创建了 git tag
```bash
git tag v1.2.3
```
3. **package.json**:确保 package.json 包含有效的 version 字段
```json
{
"version": "1.2.3"
}
```
4. **提交信息**:在提交信息中包含版本号
```bash
git commit -m "release: 1.2.3"
# 或者
git commit -m "release: v1.2.3"
```
### Q: Gitea Token 权限不足