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

无法通过Jenkins流水线使用JFrog文件规范下载Artifactory文件求助

Jenkins流水线从JFrog Artifactory下载Tar包时多线程I/O错误

我在Jenkins流水线中使用File Spec从JFrog Artifactory下载tar包,流水线代码如下:

steps {
    script {
        def artifactoryServer = getArtifactoryServer 'XYZJFROG'
        String targetFileLoc = "${WORKSPACE}\\recupTar\\"
        def buildInfo = artifactoryDownload(
            spec: """{
                "files": [{
                    "pattern":"XYZ/ABC/TEST/${env.JFROG_ART_FOLDER}/${params.RecuperationTar}/${env.JFROG_ART_FOLDER}-${params.RecuperationTar}.tar",
                    "target": "${targetFileLoc}"
                }]
            }""",
            buildInfo: new BuildInfo(),
            module: "TEST",
            failNoOp: true,
            server: artifactoryServer
        )
    }
}

当tar包以多线程方式下载时,每个线程均触发如下I/O错误:

java.io.IOException: Unknown I/O error listing contents of directory: C:\Windows\TEMP\8188781397582827352
        at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:2190)
        at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:333)
        at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1192)
        at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadFileConcurrently(DependenciesDownloaderHelper.java:256)
        at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadArtifact(DependenciesDownloaderHelper.java:209)
    Also:   org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 94f912cc-d89c-43fb-a807-ce10c79240d6
    Caused: java.io.IOException

解决建议

  • 禁用多线程下载:在artifactoryDownload调用中添加parallel: false参数,避免多线程对临时目录的竞争问题:
    def buildInfo = artifactoryDownload(
        // 其他参数保持不变
        parallel: false
    )
    
  • 检查临时目录权限:确保Jenkins服务运行账号对C:\Windows\TEMP目录拥有读写、删除子目录的权限,避免线程清理临时文件时触发权限错误。
  • 自定义Jenkins临时目录:修改Jenkins启动参数,添加-Djava.io.tmpdir=D:\JenkinsTemp(替换为你指定的目录),让Jenkins使用独立的临时目录,避开系统TEMP目录的权限限制或资源竞争。
  • 修正路径格式:将Windows路径的反斜杠\替换为正斜杠/,Groovy中无需转义,避免路径解析错误:
    String targetFileLoc = "${WORKSPACE}/recupTar/"
    
  • 升级JFrog插件:检查并升级Jenkins的Artifactory插件至最新版本,旧版本可能存在并发下载时的临时目录处理bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:39:58