jenkins 如何在Jfrog的API调用中使用文件规范

2ledvvac  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(551)

我有一个关于如何在JFrog的API调用中使用File Sepc的问题。
我使用Jenkins Artifactory Plugin将工件上传或下载到JFrog,我尝试使用JFrog API(GET/PUT)重写函数来做同样的事情。
但是现在我遇到了一个问题,对于一些工件,我使用文件规范来设置一些属性,最后我上传了这个文件规范。

"files": [
    {
      "pattern": "${file}",
      "target": "${target}" """
    if (runID) {
        uploadSpec += """,
            "props": "artifactId=${runID}"
        """
    }
uploadSpec += """      
    }
 ]

您可以看到这个artifactId。
在这种情况下,当我使用JFrogAPI上传工件时,我应该如何设置属性?

sh """
            curl  -sSf -u user:pw -X PUT -T ${zipFile} 'https://${config.artifactory.name}.xxxx:443/artifactory/${path}'
        """

如何调用put api并设置"props": "artifactId=${runID}"
有什么解决办法吗?

blpfk2vs

blpfk2vs1#

首先,如果您可以使用JFrog CLI,那么您应该使用它,因为它使它更简单,并提供了一些现成的高级特性,例如批处理并行上载/下载、文件规范、附加属性、构建信息、身份验证等。
如果您仍希望直接使用Artifactory API来设置属性(这确实是一个可行的好选项),则可以执行以下操作之一:
1.将属性作为矩阵参数添加为upload (deploy) API调用的一部分。
在您的情况下,它应该类似于:

sh """
  curl -sSf -u user:pw -X PUT -T ${zipFile} 'https://${config.artifactory.name}.xxxx:443/artifactory/${path};artifactId=${runID}'
"""

请注意URL末尾的;key=value
1.在上载后,执行第二次调用,以设置项目属性
在您的情况下,它应该类似于:
使用设置项目属性API -

sh """
  curl -sSf -u user:pw -X PUT 'https://${config.artifactory.name}.xxxx:443/artifactory/api/storage/${path}?properties=artifactId=${runID}'
"""

,或使用更新项目属性API-

sh """
  curl -sSf -u user:pw -X PATCH 'https://${config.artifactory.name}.xxxx:443/artifactory/api/metadata/${path}' -d '{ "props": { "artifactId" : "${runID}" } }'
"""

如需详细信息,请参阅:

相关问题