Jenkins Pipeline - 上传到 Artifactory:无法部署文件/Parent 必须是文件夹

Jenkins Pipeline - Upload to Artifactory: Failed to deploy file / Parent must be a folder

我有一个 Jenkins 作业,它生成一个我想上传到 Artifactory 的 zip 文件。我在设置要上传的工件版本时遇到问题。

按照惯例,我使用时间戳有版本。我想将文件上传到 my/group/timestamp/file.zip。文件的 url 将是 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: Failed to deploy file. Status code: 400 Response message: Artifactory returned the following errors: Parent my/group/timestampValue must be a folder Status code: 400

我查看了 buildInfo,但找不到如何设置版本。

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

别忘了它还在groovy使用${}。我使用了下面的代码并且有效

def uploadSpec = """{
    "files": [
    {
    "pattern": "**/target/*.war",
    "target": "local-release/${APP_REPO}/${version.trim()}/${timestamp}.zip"
    }
    ]}"""
server.upload(uploadSpec)

@编辑。我只是想过。请打印您的${timestamp}。也许它包含带空格的字符,或者目录名称中不允许使用 Artifactory 的类似内容。试试 trim 你的 timestamp.trim()

最后,这个错误简单明了。

如前所述,路径为 my/group/timestampValue 的文件已存在。你必须在 Artifactory 上删除它。