Files
ESP32S3_vt/.github/workflows
sloray ac3d639d6b
构建客户端 / 检查(类型 + 单元测试) (push) Successful in 1m12s
构建客户端 / macOS 通用(.app + .dmg) (push) Skipped
构建客户端 / Windows x64(NSIS 安装包) (push) Failing after 57s
构建客户端 / Linux x64(deb + AppImage) (push) Successful in 6m5s
ci: Windows job 低完整性适配 —— 把 CI 的"家目录"挪到 runner 自己的工作目录
诊断步骤(在 job 里跑的写探测)给出了确定答案:

    whoami    = timi\admin
    integrity = Mandatory Label\Low Mandatory Level  S-1-16-4096     <-- 低完整性
    FAIL: C:\Users\admin\.rustup\tmp\probe.txt      Access denied
    FAIL: C:\Users\admin\.cargo\probe.txt           Access denied
    FAIL: C:\Users\admin\.cargo\registry\probe.txt  Access denied
    OK  : C:\Users\admin\runner\windows
    OK  : C:\Users\admin\runner\windows\cache
    OK  : <work>\ci-probe

不是 ACL 问题(SYSTEM / Administrators / timi\admin 全 F,没有 Deny),是 Windows 的
"低完整性不能写中完整性"。同一个账户在交互式会话(Medium,实测 S-1-16-8192)里往
~/.rustup、~/.cargo 写得进去,job 里就全被拒。于是前面几个看起来毫不相干的错误都是
同一个原因:Git Bash /tmp 被拒(TEMP 不可写时它退回 <Git>\tmp)、rustup 建不了临时
文件。%TEMP%、%LOCALAPPDATA% 也一样中招。

处置(Windows job 内):
  * env 增加 RUSTUP_HOME / CARGO_HOME / npm_config_cache / npm_config_store_dir /
    RUNNER_TOOL_CACHE,全部指向 C:\Users\admin\runner\windows\cache\ci-*(探测过可写)
  * pnpm/action-setup 的 dest 从默认 ~/setup-pnpm 改到同一个 cache 下
  * TEMP/TMP/TMPDIR 上一版已经指到 workspace 同级的 ci-tmp
文件头第 5 条写清了这个坑、表现、以及从根上的解法(让 gitea-runner 以中完整性启动)。
临时诊断步骤暂时保留,等 Windows 真编出包来再删。
2026-10-15 22:44:05 +08:00
..