For the complete documentation index, see llms.txt. This page is also available as Markdown.

Electron项目自动打Tag打包Release并上传CDN

Electron 项目如果只是在本地打包,前几次还可以手动操作。但一旦要同时支持 macOS、Windows、自动更新、国内下载加速,就应该尽早把发布流程自动化。

我现在比较顺手的一套流程是:

修改 package.json version

push main

GitHub Actions 检测版本变化

自动创建 vX.Y.Z tag

触发 Release 工作流

macOS / Windows 分平台打包

Windows 更新文件上传七牛

GitHub Release 写入下载说明

为什么用版本号触发 tag

直接每次 push 都打包会浪费时间,也容易产生无意义版本。更合理的方式是:只有 package.json 里的 version 变化时才创建 tag。

这段逻辑解决两个问题:

  • 版本号没变,不发布。

  • tag 已存在,不重复发布。

分平台打包

Electron 打包通常 macOS 和 Windows 环境不同,建议用 matrix:

安装依赖后,需要注意原生模块:

如果项目里用了 better-sqlite3sharp 这类原生依赖,electron-rebuild 这一步非常关键。

Windows 自动更新文件上传七牛

Electron 的 Windows 自动更新一般需要:

  • 安装包 .exe

  • 差分文件 .blockmap

  • 更新描述 latest.yml

可以在 Release 阶段把这些文件上传到七牛 CDN,应用内检查更新时就走国内 CDN。

上传 CDN 时建议保留固定目录,例如:

这样应用里的 publish.url 可以一直指向同一个 CDN 目录。

Release 说明也自动生成

上传成功后,可以把 GitHub Release 的正文写成“国内下载推荐 + 其他系统附件”的结构。

注意点

  • 未签名 macOS 应用可能会提示“已损坏”,正式分发最好配置 Apple Developer ID。

  • Windows 自动更新的 latest.yml 必须和实际安装包文件名匹配。

  • 上传 CDN 后,如果 GitHub Release 也上传 Windows 安装包,用户可能会分不清下载入口,可以按需删除 GitHub 的 Windows 附件。

  • concurrency 建议设置为 release tag,避免同一版本重复打包。

这套流程搭好之后,发布一个 Electron 新版本就只剩一件事:改版本号并 push。