139 lines
2.6 KiB
Markdown
139 lines
2.6 KiB
Markdown
# 发布流程指南
|
|
|
|
本文档说明当前项目的构建、发布和上传链路。
|
|
|
|
当前正式维护的是 Windows 发布流程。
|
|
|
|
## 1. 发布链路总览
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Prepare[release:prepare]
|
|
Build[build / build:win]
|
|
Updater[build:updater]
|
|
Publish[release:publish]
|
|
Upload[release:upload]
|
|
|
|
Prepare --> Build
|
|
Build --> Updater
|
|
Updater --> Publish
|
|
Publish --> Upload
|
|
```
|
|
|
|
## 2. 当前相关命令
|
|
|
|
```bash
|
|
npm run release:prepare
|
|
npm run build:win
|
|
npm run release:publish
|
|
npm run release:upload
|
|
```
|
|
|
|
以及构建相关命令:
|
|
|
|
```bash
|
|
npm run build
|
|
npm run build:updater
|
|
npm run build:unpack
|
|
```
|
|
|
|
## 3. 相关脚本
|
|
|
|
当前发布链路涉及这些脚本:
|
|
|
|
- `scripts/prepare-release.js`
|
|
- `scripts/publish-release.js`
|
|
- `scripts/upload-release.js`
|
|
- `scripts/compile-updater.js`
|
|
|
|
## 4. 构建阶段
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
Prebuild[prebuild]
|
|
Typecheck[typecheck]
|
|
Vite[electron-vite build]
|
|
Updater[compile-updater]
|
|
Builder[electron-builder --win]
|
|
|
|
Prebuild --> Typecheck --> Vite --> Updater --> Builder
|
|
```
|
|
|
|
这一阶段大致会完成:
|
|
|
|
- 清理旧产物
|
|
- 类型检查
|
|
- 构建 main / preload / renderer
|
|
- 构建更新相关产物
|
|
- 生成 Windows 安装包
|
|
|
|
## 5. 发布前建议检查
|
|
|
|
发布前建议确认:
|
|
|
|
- `npm run typecheck` 通过
|
|
- 关键测试通过
|
|
- `config.yaml` / 发布配置没有误改
|
|
- 更新目录与版本号符合预期
|
|
- release 文案、构建产物和上传目标一致
|
|
|
|
## 6. 更新链路关系
|
|
|
|
发布流程和 update 模块关系很强:
|
|
|
|
```mermaid
|
|
graph LR
|
|
Release[发布脚本]
|
|
Artifact[构建产物]
|
|
Storage[对象存储 / 发布目录]
|
|
Update[UpdateService]
|
|
Client[客户端 UpdateDialog]
|
|
|
|
Release --> Artifact
|
|
Artifact --> Storage
|
|
Storage --> Update
|
|
Update --> Client
|
|
```
|
|
|
|
也就是说,发布流程最终会直接影响:
|
|
|
|
- `UpdateCatalogService`
|
|
- `UpdateDialog`
|
|
- 客户端是否能正确检测与安装更新
|
|
|
|
## 7. 常见问题
|
|
|
|
### 7.1 构建失败
|
|
|
|
优先检查:
|
|
|
|
- `npm run typecheck`
|
|
- 更新编译脚本是否正常
|
|
- Windows 构建配置是否被误改
|
|
|
|
### 7.2 发布后客户端看不到更新
|
|
|
|
优先检查:
|
|
|
|
- 发布目录是否正确上传
|
|
- 版本号与 channel 是否正确
|
|
- update catalog 是否包含该版本
|
|
- 客户端 `UpdateService` 是否成功拉取目录
|
|
|
|
### 7.3 上传成功但安装失败
|
|
|
|
优先检查:
|
|
|
|
- `UpdateInstaller` 的下载与校验逻辑
|
|
- 产物哈希是否正确
|
|
- 客户端本地下载路径与安装流程
|
|
|
|
## 8. 相关文件
|
|
|
|
- `package.json`
|
|
- `electron-builder.yml`
|
|
- `scripts/prepare-release.js`
|
|
- `scripts/publish-release.js`
|
|
- `scripts/upload-release.js`
|
|
- `src/main/services/update/*`
|