Skip to content

ci: 加速发版构建并迁移到 Node 24 Actions - #108

Merged
J3n5en merged 1 commit into
mainfrom
ci/speed-up-build
Sep 23, 2026
Merged

J3n5en merged 1 commit into
mainfrom
ci/speed-up-build

Conversation

@J3n5en

@J3n5en J3n5en commented Sep 23, 2026

Copy link
Copy Markdown
Owner

问题

v0.1.34 构建 17 分钟,关键路径 mac x64 15 分钟:

  • electron-builder install-app-deps 每次从源码重编 classic-level(Intel mac 4m16s)。它是 N-API 预编译,但文件名 classic-level.node 不符合 @electron/rebuild 的 node.napi.node 匹配规则
  • tag 触发的缓存按 ref 隔离,下一个 tag 读不到:每版 Cache not found / reused 0,却还写入约 2.5GB,挤占 10GB 配额,并在每个 job 收尾多花 13–71s
  • CI 用 Node 20(engines 要求 >=22),Actions 运行在已弃用的 Node 20 上;electron-builder 按 tag 隐式发布将在 v27 移除;yq 每次拉未锁版本的 latest

改动

  • postinstall 改为 electron-rebuild --only better-sqlite3,node-pty(@electron/rebuild 4.2.0,与 electron-builder 内置版本一致)
  • Build 只读缓存(actions/cache/restore),Linux job 共用 main 上的 pnpm-store-*;去掉 mac/Windows 永远命中不了的缓存
  • Node 版本读 .nvmrc,package-manager-cache: false;Actions 升到 node24 版本;--publish onTag;yq 用镜像自带
  • 已清理 v0.1.32–34 共 27 个 tag 缓存(约 8GB)

验证

  • 本地:删掉 classic-level 编译产物重跑 postinstall,不再编译;Electron 43 下 level / better-sqlite3 / node-pty 均可加载
  • 分支 workflow_dispatch:https://github.com/J3n5en/EnsoCode/actions/runs/35891499701 全绿,未发布
    job 之前 之后
    mac x64 15m21s 8m46s
    mac arm64 5m31s 3m59s
    Windows 6m57s 5m33s
    Linux 3m44s 2m57s
    Node 20 弃用警告 0 条,签名公证正常

- postinstall 只为 Electron 重编 better-sqlite3、node-pty;classic-level 是 N-API
  预编译,@electron/rebuild 因文件名不匹配每次从源码编译(Intel mac 4 分多钟)
- tag 构建缓存按 ref 隔离永不复用,改为只读 main 的 pnpm-store,不再每版写入 ~2.5GB
- Node 按 .nvmrc(22),Actions 升到 node24 版本,显式 --publish onTag,yq 用镜像自带
@J3n5en
J3n5en merged commit bd3084f into main Sep 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant