4.8 KiB
4.8 KiB
构建与发布流程
本文档说明 ERPAuto Windows 便携版的当前构建与发布方式,包括推荐的一键发布命令、分步命令,以及发布产物在对象存储中的结构。
概览
当前发布链路分为 3 个阶段:
- 构建 Windows 包
- 生成本地发布物料和索引
- 上传到对象存储并校验远端索引
现在已经提供一键总控脚本:
npm run release:publish -- --channel stable
或:
npm run release:publish -- --channel preview
发布前准备
发布前需要确认:
- package.json 和 package-lock.json 的版本号已经改到目标版本
- config.yaml 中
update配置正确,且对象存储可访问 - 对应版本的 changelog 已存在于
docs/releases/
changelog 自动查找规则如下:
- 优先查找
docs/releases/<version>-rebuild.md - 如果不存在,再查找
docs/releases/<version>.md
例如当前版本是 1.3.6,脚本会按顺序尝试:
docs/releases/1.3.6-rebuild.md
docs/releases/1.3.6.md
推荐流程:一键发布
发布 Stable
npm run release:publish -- --channel stable
发布 Preview
npm run release:publish -- --channel preview
这个命令会自动完成:
- 读取当前
package.json版本号 - 校验
package.json/package-lock.json版本一致 - 校验 changelog 文件存在
- 设置
APP_CHANNEL - 执行
build:win - 执行
release:prepare - 执行
release:upload --verify - 输出本次发布摘要
分步流程
如果需要调试,也可以手工分步执行。
1. 构建
Stable:
$env:APP_CHANNEL="stable"
npm run build:win
Preview:
$env:APP_CHANNEL="preview"
npm run build:win
2. 生成发布物料
npm run release:prepare -- --channel stable --changelog docs/releases/1.3.6.md
或:
npm run release:prepare -- --channel preview --changelog docs/releases/1.3.6.md
这一步会生成:
release-output/updates/win-portable/<channel>/artifacts/...release-output/updates/win-portable/<channel>/changelogs/...release-output/updates/win-portable/<channel>/index.json
3. 上传并校验
npm run release:upload -- --channel stable --verify
或:
npm run release:upload -- --channel preview --verify
上传策略
当前上传脚本默认采用“增量上传”:
- 上传当前版本对应的
artifact - 上传当前版本对应的
changelog - 上传最新的
index.json
也就是说,它不会再把旧版本的 exe 和旧 changelog 全部重复上传。
如果确实需要整条通道做一次全量同步,可以显式使用:
npm run release:upload -- --channel stable --full-sync
对象存储目录结构
发布到对象存储后的目录结构如下:
updates/win-portable/
├── stable/
│ ├── artifacts/
│ │ └── erpauto-<version>-stable-portable.exe
│ ├── changelogs/
│ │ └── <version>.md
│ └── index.json
└── preview/
├── artifacts/
│ └── erpauto-<version>-preview-portable.exe
├── changelogs/
│ └── <version>.md
└── index.json
相关脚本
- publish-release.js 一键总控脚本,负责串起 build、prepare、upload。
- prepare-release.js
负责整理本地发布物料和生成
index.json。 - upload-release.js
负责上传当前版本物料和
index.json,并可回读远端索引。 - compile-updater.js
负责构建原生
portable-updater.exe。
常见问题
1. 缺少 --channel
会直接失败,因为发布必须显式指定 stable 或 preview。
2. 找不到 changelog
说明 docs/releases/ 下没有当前版本对应的 Markdown 文件。
先补 changelog,再执行发布。
3. 版本不是当前通道最新
总控脚本在 prepare 后会检查本地生成的 index.json。
如果当前版本不是该通道索引的第一项,脚本会停止,避免把旧版本误当成当前发布版本。
4. 只想调试某一步
可以直接使用分步命令:
npm run build:winnpm run release:prepare -- ...npm run release:upload -- ...
建议
日常发布优先使用:
npm run release:publish -- --channel <stable|preview>
只有在排查问题或需要特殊处理时,再退回分步命令。