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

HNy*_*ard 22 api jenkins

我们向Jenkins作业发送不同的参数,其中包括Git commit SHA1.我们想获得一个使用该参数值的作业列表(Git SHA1 - 哪些作业运行了这个提交?).

以下URL将为我们提供所有构建:

http://jenkins.example.com/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true
Run Code Online (Sandbox Code Playgroud)

渲染(6秒)需要一些时间,并且包含太多构建(5 MB构建).

该URL的示例输出:

{
  "jobs" : [
    {
      "name" : "Job name - Build",
      "builds" : [
        {
          "actions" : [
            {
              "parameters" : [
                {
                  "name" : "GIT_COMMIT_PARAM",
                  "value" : "5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"
                }
              ]
            },
(...)
Run Code Online (Sandbox Code Playgroud)

我们如何使用Jenkins JSON API列出具有特定构建参数值的所有作业?

Vit*_*upt 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
Run Code Online (Sandbox Code Playgroud)

结果样本:

<job_names>
  <name>JOB1</name>
  <name>JOB2</name>
  <name>JOB3</name>
  ...
</job_names>
Run Code Online (Sandbox Code Playgroud)

注意:如果至少有一个构建是使用所需参数构建的,则作业属于此列表


Cra*_*yne 5

也一直在寻找这个,幸运的是我发现了一个很棒的要点

https://gist.github.com/justlaputa/5634984

要回答您的问题:

jenkins_url + /api/json?tree=jobs[name,color]
Run Code Online (Sandbox Code Playgroud)

从上面使用您的示例

http://jenkins.example.com/api/json?tree=jobs[name,color]
Run Code Online (Sandbox Code Playgroud)

因此,似乎您所需要做的就是从原始url中删除builds参数,您应该会很好


Lar*_*Cai 3

看起来 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]
Run Code Online (Sandbox Code Playgroud)

您可以调整更好的查询字符串来满足您的需求。

归功于http://blog.dahanne.net/2014/04/02/using-jenkins-hudson-remote-api-to-check-jobs-status/