我们正在向Jenkins作业发送不同的参数,其中包括Git提交SHA1。我们想获得一个使用该参数值的作业列表(Git SHA1 - 哪些作业运行了这个提交?)。
以下网址将为我们提供所有版本:
http://jenkins.example.com/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true
渲染(6秒)需要一些时间,并且包含太多构建(5 MB构建)。
该网址的示例输出:
{
"jobs" : [
{
"name" : "Job name - Build",
"builds" : [
{
"actions" : [
{
"parameters" : [
{
"name" : "GIT_COMMIT_PARAM",
"value" : "5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"
}
]
},
(...)
我们如何使用Jenkins JSON API列出具有特定构建参数值的所有作业?
答案 0 :(得分:5)
我们如何使用Jenkins JSON API列出具有特定构建参数值的所有作业?
不确定JSON API,但您可以使用XML API并结合树和 xpath 参数:
http://jenkins_url/api/xml?tree=jobs[name,builds[actions[parameters[name,value]]]]&xpath=/hudson/job[build/action/parameter[name="GIT_COMMIT_PARAM"][value="5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"]]/name&wrapper=job_names&pretty=true
结果样本:
<job_names>
<name>JOB1</name>
<name>JOB2</name>
<name>JOB3</name>
...
</job_names>
注意:如果至少有一个构建版本是使用所需参数构建的,则作业属于此列表
答案 1 :(得分:3)
也一直在寻找这个,幸运的是我发现了一个很棒的要点
https://gist.github.com/justlaputa/5634984
回答您的问题:
jenkins_url + /api/json?tree=jobs[name,color]
使用上面的示例
http://jenkins.example.com/api/json?tree=jobs[name,color]
因此,您似乎所需要做的就是从原始网址中删除 builds 参数,就可以了
答案 2 :(得分:2)
它看起来在JSON API中不受支持,但是如果您可以使用XML API,则可以通过XPATH进行查询,请参阅下面的示例
http://jenkins.example.com/api/xml?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&exclude=hudson/job/build/action/parameter[value!=%275447e2f43ea44eb4168d6b32e1a7487a3fdf237f%27]
您可以调整更好的查询字符串以满足您的需求。
归功于http://blog.dahanne.net/2014/04/02/using-jenkins-hudson-remote-api-to-check-jobs-status/
答案 3 :(得分:-1)
这是仅用于传递作业的查询:
for (int i = 1; i < 4; i++) {
if (p1grid[i - 1].equals("empty"))
("a" + i).setBackground(Color.LIGHT_GRAY);
else
("a" + i).setBackground(Color.RED);
}
这是仅针对失败作业的查询:
http://jenkinsURL/job/ProjectFolderName/api/xml?tree=jobs[name,color=blue]