Jenkins API:获取按构建参数筛选的作业列表 - 已构建此Git提交的作业是什么?

时间:2014-09-05 14:14:28

标签: api jenkins

我们正在向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列出具有特定构建参数值的所有作业?

4 个答案:

答案 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]