name: release description: 使用基于前缀的标签工作流为单库插件创建新版本发布。当用户明确要求“发布”或“创建发布”时使用。
发布技能
使用基于前缀的标签工作流为单库插件创建新版本发布。
何时使用
- 用户明确要求“发布”或“创建发布”
- 用户要求“发布”或“发布”新版本
- 用户要求“标记”版本
- 用户说“让我们发布v0.2.0”或类似
插件识别
这是一个单库,包含多个插件。首先,确定要发布的插件:
| 插件 | 版本文件 | 标签格式 | 示例 |
|---|---|---|---|
| Stash Downloader | plugins/stash-downloader/package.json |
downloader-vX.Y.Z |
downloader-v0.5.2 |
| Stash Browser | plugins/stash-browser/package.json |
browser-vX.Y.Z |
browser-v0.1.0 |
如果用户没有指定,询问要发布哪个插件。如果两个都改变了,分别发布。
发布前检查清单
在创建发布之前,验证:
- 在开发分支上:
git branch --show-current - 没有未提交的更改:
git status - 类型检查通过:
npm run type-check - 通过lint:
npm run lint - 测试通过:
npm test -- --run - 构建成功:
npm run build
基于标签的发布过程
第1步:确定版本提升
- 检查当前版本:读取插件的
package.json版本字段 - 查看自上次标签以来的提交:
git log $(git describe --tags --match "downloader-v*" --abbrev=0)..HEAD --oneline(或Browser的browser-v*) - 确定提升类型:
| 提交类型 | 提升 | 示例 |
|---|---|---|
破坏性变更(feat!:, BREAKING CHANGE) |
主要 | 0.1.0 → 1.0.0 |
新功能(feat:) |
次要 | 0.1.0 → 0.2.0 |
错误修复,补丁(fix:, docs:, chore:) |
补丁 | 0.1.0 → 0.1.1 |
第2步:合并开发到主分支并发布
对于Stash Downloader:
# 从开发分支,检出主分支并合并
git checkout main
git merge dev
# 在插件的package.json中更新版本
cd plugins/stash-downloader
npm version patch # 或次要/主要
# 提交版本提升
git add .
git commit -m "$(cat <<'COMMIT'
🔖 chore: release downloader-vX.Y.Z
🤖 由 [Claude Code](https://claude.com/claude-code) 生成
共同作者:Claude Opus 4.5 <noreply@anthropic.com>
COMMIT
)"
# 创建并推送标签(带有downloader-前缀!)
git tag downloader-vX.Y.Z
git push origin main --tags
对于Stash Browser:
# 从开发分支,检出主分支并合并
git checkout main
git merge dev
# 在插件的package.json中更新版本
cd plugins/stash-browser
npm version patch # 或次要/主要
# 提交版本提升
git add .
git commit -m "$(cat <<'COMMIT'
🔖 chore: release browser-vX.Y.Z
🤖 由 [Claude Code](https://claude.com/claude-code) 生成
共同作者:Claude Opus 4.5 <noreply@anthropic.com>
COMMIT
)"
# 创建并推送标签(带有browser-前缀!)
git tag browser-vX.Y.Z
git push origin main --tags
第3步:等待并同步开发
⚠️ 重要:不要立即推送到开发!
GitHub Pages使用并发组。如果在稳定工作流完成之前推送到开发,稳定部署会被取消。
# 1. 等待工作流完成
# 检查:https://github.com/Codename-11/Stash-Downloader/actions
# 2. 工作流完成后,同步开发与主分支
git checkout dev
git merge main
git push origin dev
发布标签后会发生什么
GitHub Actions自动:
- 运行CI(类型检查,lint,测试)
- 构建插件
- 更新GitHub Pages(Stash插件索引)
- 生成AI发布说明(如果配置了GOOGLE_API_KEY)
- 创建GitHub发布,包括:
- 自动生成的变更日志
- 安装说明
- 附加的ZIP文件
如果发布被取消
如果你不小心太早推送到开发并取消了稳定部署:
# 重新推送标签以再次触发工作流
git push origin --delete downloader-vX.Y.Z # 或browser-vX.Y.Z
git push origin downloader-vX.Y.Z
基于PR的发布(可选)
对于你希望在合并前由Claude审查的重要发布:
# 从开发创建发布分支
git checkout -b release/downloader-vX.Y.Z dev
# 在插件的package.json中更新版本,提交
cd plugins/stash-downloader
npm version patch
git add .
git commit -m "🔖 chore: release downloader-vX.Y.Z"
# 推送并创建PR到主分支
git push -u origin release/downloader-vX.Y.Z
gh pr create --base main --title "🔖 Release downloader-vX.Y.Z" --body "发布说明..."
# PR合并后,检出主分支并标记
git checkout main
git pull origin main
git tag downloader-vX.Y.Z
git push origin downloader-vX.Y.Z
重要说明
- 标签格式必须包含插件前缀:
downloader-vX.Y.Z或browser-vX.Y.Z - 插件的
package.json中的版本必须与标签版本匹配(无前缀) - 始终从开发分支开始 - 永远不要直接提交到主分支
- 等待工作流完成 后再同步开发
- 推送到
main没有标签会触发任何操作 - 在推送标签后验证GitHub Actions中的发布是否成功
- 分别发布插件 - 如果两个插件都改变了,创建单独的标签