ci(diag): 在 Windows job 里加一段临时诊断(查完删)
run 5 里 bash 那两个坑都过去了,卡在第三处:rustup 建临时文件被拒
error: could not create temp file C:\Users\admin\.rustup\tmp\ajq4dt9h0_e7oonj_file
拒绝访问。 (os error 5)
同一个账户在这个交互式会话里能往那个目录写、ACL 也是正常的(SYSTEM/Administrators/
TIMI\admin 全 F,没有 Deny)。runner 进程属主是 TIMI\admin,计划任务 GiteaRunner-Windows
是 admin / Limited(非提权)。所以差异只在 job 内部的令牌/完整性级别上 —— 让 job 自己
报:whoami、Mandatory Label、TEMP/TMP、RUSTUP_HOME/CARGO_HOME,并对 6 个候选目录逐个
做"建目录 + 写文件 + 删文件"探测。这是临时步骤,拿到结论就删。
This commit is contained in:
@@ -336,6 +336,39 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# 临时诊断:rustup 写 C:\Users\admin\.rustup\tmp 被拒(os error 5),但同一个
|
||||
# 账户在交互式会话里写得进去 —— 先让 job 自己说清楚"我是谁、哪种完整性级别、
|
||||
# 哪些目录写得进去"。查完这一段就删。
|
||||
- name: 诊断(临时,查完删)
|
||||
shell: pwsh
|
||||
run: |
|
||||
"whoami = $(whoami)"
|
||||
"integrity = $((whoami /groups | Select-String -Pattern 'Mandatory Label') -join ' ')"
|
||||
"USERPROFILE = $env:USERPROFILE"
|
||||
"HOME = $env:HOME"
|
||||
"TEMP / TMP = [$env:TEMP] / [$env:TMP]"
|
||||
"TMPDIR = [$env:TMPDIR]"
|
||||
"RUSTUP_HOME = [$env:RUSTUP_HOME] CARGO_HOME = [$env:CARGO_HOME]"
|
||||
"user-level TEMP = $([Environment]::GetEnvironmentVariable('TEMP','User'))"
|
||||
$targets = @(
|
||||
"$env:USERPROFILE\.rustup\tmp",
|
||||
"$env:USERPROFILE\.cargo",
|
||||
"$env:USERPROFILE\.cargo\registry",
|
||||
'C:\Users\admin\runner\windows',
|
||||
'C:\Users\admin\runner\windows\cache',
|
||||
(Join-Path (Split-Path -Parent $env:GITHUB_WORKSPACE) 'ci-probe')
|
||||
)
|
||||
foreach ($p in $targets) {
|
||||
$verdict = 'OK'
|
||||
try {
|
||||
New-Item -ItemType Directory -Force -Path $p -ErrorAction Stop | Out-Null
|
||||
$f = Join-Path $p 'probe.txt'
|
||||
Set-Content -Path $f -Value 'x' -ErrorAction Stop
|
||||
Remove-Item $f -Force -ErrorAction SilentlyContinue
|
||||
} catch { $verdict = "FAIL: $($_.Exception.Message)" }
|
||||
"{0,-46} {1}" -f $verdict, $p
|
||||
}
|
||||
|
||||
# 宿主模式的 Windows runner 上,PATH 里的 `bash` 是 C:\Windows\System32\bash.exe
|
||||
# —— WSL 的启动器,而 WSL 在 runner 账户下起不来,报 E_ACCESSDENIED(日志里是
|
||||
# 一串 GBK 被当 UTF-8 解出来的乱码 + https://github.com/microsoft/WSL/issues)。
|
||||
|
||||
Reference in New Issue
Block a user