ci: Windows 的 pnpm install 加 corepack 退路(standalone 在低完整性沙箱里栈溢出)
This commit is contained in:
@@ -446,12 +446,23 @@ jobs:
|
||||
- name: 前端依赖(严格按 lock 装)
|
||||
working-directory: desktop
|
||||
shell: pwsh
|
||||
# 这台 runner 上 pnpm 自己算出来的 store 路径很怪(<dest>\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 '<unknown>' (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
|
||||
|
||||
Reference in New Issue
Block a user