ci(diag): 再探一次 —— pnpm 眼里的目录到底是哪个
构建客户端 / 检查(类型 + 单元测试) (push) Successful in 1m15s
构建客户端 / macOS 通用(.app + .dmg) (push) Skipped
构建客户端 / Windows x64(NSIS 安装包) (push) Failing after 23s
构建客户端 / Linux x64(deb + AppImage) (push) Canceled after 2m38s

run 8 里 LOCALAPPDATA 已经在 job env 里指向 ci-localappdata,但 pnpm 仍然去开
C:\Users\admin\AppData\Local\pnpm-store-operation-locks\all-stores.lock(拒绝访问)。
所以要么这个变量没进到那一步,要么 pnpm 不是从环境变量推这个路径。加一步(在装完
pnpm 之后、装依赖之前)把它问清楚:LOCALAPPDATA/APPDATA 的实际值、pnpm 的路径与版本、
pnpm config list 的输出,以及"两个候选锁目录能不能建"。查完删。
This commit is contained in:
2026-10-15 23:02:12 +08:00
parent b74c6654e5
commit 47ef7c63dd
+17 -2
View File
@@ -458,12 +458,27 @@ jobs:
with:
node-version: ${{ env.NODE_VERSION }}
- name: 诊断2(临时,查完删)——pnpm 眼里的目录
shell: pwsh
run: |
"LOCALAPPDATA = $env:LOCALAPPDATA"
"APPDATA = $env:APPDATA"
"pnpm 在 = $((Get-Command pnpm -ErrorAction SilentlyContinue).Source)"
try { "pnpm --version = $(pnpm --version)" } catch { "pnpm 调不动: $($_.Exception.Message)" }
pnpm config list 2>&1 | Select-Object -First 25
"改过的环境变量:RUSTUP_HOME=$env:RUSTUP_HOME | CARGO_HOME=$env:CARGO_HOME | RUNNER_TOOL_CACHE=$env:RUNNER_TOOL_CACHE"
"目标锁目录能不能建:"
foreach ($d in @("$env:LOCALAPPDATA\pnpm-store-operation-locks", 'C:\Users\admin\runner\windows\cache\ci-localappdata\pnpm-store-operation-locks')) {
try { New-Item -ItemType Directory -Force -Path $d -ErrorAction Stop | Out-Null; " OK $d" } catch { " FAIL $d -> $($_.Exception.Message)" }
}
- name: 前端依赖(严格按 lock 装)
working-directory: desktop
run: pnpm install --frozen-lockfile
# nsis 是纯安装包,不需要 WiX;tauri 会自己把 NSIS 下到用户缓存里,所以
# 这台 runner 要能访问 GitHub(离线环境改成 --bundles msi 也一样要下 WiX)。
# nsis 是纯安装包,不需要 WiX;tauri 会自己把 NSIS 下到用户缓存里(这个缓存
# 也跟着 LOCALAPPDATA 走,见上面 job env),所以这台 runner 要能访问 GitHub
# (离线环境改成 --bundles msi 也一样要下 WiX)。
- name: 打包(tauri build)
working-directory: desktop
run: pnpm tauri build --target ${{ env.TARGET }} --bundles nsis