Files
Fu-Jie_openwebui-extensions/docs/release-workflow.zh.md

221 lines
5.1 KiB
Markdown
Raw Permalink 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.
# 插件发布工作流
本文档描述了发布插件更新的工作流程。
---
## 概述
发布工作流包含以下组件:
1. **CHANGELOG.md** - 记录所有重要更改
2. **版本提取脚本** - 自动提取插件版本信息
3. **GitHub Actions 工作流** - 自动化发布流程
---
## 自动发布流程 ⭐
当插件更新的 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 # <- 必须更新这里!
...
"""
```
### 第 2 步:创建 PR 并添加更新说明
在 PR 描述中说明更新内容(至少 20 个字符):
```markdown
## 更新内容
- 新增 XXX 功能
- 修复 YYY 问题
- 优化 ZZZ 性能
```
### 第 3 步:合并 PR
满足检查条件后,合并 PR 到 `main` 分支,系统会自动创建 Release。
---
## 手动发布(可选)
除了自动发布,您也可以手动触发发布:
### 方式 A手动触发
1. 前往 GitHub Actions → "Plugin Release / 插件发布"
2. 点击 "Run workflow"
3. 填写详细信息:
- **version**: 例如 `v1.0.0`(留空则自动生成)
- **release_title**: 例如 "智能思维导图重大更新"
- **release_notes**: Markdown 格式的附加说明
- **prerelease**: 如果是预发布版本则勾选
### 方式 B基于标签的发布
```bash
# 创建并推送版本标签
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
```
---
## 版本编号
我们遵循[语义化版本](https://semver.org/lang/zh-CN/)
- **主版本 (MAJOR)**: 不兼容的 API 变更
- **次版本 (MINOR)**: 向后兼容的新功能
- **补丁版本 (PATCH)**: 向后兼容的 Bug 修复
### 示例
| 变更类型 | 版本变化 |
|---------|---------|
| Bug 修复 | 0.1.0 → 0.1.1 |
| 新功能 | 0.1.1 → 0.2.0 |
| 不兼容变更 | 0.2.0 → 1.0.0 |
---
## GitHub Actions 工作流
### release.yml
**触发条件:**
- ⭐ 推送到 `main` 分支且修改了 `plugins/**/*.py`(自动发布)
- 手动触发 (workflow_dispatch)
- 推送版本标签 (`v*`)
**动作:**
1. 检测与上次 Release 的版本变化
2. 收集更新的插件文件
3. 生成发布说明(含提交记录)
4. 创建 GitHub Release含可下载附件
### plugin-version-check.yml
**触发条件:**
- 修改 `plugins/**/*.py` 的 Pull Request
**动作:**
1. 比较基础分支和 PR 的插件版本
2. 检查是否有版本更新
3. 检查 PR 描述是否足够详细
4. ❌ 如果没有版本更新,检查失败
5. ⚠️ 如果 PR 描述过短,检查失败
---
## 脚本使用
### extract_plugin_versions.py
```bash
# 输出到控制台
python scripts/extract_plugin_versions.py
# 输出为 JSON
python scripts/extract_plugin_versions.py --json
# 输出为 Markdown 表格
python scripts/extract_plugin_versions.py --markdown
# 与之前版本比较
python scripts/extract_plugin_versions.py --compare old_versions.json
# 保存到文件
python scripts/extract_plugin_versions.py --json --output versions.json
```
---
## 最佳实践
1. **始终更新版本号** - 对插件进行功能性更改时(必需)
2. **编写清晰的 PR 描述** - 描述更改内容和原因(必需)
3. **本地测试** - 在创建 PR 之前
4. **使用预发布** - 测试新功能
5. **引用 issue** - 在 PR 描述中
---
## 批量安装所有插件到你的实例
在发布之后,你可以快速将所有插件安装到 OpenWebUI 实例:
```bash
# 克隆仓库
git clone https://github.com/Fu-Jie/openwebui-extensions.git
cd openwebui-extensions
# 配置 API 密钥和实例地址
echo "api_key=sk-your-api-key-here" > scripts/.env
echo "url=http://localhost:3000" >> scripts/.env
# 如果是远程实例,需要设置相应的 baseURL
# echo "url=http://192.168.1.10:3000" >> scripts/.env
# echo "url=https://openwebui.example.com" >> scripts/.env
# 一次性安装所有插件
python scripts/install_all_plugins.py
```
详细说明请参考 [部署指南](https://github.com/Fu-Jie/openwebui-extensions/blob/main/scripts/DEPLOYMENT_GUIDE.md)。
---
## 作者
Fu-Jie
GitHub: [Fu-Jie/openwebui-extensions](https://github.com/Fu-Jie/openwebui-extensions)