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
相关产品推荐
相关产品推荐

