5.4 KiB
Plugin Release Workflow / 插件发布工作流
This document describes the workflow for releasing plugin updates.
本文档描述了发布插件更新的工作流程。
Overview / 概述
The release workflow consists of the following components:
发布工作流包含以下组件:
- CHANGELOG.md - Records all notable changes / 记录所有重要更改
- Version Extraction Script - Automatically extracts plugin versions / 自动提取插件版本
- GitHub Actions Workflows - Automates the release process / 自动化发布流程
Release Process / 发布流程
Step 1: Update Plugin Version / 更新插件版本
When you make changes to a plugin, update the version number in the plugin's docstring:
当您对插件进行更改时,更新插件文档字符串中的版本号:
"""
title: My Plugin
author: Fu-Jie
version: 0.2.0 # <- Update this / 更新这里
...
"""
Step 2: Update CHANGELOG / 更新更新日志
Add your changes to the [Unreleased] section in CHANGELOG.md:
在 CHANGELOG.md 的 [Unreleased] 部分添加您的更改:
## [Unreleased] / 未发布
### Added / 新增
- New feature in Smart Mind Map / 智能思维导图新功能
### Changed / 变更
- Improved performance / 性能优化
### Fixed / 修复
- Fixed bug in export / 修复导出 bug
Step 3: Create a Release / 创建发布
Option A: Manual Release (Recommended) / 手动发布(推荐)
-
Go to GitHub Actions → "Plugin Release / 插件发布"
-
Click "Run workflow"
-
Fill in the details:
- version: e.g.,
v1.0.0 - release_title: e.g., "Smart Mind Map Major Update"
- release_notes: Additional notes in Markdown
- prerelease: Check if this is a pre-release
- version: e.g.,
-
前往 GitHub Actions → "Plugin Release / 插件发布"
-
点击 "Run workflow"
-
填写详细信息:
- version: 例如
v1.0.0 - release_title: 例如 "智能思维导图重大更新"
- release_notes: Markdown 格式的附加说明
- prerelease: 如果是预发布版本则勾选
- version: 例如
Option B: Tag-based Release / 基于标签的发布
# Create and push a version tag / 创建并推送版本标签
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
This will automatically trigger the release workflow.
这将自动触发发布工作流。
Step 4: Finalize CHANGELOG / 完成更新日志
After the release, move the [Unreleased] content to a new version section:
发布后,将 [Unreleased] 的内容移动到新的版本部分:
## [Unreleased] / 未发布
<!-- Empty for now / 暂时为空 -->
## [1.0.0] - 2024-01-15
### Added / 新增
- New feature in Smart Mind Map
### Plugin Updates / 插件更新
- `Smart Mind Map`: v0.7.0 → v0.8.0
Version Numbering / 版本编号
We follow Semantic Versioning:
我们遵循语义化版本:
- MAJOR (主版本): Breaking changes / 不兼容的变更
- MINOR (次版本): New features, backwards compatible / 新功能,向后兼容
- PATCH (补丁版本): Bug fixes / Bug 修复
Examples / 示例
| Change Type / 变更类型 | Version Change / 版本变化 |
|---|---|
| Bug fix / Bug 修复 | 0.1.0 → 0.1.1 |
| New feature / 新功能 | 0.1.1 → 0.2.0 |
| Breaking change / 不兼容变更 | 0.2.0 → 1.0.0 |
GitHub Actions Workflows / GitHub Actions 工作流
release.yml
Trigger / 触发条件:
- Manual workflow dispatch / 手动触发
- Push of version tags (
v*) / 推送版本标签
Actions / 动作:
- Extracts all plugin versions / 提取所有插件版本
- Generates release notes / 生成发布说明
- Creates GitHub Release / 创建 GitHub Release
plugin-version-check.yml
Trigger / 触发条件:
- Pull requests that modify
plugins/**/*.py/ 修改plugins/**/*.py的 PR
Actions / 动作:
- Compares plugin versions between base and PR / 比较基础分支和 PR 的插件版本
- Comments on PR with version changes / 在 PR 上评论版本变化
Scripts / 脚本
extract_plugin_versions.py
Usage / 用法:
# Output to console / 输出到控制台
python scripts/extract_plugin_versions.py
# Output as JSON / 输出为 JSON
python scripts/extract_plugin_versions.py --json
# Output as Markdown table / 输出为 Markdown 表格
python scripts/extract_plugin_versions.py --markdown
# Compare with previous version / 与之前版本比较
python scripts/extract_plugin_versions.py --compare old_versions.json
# Save to file / 保存到文件
python scripts/extract_plugin_versions.py --json --output versions.json
Best Practices / 最佳实践
-
Always update version numbers when making functional changes to plugins
- 对插件进行功能性更改时始终更新版本号
-
Write clear changelog entries describing what changed and why
- 编写清晰的更新日志条目,描述更改内容和原因
-
Test locally before creating a release
- 在创建发布之前本地测试
-
Use pre-releases for testing new features
- 使用预发布测试新功能
-
Reference issues in changelog entries when applicable
- 在适用时在更新日志条目中引用 issue
Author
Fu-Jie
GitHub: Fu-Jie/awesome-openwebui