Files
BiliNote/RELEASING.md
huangjianwu b2af0e4e53 chore(repo): 仓库工具链——issue/PR 模板 + commitlint CI + 插件发版工作流
把 CONTRIBUTING.md 里写的规范落到 GitHub 工程化层。

Issue / PR 模板:
- .github/ISSUE_TEMPLATE/{config,bug_report,feature_request}.yml
  · yml 表单形式,跟随当前工作区分类(backend / frontend / extension / Tauri)
  · bug_report 强制选版本 + 部署方式 + 复现步骤;提交前自查不夹带 secrets
  · config.yml 禁用空白 issue,引导 Discussions
- .github/pull_request_template.md:把 CONTRIBUTING §5.2 的 PR 正文要求落成 checklist
- 删旧版 .md 模板(含中文文件名那条),避免新老两套并存

Commitlint:
- .commitlintrc.json:extend conventional + 自定义 type 白名单(feat/fix/docs/style/refactor/perf/test/build/ci/chore/ui/revert)
- .github/workflows/commitlint.yml:用 wagoid/commitlint-github-action@v6,PR + push develop/master 时校验
  · subject-case / subject-full-stop 关掉,兼容中文 subject
  · header-max-length 100 字符 warn 级别,不阻塞合并

插件发版工作流:
- .github/workflows/release-extension.yml:v* tag push 时
  · cd BillNote_extension && pnpm install + build
  · pack:zip / pack:xpi / pack:crx(crx 缺 key 自动跳过)
  · 产物重命名带版本后缀,挂到对应 GitHub Release
- 末尾保留 publish-chrome / publish-edge / publish-firefox 三段注释,配齐 secrets 即可启用商店自动发布
- RELEASING.md:发版执行手册,覆盖 release/* 流程 + 各商店人工上传步骤 + 自动发布所需 secrets

CONTRIBUTING.md 关联文档区指到新增的 RELEASING.md,commit 章节加 commitlint 落地说明。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 13:45:32 +08:00

159 lines
5.3 KiB
Markdown
Raw 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.
# 发版手册Release Manager
本文档面向**发版执行者**,覆盖从 `develop` 切发版到产物上架商店的完整步骤。日常分支与提交规范见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
---
## 流程总览
```
develop ──→ release/X.Y.Z ──→ PR ─→ master ──→ 打 tag vX.Y.Z
│ │ │
└──→ PR 回灌 ──→ develop └──→ CI 自动构建插件产物 + 挂到 GitHub Release
人工上传商店Chrome/Edge/Firefox
```
---
## 1. 切发布分支
```bash
git checkout develop && git pull origin develop
git checkout -b release/X.Y.Z
```
版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)`MAJOR.MINOR.PATCH`
## 2. 写 CHANGELOG更新版本号
`release/X.Y.Z` 上:
- 编辑 [`CHANGELOG.md`](./CHANGELOG.md),新增 `## [X.Y.Z] - YYYY-MM-DD` 段,按 Keep a Changelog 分类Added / Changed / Fixed / Removed / Security / Internal
- 编辑 [`README.md`](./README.md) 顶部标题中的版本号 + 新增"vX.Y.Z 新增"摘要段
- 重大变更也同步更新 [`CLAUDE.md`](./CLAUDE.md)
```bash
git commit -am "docs: vX.Y.Z CHANGELOG + README 版本"
git push -u origin release/X.Y.Z
```
## 3. 合并到 master + 回灌 develop
在 GitHub 上发起两个 PR
| PR | base | 合并方式 |
|---|---|---|
| `release/X.Y.Z``master` | `master` | **Merge commit (--no-ff)** |
| `release/X.Y.Z``develop` | `develop` | **Merge commit (--no-ff)** |
`master` 分支保护要求 review 通过。回灌 `develop` 是为了把发版冻结期内的小修同步回来。
## 4. 打 tag
```bash
git checkout master && git pull origin master
git tag -a vX.Y.Z -m "BiliNote vX.Y.Z
主线:
- ...
详见 CHANGELOG.md"
git push origin vX.Y.Z
```
push tag **会自动触发 [`.github/workflows/release-extension.yml`](.github/workflows/release-extension.yml)**:构建插件并把 `.zip` / `.xpi` / `.crx` 挂到对应 GitHub Release。
## 5. 创建 GitHub Release如果还没有
CI 默认会创建 / 更新 `vX.Y.Z` 对应的 Release。如果你想自己写 release notes
1. 打开 https://github.com/JefferyHcool/BiliNote/releases/new
2. Tag: 选 `vX.Y.Z`
3. Title: `vX.Y.Z`
4. Body: 直接贴 [`CHANGELOG.md`](./CHANGELOG.md) 的对应段
5. CI 跑完后 Release 页面会自动出现 `bilinote-extension-X.Y.Z.zip` / `.xpi` / `.crx`
## 6. 上传到各商店(人工)
商店审核普遍 1-3 个工作日。建议**先上 Chrome → Edge → Firefox**Edge 接受同一份 zip
### Chrome Web Store
1. https://chrome.google.com/webstore/devconsole
2. 选 BiliNote → 左侧 **Package****Upload new package**
3. 上传 `bilinote-extension-X.Y.Z.zip`
4. 检查 listing描述 / 图标 / 截图无变化可保持),点 **Submit for review**
### Microsoft Edge Add-ons
1. https://partner.microsoft.com/dashboard/microsoftedge
2. 选 BiliNote → **New submission**
3. 上传同一份 `.zip`Edge Add-ons 与 Chrome 完全兼容 MV3
4. 提交审核
### Firefox Add-ons (AMO)
1. https://addons.mozilla.org/developers/
2. 选 BiliNote → **Upload New Version**
3. 上传 `bilinote-extension-X.Y.Z.xpi`
4. 选择"在 AMO 公开"或"自托管"
5. 提交审核
### 桌面端 (Tauri)
仓库已有 GitHub Actions 在 `v*` tag 时构建桌面端安装包并自动挂到 GitHub Release无需额外操作。
## 7. 清理
```bash
# release 分支已合到 master 与 develop删掉
git push origin --delete release/X.Y.Z
git branch -d release/X.Y.Z
```
---
## 自动发布到商店(可选)
`.github/workflows/release-extension.yml` 末尾有三段商店自动发布的 job 注释。要启用:
1. 在 https://github.com/JefferyHcool/BiliNote/settings/secrets/actions 加 secrets
| 商店 | 需要的 secret |
|---|---|
| Chrome | `CHROME_EXTENSION_ID``CHROME_CLIENT_ID``CHROME_CLIENT_SECRET``CHROME_REFRESH_TOKEN` |
| Edge | `EDGE_PRODUCT_ID``EDGE_CLIENT_ID``EDGE_API_KEY` |
| Firefox | `FIREFOX_ADDON_UUID``FIREFOX_API_KEY``FIREFOX_API_SECRET` |
2. 解开 workflow 文件末尾的 `publish-chrome` / `publish-edge` / `publish-firefox` job 注释。
3. 推 tag 时即自动发布。
> Chrome 各 secret 的获取方式:[chrome-webstore-upload-cli 文档](https://github.com/fregante/chrome-webstore-upload-cli/blob/main/How%20to%20generate%20Google%20API%20keys.md)
> Edge[Edge Add-ons API](https://learn.microsoft.com/en-us/microsoft-edge/extensions-chromium/publish/api/using-addons-api)
> Firefoxhttps://addons.mozilla.org/en-US/developers/addon/api/key/
---
## 紧急 hotfix 发版
线上紧急问题不走 `release/*`,走 `hotfix/*`
```bash
git checkout master && git pull
git checkout -b hotfix/<scope>-<事项>
# … 修复 ...
# PR base=master 合入;同时 PR base=develop 回灌
```
合入 master 后通常打 patch tag`v2.1.1`CI 流程同上。
---
## 历史发布快查
| Version | Date | Tag |
|---|---|---|
| 2.1.0 | 2026-05-07 | [`v2.1.0`](https://github.com/JefferyHcool/BiliNote/releases/tag/v2.1.0) |
| 2.0.0 | (上游 web 端 v2.0.0) | [`v2.0.0`](https://github.com/JefferyHcool/BiliNote/releases/tag/v2.0.0) |