mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-29 22:12:52 +00:00
ci(release): 打包前装 Electron,否则 GUI 被静默跳过
## 问题 打包脚本从两处找 Electron 运行时: 1) ~/.cache/electron 里的 electron-v<ver>-linux-<arch>.zip 2) cmd/gui/node_modules/electron/dist(目标架构 == host 时) 全新 GitHub runner **两处都没有** —— 脚本在都没有时只能跳过 GUI, 于是 client/full 包会**静默地不含界面**(正是脚本作者担心的「假包」)。 实测:本地移走缓存后 GUI 被跳过,包仍能产出。 ## 改法 打包前在 cmd/gui 执行 `npm ci`,让 electron 落到 node_modules。 runner 是 amd64 == 目标架构,脚本便走第 2 条路径。 **用 npm ci 而不是 `npm install electron@<range>`**:后者是非确定性的 (range 会随上游漂移,也锁不住传递依赖),zizmor 也把它标为 adhoc-packages 风险。package-lock.json(lockfileVersion 3)已锁定 electron,ci 严格按 lock 安装 ⇒ 同一 commit 永远得到同一套依赖。 不能用 `npm install --production`:那会跳过 devDependencies, 而 electron 正是 devDependency(这正是脚本自己那条命令找不到它的原因)。 ## 验证 - 无声 cache + 有 node_modules/electron 时,脚本走 host-arch 回退并 成功构建 GUI(263M / x86-64)—— 已本地实测 - 两者都无时改为打印明确原因并跳过(配合上一个 commit 的 find 修复) - npm ci --dry-run 通过;actionlint 全绿
This commit is contained in:
26
.github/workflows/release.yml
vendored
26
.github/workflows/release.yml
vendored
@ -158,6 +158,32 @@ jobs:
|
||||
run: |
|
||||
echo "::warning title=go test 门已跳过::本次发版未跑 go test,产物可能建立在单元测试失败的代码上。"
|
||||
|
||||
# GUI 依赖 Electron 运行时。打包脚本从两处找它:
|
||||
# 1) ~/.cache/electron 里的 electron-v<ver>-linux-<arch>.zip
|
||||
# 2) cmd/gui/node_modules/electron/dist(同架构时)
|
||||
# 全新 runner 两处都没有 —— 而脚本在都没有时**只能跳过 GUI**,
|
||||
# 于是 client/full 包会静默地不含界面(这正是脚本作者担心的“假包”)。
|
||||
# 所以这里显式装一份:npm 会解析出 ^33.0.0 的实际版本并落到
|
||||
# node_modules,脚本便走第 2 条路径(runner 是 amd64 == 目标架构)。
|
||||
#
|
||||
# ⚠️ 不能用 `npm install --production`(那会跳过 devDependencies,
|
||||
# 而 electron 正是 devDependency)。
|
||||
- uses: actions/setup-node@v7
|
||||
with:
|
||||
node-version: '22'
|
||||
|
||||
- name: 安装 Electron(GUI 打包需要)
|
||||
working-directory: cmd/gui
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# 用 npm ci 而非 `npm install electron@<range>`:后者是非确定性的
|
||||
# (range 会随上游发布漂到新版本),且锁不住传递依赖。
|
||||
# package-lock.json 里已锁定 electron(lockfileVersion 3),
|
||||
# ci 严格按 lock 安装,同一个 commit 永远得到同一套依赖。
|
||||
npm ci --no-audit --no-fund
|
||||
test -f node_modules/electron/dist/electron
|
||||
echo " 已就绪:$(node_modules/electron/dist/electron --version)"
|
||||
|
||||
- name: 下载构建资产(模型 + ONNX Runtime)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
Reference in New Issue
Block a user