我有一个Jenkins作业,该作业会生成一个我想上传到Artifactory的zip文件。我在设置要上传的工件的版本时遇到问题。
按照惯例,我使用带有版本的时间戳。我想将文件上传到my/group/timestamp/file.zip
。该文件的网址为http://ArtifactoryAdress/foo/my/group/timestamp/file.zip
这是我的管道代码
def serverArtifactory = Artifactory.server 'NameArtificatory'
def uploadSpec = """{
"files": [
{
"pattern": "file.zip",
"target": "my/group/${timestamp}/"
}
]
}"""
serverArtifactory.upload(uploadSpec)
我从詹金斯·乔布(Jenkins Job)得到以下错误
java.lang.RuntimeException:java.io.IOException:部署失败 文件。状态码:400响应消息:Artifactory返回了 以下错误: 父项my / group / timestampValue必须是文件夹状态代码:400
我环顾了buildInfo,但是找不到如何设置版本。
顺便说一句,我也同意一个没有时间戳但只有组名的解决方案。
答案 0 :(得分:1)
最后,这个错误很清楚很简单。
如前所述,具有路径my/group/timestampValue
的文件已存在。您必须在Artifactory上将其删除。
答案 1 :(得分:0)
别忘了它仍然非常流行${}
。我使用了下面的代码,并且可以正常工作
def uploadSpec = """{
"files": [
{
"pattern": "**/target/*.war",
"target": "local-release/${APP_REPO}/${version.trim()}/${timestamp}.zip"
}
]}"""
server.upload(uploadSpec)
@编辑。我只是考虑了一下。请打印您的${timestamp}
。也许其中包含带空格的字符,或者类似的目录名中不允许的Artifactory。尝试修剪timestamp.trim()