ci: Windows 改用 npm 装的 JS 版 pnpm(standalone 二进制在低完整性沙箱里必崩)
This commit is contained in:
@@ -427,22 +427,25 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
targets: x86_64-pc-windows-msvc
|
targets: x86_64-pc-windows-msvc
|
||||||
|
|
||||||
- name: 装 pnpm
|
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: ${{ env.PNPM_VERSION }}
|
|
||||||
# 两个原因不用默认的 ~/setup-pnpm(中完整性写不进去),也不用固定的
|
|
||||||
# cache 目录:pnpm 会把自己算出来的 store 建在这个 dest 里面,下一次运行
|
|
||||||
# 自安装器清理旧目录时就炸了 ——
|
|
||||||
# ENOTEMPTY: directory not empty, rmdir '...\ci-pnpm\node_modules\.bin\store\v11\projects'
|
|
||||||
# 所以放到本次运行的 work 目录下(每次都是干净的)。
|
|
||||||
dest: ${{ github.workspace }}\..\ci-pnpm
|
|
||||||
|
|
||||||
- name: 装 Node
|
- name: 装 Node
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: ${{ env.NODE_VERSION }}
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
|
||||||
|
# 这里**不用** pnpm/action-setup:它装的是 standalone 的 pnpm 二进制,而那个
|
||||||
|
# 二进制在这台 runner 的低完整性沙箱里走到"把包装进 virtual store"时必崩:
|
||||||
|
# thread '<unknown>' (6716) has overflowed its stack
|
||||||
|
# corepack 拉下来的是同一个二进制(也崩),所以改成用 npm 装 JS 版 pnpm ——
|
||||||
|
# 它跑在 node 上,是另一条代码路径。装到 node 自己的目录里(RUNNER_TOOL_CACHE
|
||||||
|
# 已经指到可写位置,见 job env)。
|
||||||
|
- name: 装 pnpm(npm 装 JS 版,绕开 standalone 二进制)
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
npm install -g pnpm@12.8.1
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "npm 装 pnpm 失败(exit $LASTEXITCODE)" }
|
||||||
|
"pnpm = $((Get-Command pnpm).Source)"
|
||||||
|
pnpm --version
|
||||||
|
|
||||||
- name: 前端依赖(严格按 lock 装)
|
- name: 前端依赖(严格按 lock 装)
|
||||||
working-directory: desktop
|
working-directory: desktop
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|||||||
Reference in New Issue
Block a user