Jenkins管道-上传到Artifactory:无法部署文件/父级必须是文件夹

时间:2018-08-10 12:54:24

标签: jenkins jenkins-pipeline artifactory

我有一个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,但是找不到如何设置版本。

顺便说一句,我也同意一个没有时间戳但只有组名的解决方案。

2 个答案:

答案 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()