@ergosphere-it/publish
在内存中构建已签名的释放文件:捆绑释放,安装释放,以及通道文件. 它没有 I/O 并且没有状态,所以一个管道可以上传文件到任何后端.
它会做什么
- 将一个捆绑物分割成内容处理对象,并签署其清单.
- 签署一个安装器发布,每个电子更新器文件有一个电子更新器反馈,每个Sparkleappcast都有一个副本.
- 签名一个频道文件:它所服务的捆绑,它的推出和组群,最新的安装器,以及被撤回的版本.
- 命令上传分三个阶段:对象,然后显示并反馈,再传送文件. 客户端从未看到一个频道文件来命名一个缺失的文件 .
- 在签名前检查每份文件都符合客户端的规则,因此它从不签署客户端拒绝的文件.
- 给出了从时钟中释放的ID,所以一个管道不需要服务器的状态.
使用量
import { buildBundleRelease, buildChannelFile, uploadStages } from '@ergosphere-it/publish'
const release = await buildBundleRelease({ components, files, host: 'electron', nativeVersion: { max: 2, min: 2 }, product: 'my-app', signingKey, version: '1.5.0' })
const channel = await buildChannelFile({ bundle: { releaseId: release.releaseId, rollout: 20 }, channel: 'beta', product: 'my-app', signingKey })
for (const stage of uploadStages([release], [channel]))
await Promise.all(stage.map(file => bucket.put(file.key, file.bytes, file.headers)))
每个文件都是 { key, bytes, headers, immutable }保留 Cache-Control 页眉: 对象和清单不可改变, 频道文件为 no-store。 。 。 .
API 设计 列出每个导出.
何时使用
- 你在一条管道上发表
ergosphere-it命令不覆盖,例如上传到自己的存储服务. - 您为 Electron 以外的主机构建了释放工具.
不使用时
- 你发布一个电子软件。 这个
ergosphere-it命令@ergosphere-it/electron按顺序读取构建输出、标志和上传.