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

Jenkins Pipeline Artifactory插件下载工件路径的预期性及修改咨询

Jenkins Artifactory插件下载路径问题解答

首先,这个行为是完全符合插件预期设计的。Artifactory插件默认会保留工件在远程仓库中的完整目录结构,并将其镜像到你指定的target目录下——这是为了避免批量下载时出现文件覆盖的问题(比如下载多个同名文件时,层级路径能区分它们)。

不过要实现你想要的「直接把file.zip放到folderInWorkspace/下」的需求,非常简单,只需要在下载配置中添加flat: true参数即可。下面分两种常用语法给出示例:

方法1:使用rtDownload(推荐的现代语法)

在你的Pipeline脚本中,修改下载spec,开启flat模式:

rtDownload(
    serverId: '你的Artifactory服务器ID',
    spec: '''{
        "files": [
            {
                "pattern": "Repository/Modules/SoftwareName/Number/file.zip",
                "target": "folderInWorkspace/",
                "flat": "true"
            }
        ]
    }'''
)

开启flat: true后,插件会忽略远程仓库中的路径层级,仅将文件本身下载到target指定的目录里,也就是你预期的folderInWorkspace/file.zip。

方法2:使用旧版downloadArtifacts语法

如果你还在使用旧版的下载步骤,同样可以添加flat: true参数:

downloadArtifacts(
    server: '你的Artifactory服务器ID',
    spec: '''{
        "files": [
            {
                "pattern": "Repository/Modules/SoftwareName/Number/file.zip",
                "target": "folderInWorkspace/",
                "flat": true
            }
        ]
    }'''
)

额外:重命名文件

如果你想同时重命名下载的文件,配合flat: true直接指定target为完整文件名即可:

rtDownload(
    serverId: '你的Artifactory服务器ID',
    spec: '''{
        "files": [
            {
                "pattern": "Repository/Modules/SoftwareName/Number/file.zip",
                "target": "folderInWorkspace/my-custom-name.zip",
                "flat": "true"
            }
        ]
    }'''
)

你之前尝试直接把target设为folderInWorkspace/file.zip但没生效,就是因为没有开启flat: true——默认模式下插件会把远程路径拼接到target后面,所以才会出现多余的层级目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:20:45