5.3 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
Automatic Release Process ⭐
When a plugin update PR is merged to main branch, the release process is triggered automatically:
PR Merge Requirements
PRs that modify plugin files must meet the following conditions to merge:
- ✅ Version must be updated - The plugin's
versionfield must be changed - ✅ PR description must contain update notes - At least 20 characters of description
If these conditions are not met, the PR check will fail and cannot be merged.
Automatic Release Contents
After successful merge, the system will automatically:
- 🔍 Detect version changes (compared to last release)
- 📝 Generate release notes (with update content and commit history)
- 📦 Create GitHub Release (with downloadable plugin files)
- 🏷️ Auto-generate version number (format:
vYYYY.MM.DD-run_number)
Release Includes
- plugins_release.zip - All updated plugin files packaged
- plugin_versions.json - All plugin version information (JSON format)
- Release Notes - Includes:
- List of new/updated plugins
- Related commit history
- Complete plugin version table
- Installation instructions
Release Process
Step 1: Update Plugin Version
When you make changes to a plugin, you must update the version number:
"""
title: My Plugin
author: Fu-Jie
version: 0.2.0 # <- Must update this!
...
"""
Step 2: Create PR with Update Notes
Add update notes in your PR description (at least 20 characters):
## Changes
- Added XXX feature
- Fixed YYY issue
- Improved ZZZ performance
Step 3: Merge PR
After checks pass, merge the PR to main branch - the system will automatically create a Release.
Manual Release (Optional)
In addition to automatic release, you can also trigger manually:
Option A: Manual Trigger
- Go to GitHub Actions → "Plugin Release / 插件发布"
- Click "Run workflow"
- Fill in the details:
- version: e.g.,
v1.0.0(leave empty for auto-generation) - 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.,
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
Version Numbering
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features, backwards compatible
- PATCH: Bug fixes
Examples
| Change Type | Version Change |
|---|---|
| Bug fix | 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
release.yml
Triggers:
- ⭐ Push to
mainbranch withplugins/**/*.pychanges (auto-release) - Manual workflow dispatch
- Push of version tags (
v*)
Actions:
- Detects version changes compared to last release
- Collects updated plugin files
- Generates release notes (with commit history)
- Creates GitHub Release (with downloadable attachments)
plugin-version-check.yml
Trigger:
- Pull requests that modify
plugins/**/*.py
Actions:
- Compares plugin versions between base and PR
- Checks if version was updated
- Checks if PR description is detailed enough
- ❌ Fails if no version update detected
- ⚠️ Fails if PR description is too short
Scripts
extract_plugin_versions.py
Usage:
# Output to console
python scripts/extract_plugin_versions.py
# Output as JSON
python scripts/extract_plugin_versions.py --json
# Output as Markdown table
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 (required)
- Write clear PR descriptions describing what changed and why (required)
- Test locally before creating a PR
- Use pre-releases for testing new features
- Reference issues in PR descriptions
Installing All Plugins to Your Instance
After a release, you can quickly install all plugins to your OpenWebUI instance:
# Clone the repository
git clone https://github.com/Fu-Jie/openwebui-extensions.git
cd openwebui-extensions
# Configure API key and instance URL
echo "api_key=sk-your-api-key-here" > scripts/.env
echo "url=http://localhost:3000" >> scripts/.env
# For remote instances, set the appropriate baseURL:
# echo "url=http://192.168.1.10:3000" >> scripts/.env
# echo "url=https://openwebui.example.com" >> scripts/.env
# Install all plugins at once
python scripts/install_all_plugins.py
For detailed instructions, see Deployment Guide.
Author
Fu-Jie
GitHub: Fu-Jie/openwebui-extensions