我想对Jenkins进行API调用,以获取构建列表及其参数和状态。我们当前传递一个git commit sha1作为参数来构建一个特定的分支。我有什么想法可以轻松获得这些信息吗?
答案 0 :(得分:8)
Jenkins提供了一个很好的api。
记录于:
http://$HOST/jenkins/api
您可能需要以下内容:
http://$HOST/jenkins/api/xml?xpath=/hudson/job[1]/build[1]/action[1]/parameter&depth=2
答案 1 :(得分:2)
据我所知,这不能在单个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。
答案 2 :(得分:0)
将@ 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("")
}