You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Windows代理从Artifactory下载失败:临时目录权限异常

Jenkins Artifactory插件Windows代理下载权限问题解决方案

问题概述

Jenkins更新至2.414.2后,Windows 10代理节点(以系统账户NT AUTHORITY\SYSTEM作为服务运行,代理版本3131.vf2b_b_798b_ce99)使用Artifactory插件3.18.11下载文件时失败。核心报错为无法读写自动生成的临时目录(如C:\Windows\Temp\14315663966815098879...),该目录仅machinename$账户拥有完全控制权限,迁移代理临时目录后问题依旧。

解决方案

1. 手动指定Artifactory插件临时目录

  • 在Jenkins全局配置中找到Artifactory插件设置,手动指定一个系统账户完全可控的临时目录(如C:\Jenkins\ArtifactoryTemp),确保NT AUTHORITY\SYSTEM对该目录拥有完全控制权限。
  • 若全局配置无法生效,可在Job级别配置中覆盖临时目录设置,指定到当前Job工作区内的临时文件夹,避免系统Temp目录的权限限制。

2. 预创建临时目录并赋予权限

在Artifactory下载步骤前添加PowerShell脚本,手动创建临时目录并配置正确权限:

# 生成随机临时目录名
$tempDir = Join-Path $env:TEMP (Get-Random)
# 创建目录
New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
# 获取目录ACL
$acl = Get-Acl $tempDir
# 添加系统账户完全控制权限
$systemAccount = New-Object System.Security.Principal.NTAccount("NT AUTHORITY\SYSTEM")
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    $systemAccount,
    "FullControl",
    "ContainerInherit,ObjectInherit",
    "None",
    "Allow"
)
$acl.SetAccessRule($accessRule)
Set-Acl $tempDir $acl
# 将临时目录路径输出为环境变量,供后续Artifactory步骤使用
Write-Output "ARTIFACTORY_TEMP_DIR=$tempDir" | Out-File $env:BUILD_WORKSPACE\temp_dir.env -Encoding utf8

随后在Artifactory下载配置中,引用该环境变量作为临时下载路径。

3. 调整插件版本适配Jenkins

  • 尝试降级Artifactory插件至之前工作正常的版本(如3.17.x系列),验证是否解决兼容性问题。
  • 或升级至最新版Artifactory插件,查看官方是否已修复该权限相关的bug。

4. 修改代理节点临时环境变量

  • 修改Windows代理节点的系统环境变量,将TEMP和TMP指向非系统目录(如C:\Jenkins\AgentTemp),确保NT AUTHORITY\SYSTEM对该目录有完全控制权限。
  • 重启Jenkins代理服务,使环境变量生效。

5. 禁用并发下载功能

报错显示并发下载线程无法找到路径,可能是并发场景下的目录权限同步问题:

  • 在Artifactory下载配置中禁用并发下载选项,改为单线程下载,验证是否能正常创建目录并写入文件。
  • 若单线程正常,可暂时保持该配置,等待插件官方修复并发场景的权限问题。

内容的提问来源于stack exchange,提问作者pete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:17:06