From 26731958ea4461f3beb051a9bdfedf8af3a80d3e Mon Sep 17 00:00:00 2001 From: sloray Date: Thu, 15 Oct 2026 23:24:13 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20Windows=20=E7=9A=84=20pnpm=20install=20?= =?UTF-8?q?=E5=8A=A0=20corepack=20=E9=80=80=E8=B7=AF=EF=BC=88standalone=20?= =?UTF-8?q?=E5=9C=A8=E4=BD=8E=E5=AE=8C=E6=95=B4=E6=80=A7=E6=B2=99=E7=AE=B1?= =?UTF-8?q?=E9=87=8C=E6=A0=88=E6=BA=A2=E5=87=BA=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-client.yml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-client.yml b/.github/workflows/build-client.yml index c06044d..68bfe5a 100644 --- a/.github/workflows/build-client.yml +++ b/.github/workflows/build-client.yml @@ -446,12 +446,23 @@ jobs: - name: 前端依赖(严格按 lock 装) working-directory: desktop shell: pwsh - # 这台 runner 上 pnpm 自己算出来的 store 路径很怪(\node_modules\.bin\ - # store\v11),而且 --store-dir 的 env 写法它不认;这里直接给 CLI 参数: - # 显式短路径的 store + copy 导入(不用硬链接),并把输出改成适合日志的形式。 - # (shell 写死 pwsh:一是这台 runner 上 Windows 步骤本来就该用 pwsh, - # 二是 actionlint 看到反斜杠路径会拿 shellcheck 的 bash 规则去挑刺。) - run: pnpm install --frozen-lockfile --store-dir C:\Users\admin\runner\windows\cache\ps --package-import-method=copy --reporter=append-only + # 这台 runner 的 job 跑在低完整性沙箱里(见文件头第 5 条),standalone 的 + # pnpm 到"把包装进 virtual store"那一步会直接栈溢出: + # thread '' (6716) has overflowed its stack + # (store 已经在可写目录、也改成 copy 导入了,仍然复现;同样的命令在普通 + # Medium 会话里跑得好好的。)所以先试 standalone,崩了就退回 corepack: + # 让 node 去跑 pnpm 的 JS 实现,绕开那个二进制。 + run: | + $pnpmArgs = @('install', '--frozen-lockfile', + '--store-dir', 'C:\Users\admin\runner\windows\cache\ps', + '--package-import-method=copy', '--reporter=append-only') + pnpm @pnpmArgs + if ($LASTEXITCODE -eq 0) { exit 0 } + "::warning::standalone pnpm 失败(exit $LASTEXITCODE),改用 corepack + node 跑 pnpm" + corepack enable + corepack prepare pnpm@12.8.1 --activate + pnpm @pnpmArgs + exit $LASTEXITCODE # nsis 是纯安装包,不需要 WiX;tauri 会自己把 NSIS 下到用户缓存里(这个缓存 # 也跟着 LOCALAPPDATA 走,见上面 job env),所以这台 runner 要能访问 GitHub