Enhance release workflow with auto-release on merge and PR validation

Co-authored-by: Fu-Jie <33599649+Fu-Jie@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-12-31 12:06:31 +00:00
parent 10bddd2026
commit 5b8750c438
4 changed files with 457 additions and 196 deletions

View File

@@ -14,51 +14,88 @@
---
## 自动发布流程 ⭐
当插件更新的 PR 合并到 `main` 分支时,会**自动触发**发布流程:
### PR 合并要求
修改插件文件的 PR 必须满足以下条件才能合并:
1.**版本号必须更新** - 插件的 `version` 字段必须有变化
2.**PR 描述必须包含更新说明** - 至少 20 个字符的描述
如果不满足这些条件PR 检查会失败,无法合并。
### 自动发布内容
合并成功后,系统会自动:
1. 🔍 检测版本变化(与上次 release 对比)
2. 📝 生成发布说明(包含更新内容和提交记录)
3. 📦 创建 GitHub Release包含可下载的插件文件
4. 🏷️ 自动生成版本号(格式:`vYYYY.MM.DD-运行号`
### Release 包含内容
- **plugins_release.zip** - 本次更新的所有插件文件打包
- **plugin_versions.json** - 所有插件版本信息 (JSON 格式)
- **发布说明** - 包含:
- 新增/更新的插件列表
- 相关提交记录
- 所有插件版本表
- 安装说明
---
## 发布流程
### 第 1 步:更新插件版本
当您对插件进行更改时,更新插件文档字符串中的版本号:
当您对插件进行更改时,**必须**更新插件文档字符串中的版本号:
```python
"""
title: 我的插件
author: Fu-Jie
version: 0.2.0 # <- 更新这里
version: 0.2.0 # <- 必须更新这里
...
"""
```
### 第 2 步:更新更新日志
### 第 2 步:创建 PR 并添加更新说明
`CHANGELOG.md``[Unreleased]` 部分添加您的更改
PR 描述中说明更新内容(至少 20 个字符)
```markdown
## [Unreleased] / 未发布
## 更新内容
### Added / 新增
- 智能思维导图新功能
### Changed / 变更
- 性能优化
### Fixed / 修复
- 修复导出 bug
- 新增 XXX 功能
- 修复 YYY 问题
- 优化 ZZZ 性能
```
### 第 3 步:创建发布
### 第 3 步:合并 PR
#### 方式 A手动发布推荐
满足检查条件后,合并 PR 到 `main` 分支,系统会自动创建 Release。
---
## 手动发布(可选)
除了自动发布,您也可以手动触发发布:
### 方式 A手动触发
1. 前往 GitHub Actions → "Plugin Release / 插件发布"
2. 点击 "Run workflow"
3. 填写详细信息:
- **version**: 例如 `v1.0.0`
- **version**: 例如 `v1.0.0`(留空则自动生成)
- **release_title**: 例如 "智能思维导图重大更新"
- **release_notes**: Markdown 格式的附加说明
- **prerelease**: 如果是预发布版本则勾选
#### 方式 B基于标签的发布
### 方式 B基于标签的发布
```bash
# 创建并推送版本标签
@@ -66,25 +103,6 @@ git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
```
这将自动触发发布工作流。
### 第 4 步:完成更新日志
发布后,将 `[Unreleased]` 的内容移动到新的版本部分:
```markdown
## [Unreleased] / 未发布
<!-- 暂时为空 -->
## [1.0.0] - 2024-01-15
### Added / 新增
- 智能思维导图新功能
### Plugin Updates / 插件更新
- `Smart Mind Map / 思维导图`: v0.7.0 → v0.8.0
```
---
## 版本编号
@@ -110,13 +128,15 @@ git push origin v1.0.0
### release.yml
**触发条件:**
- ⭐ 推送到 `main` 分支且修改了 `plugins/**/*.py`(自动发布)
- 手动触发 (workflow_dispatch)
- 推送版本标签 (`v*`)
**动作:**
1. 提取所有插件版本
2. 生成发布说明
3. 创建 GitHub Release
1. 检测与上次 Release 的版本变化
2. 收集更新的插件文件
3. 生成发布说明(含提交记录)
4. 创建 GitHub Release含可下载附件
### plugin-version-check.yml
@@ -125,7 +145,10 @@ git push origin v1.0.0
**动作:**
1. 比较基础分支和 PR 的插件版本
2. 在 PR 上评论版本变化
2. 检查是否有版本更新
3. 检查 PR 描述是否足够详细
4. ❌ 如果没有版本更新,检查失败
5. ⚠️ 如果 PR 描述过短,检查失败
---
@@ -154,11 +177,11 @@ python scripts/extract_plugin_versions.py --json --output versions.json
## 最佳实践
1. **始终更新版本号** - 对插件进行功能性更改时
2. **编写清晰的更新日志** - 描述更改内容和原因
3. **本地测试** - 在创建发布之前
1. **始终更新版本号** - 对插件进行功能性更改时(必需)
2. **编写清晰的 PR 描述** - 描述更改内容和原因(必需)
3. **本地测试** - 在创建 PR 之前
4. **使用预发布** - 测试新功能
5. **引用 issue** - 在适用时在更新日志条目
5. **引用 issue** - 在 PR 描述
---