Files
CipherTalk/scripts/README.md
T
2026-04-02 03:27:11 +08:00

150 lines
3.5 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.
# 📦 发布说明
## 触发方式
当前仓库不再使用本地 `npm run tuisong` 发布。
正式发布方式改为:
1. 修改 `package.json` 中的版本号
2. 提交代码并推送到 `main`
3. 推送一个与版本号完全一致的 Git tag,例如:
```bash
git tag v2.2.14
git push origin v2.2.14
```
只有推送 `v*` 标签时,GitHub Actions 才会自动构建和发布。
## GitHub Actions 会做什么
`.github/workflows/release.yml` 会在 `v*` 标签触发后执行:
当前工作流已拆成串并行 job
- `prepare-meta`
- `build-windows`
- `generate-release-body`
- `publish-github-release`
- `mirror-r2`
- `notify-telegram-success`
- `notify-failure`
其中:
1. `prepare-meta` 生成 `force-update.json``release-context.json`
2. `build-windows` 负责构建安装包和 `latest.yml`
3. `generate-release-body` 负责 AI / 模板版发布说明
4. `publish-github-release` 汇总产物并创建 GitHub Release
5. `mirror-r2``notify-telegram-success` 在发布成功后并行执行
GitHub Release 上传内容:
- 安装包
- `latest.yml`
- `force-update.json`
- 若存在则上传 `.blockmap`
Cloudflare R2 同步内容:
- 安装包
- `latest.yml`
- `force-update.json`
Telegram 通知:
- 成功时发送 AI 摘要通知
- 失败时发送失败通知
GitHub Release 资产包括:
- 安装包
- `latest.yml`
- `force-update.json`
- 若存在则上传 `.blockmap`
10. 向 Telegram 频道/群发送发布通知(AI 摘要 + 强制更新提醒)
## 版本要求
标签名必须与 `package.json.version` 完全对应:
- `package.json.version = 2.2.14`
- Git tag 必须是 `v2.2.14`
如果不一致,工作流会直接失败。
## 强制更新策略
工作流会调用:
```bash
npm run build:force-update-manifest
```
默认情况下不会触发强制更新。只有在仓库 Variables / Secrets 中提供以下值时,生成的 `force-update.json` 才会带上对应策略:
- `FORCE_UPDATE_MIN_VERSION`
- `FORCE_UPDATE_BLOCKED_VERSIONS`
- `FORCE_UPDATE_TITLE`
- `FORCE_UPDATE_MESSAGE`
- `FORCE_UPDATE_RELEASE_NOTES`
## Secrets / Variables
### Cloudflare R2 Secrets
需要在 GitHub 仓库配置以下 Secrets
- `R2_ACCOUNT_ID`
- `R2_BUCKET_NAME`
- `R2_ACCESS_KEY_ID`
- `R2_SECRET_ACCESS_KEY`
### 可选强制更新 Variables / Secrets
可以按需配置:
- `FORCE_UPDATE_MIN_VERSION`
- `FORCE_UPDATE_BLOCKED_VERSIONS`
- `FORCE_UPDATE_TITLE`
- `FORCE_UPDATE_MESSAGE`
- `FORCE_UPDATE_RELEASE_NOTES`
不配置时,`force-update.json` 仍会生成,但只包含当前版本信息,不会强制用户升级。
### AI Release Body Secret
发布工作流会自动生成标准化 Release body。
需要在 GitHub Environment `软件发布` 中配置:
- `GLM_KEY`
用途:
- 调用智谱 `glm-4.7-flash`
- 自动生成中文 Release 说明
- 若 AI 不可用,会自动降级为模板正文,不影响发版
### Telegram 通知配置
如果需要自动发 Telegram 通知,请在 GitHub Environment `软件发布` 中配置:
- Secret:
- `TELEGRAM_BOT_TOKEN`
- Variable:
- `TELEGRAM_CHAT_IDS`
- `TELEGRAM_RELEASE_COVER_URL`(可选)
说明:
- `TELEGRAM_CHAT_IDS` 支持多个目标,用英文逗号分隔
- 可填写频道用户名或群/频道 chat_id
- 成功发布时会发送 AI 摘要版通知
- 发布失败时会发送失败通知
## 当前更新源角色
- **GitHub Release**:主更新源,负责安装包与 `latest.yml`
- **Cloudflare R2**:镜像下载源 + 策略补充源
- **force-update.json**GitHub 优先,R2 回退