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