9

我想对 Jenkins 进行 API 调用,以获取构建列表及其参数和状态。我们目前传递一个 git commit sha1 作为参数来构建一个特定的分支。有什么想法可以让我轻松获取这些信息吗?

4

3 回答 3

9

Jenkins 提供了一个不错的 api。

它记录在:

http://$HOST/jenkins/api

你可能想要这样的东西:

http://$HOST/jenkins/api/xml?xpath=/hudson/job[1]/build[1]/action[1]/parameter&depth=2
于 2013-05-15T23:03:02.393 回答
7

据我所知,这不能在单个 API 调用中完成。

首先查询所有构建。

/job/<jobname>/api/xml
/job/<jobname>/api/json

这将分别返回 xml 或 json 输出。

获得内部版本号后,您可以查询每个内部版本号。

/job/<jobname>/<jobnum>/api/xml?xpath=/freeStyleBuild/action/lastBuiltRevision/SHA
/job/<jobname>/<jobnum>/api/json?tree=actions[lastBuiltRevision[SHA]]

然后您可以对照您的 SHA 检查结果中的 SHA。

于 2016-05-27T17:44:07.347 回答
2

将 @user1255162 的评论与答案结合起来。我必须查询构建集并打印其参数以生成报告。这是groovy中的代码片段

import groovy.json.JsonSlurper


def root = "<url to job>"
def options = "/api/json?tree=builds[actions[parameters[name,value]],result,building,number,duration,estimatedDuration]"

def jsonSlurper = new JsonSlurper()
def text = new URL("${root}/${options}").text
def data = jsonSlurper.parseText(text)

data["builds"].each { buildsdata ->
    def result = buildsdata["result"]
    def num = buildsdata["number"]
    print("${root}/${num}/parameters  |")
    buildsdata["actions"].each { actions ->
        if (actions["_class"].equals("hudson.model.ParametersAction")) {
            actions["parameters"].sort({it.name}).each { param ->
                    print("${param.name}=${param.value}|")
            }
        }
    }
    println("")
}
于 2019-01-21T06:58:05.477 回答