使用Jenkins从Artifactory获取BuildInfo

时间:2017-11-17 15:22:07

标签: jenkins artifactory

使用Jenkins DSL我可以使用Artifactory.newBuildInfo创建和发布构建信息,但我正在寻找补充方法来读取Artifactory上生成的BuildInfo JSON数据。已经通过许多资源进行了控制。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

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 githubjenkins plugin

一样,是一种极好的资源

通过快速搜索,您可以定义下载规范,然后使用server.download方法(请参阅Working with Pipeline Jobs in Jenkins

def buildInfo1 = server.download downloadSpec

答案 1 :(得分:0)

先前的答案会创建一个新的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的人可以为我提供操作方法的线索,我会很喜欢。