From 47ef7c63ddbe335b4cd46c4a0625c0be065b58fc Mon Sep 17 00:00:00 2001 From: sloray Date: Thu, 15 Oct 2026 23:02:12 +0800 Subject: [PATCH] =?UTF-8?q?ci(diag):=20=E5=86=8D=E6=8E=A2=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=20=E2=80=94=E2=80=94=20pnpm=20=E7=9C=BC=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E7=9B=AE=E5=BD=95=E5=88=B0=E5=BA=95=E6=98=AF=E5=93=AA?= =?UTF-8?q?=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 的输出,以及"两个候选锁目录能不能建"。查完删。 --- .github/workflows/build-client.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-client.yml b/.github/workflows/build-client.yml index 0d2d717..64e4b94 100644 --- a/.github/workflows/build-client.yml +++ b/.github/workflows/build-client.yml @@ -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