Files
BIPMaterialManager/docs/build-and-release-guide.md
2026-03-20 23:15:41 +08:00

4.8 KiB
Raw Blame History

构建与发布流程

本文档说明 ERPAuto Windows 便携版的当前构建与发布方式,包括推荐的一键发布命令、分步命令,以及发布产物在对象存储中的结构。

概览

当前发布链路分为 3 个阶段:

  1. 构建 Windows 包
  2. 生成本地发布物料和索引
  3. 上传到对象存储并校验远端索引

现在已经提供一键总控脚本:

npm run release:publish -- --channel stable

或:

npm run release:publish -- --channel preview

发布前准备

发布前需要确认:

  1. package.jsonpackage-lock.json 的版本号已经改到目标版本
  2. config.yamlupdate 配置正确,且对象存储可访问
  3. 对应版本的 changelog 已存在于 docs/releases/

changelog 自动查找规则如下:

  1. 优先查找 docs/releases/<version>-rebuild.md
  2. 如果不存在,再查找 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

这个命令会自动完成:

  1. 读取当前 package.json 版本号
  2. 校验 package.json / package-lock.json 版本一致
  3. 校验 changelog 文件存在
  4. 设置 APP_CHANNEL
  5. 执行 build:win
  6. 执行 release:prepare
  7. 执行 release:upload --verify
  8. 输出本次发布摘要

分步流程

如果需要调试,也可以手工分步执行。

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

相关脚本

常见问题

1. 缺少 --channel

会直接失败,因为发布必须显式指定 stablepreview

2. 找不到 changelog

说明 docs/releases/ 下没有当前版本对应的 Markdown 文件。
先补 changelog再执行发布。

3. 版本不是当前通道最新

总控脚本在 prepare 后会检查本地生成的 index.json
如果当前版本不是该通道索引的第一项,脚本会停止,避免把旧版本误当成当前发布版本。

4. 只想调试某一步

可以直接使用分步命令:

  • npm run build:win
  • npm run release:prepare -- ...
  • npm run release:upload -- ...

建议

日常发布优先使用:

npm run release:publish -- --channel <stable|preview>

只有在排查问题或需要特殊处理时,再退回分步命令。