【发布时间】:2019-06-07 23:36:08
【问题描述】:
使用 Jenkins DSL,我可以使用 Artifactory.newBuildInfo 创建和发布构建信息,但我正在寻找补充方法来读取在 Artifactory 上生成的 BuildInfo JSON 数据。已经浏览了许多资源。任何建议将不胜感激。
【问题讨论】:
标签: jenkins artifactory
使用 Jenkins DSL,我可以使用 Artifactory.newBuildInfo 创建和发布构建信息,但我正在寻找补充方法来读取在 Artifactory 上生成的 BuildInfo JSON 数据。已经浏览了许多资源。任何建议将不胜感激。
【问题讨论】:
标签: jenkins artifactory
从Artifactory REST API 看来,您确实可以检索 buildInfo。我希望这也必须从 jenkins 插件中公开。
Build Info
Description: Build Info
Since: 2.2.0
Security: Requires a privileged user with deploy permissions (can be anonymous)
Usage: GET /api/build/{buildName}/{buildNumber}
Produces: application/vnd.org.jfrog.build.BuildInfo+json
...
JFrog's project examples on github 和他们的jenkins plugin 一样是一个极好的资源
通过快速搜索,您似乎需要定义下载规范,然后使用 server.download 方法(请参阅Working with Pipeline Jobs in Jenkins
def buildInfo1 = server.download downloadSpec
【讨论】:
上一个答案创建了一个新的 buildInfo,它不会将原始 buildInfo 下载到我已经尝试了几天试图弄清楚如何做原始海报想要做的事情。我最成功的是将 buildinfo 下载到哈希表中,使用它,然后通过 REST 调用上传更改。
def curlstr = "curl -H 'X-JFrog-Art-Api:${password}' ${arturl}api/build/${buildName}/${buildNumber}"
def buildInfoString = sh(
script: curlstr,
returnStdout: true
).trim()
buildInfo = (new JsonSlurperClassic().parseText(buildInfoString))
sh("echo '${JsonOutput.toJson(buildInfo)}'|curl -XPUT -H 'X-JFrog-Art-Api:${password}' -H 'Content-Type: application/json' ${arturl}api/build --upload-file - ")
我能够使用这种技术修改工件存储库中的 buildInfo。没有我想要的那么干净。我也无法让 jfrogCLI 修改现有的 buildInfo 文件。
无论我试图做的事情是否值得推广一个 docker 工件并在执行时更改名称。我发现没有办法向工件表达这一点,而不涉及将工件下载到 docker 然后再次推送它。如果来自@jfrog 的人能告诉我怎么做,我会很高兴的。
【讨论】: