【问题标题】:Jenkins API: Get a list of jobs filtered by build parameter - What jobs have built this Git commit?Jenkins API:获取按构建参数过滤的作业列表 - 哪些作业构建了此 Git 提交?
【发布时间】:2023-03-25 13:10:02
【问题描述】:

我们正在向 Jenkins 作业发送不同的参数,其中包括 Git 提交 SHA1。我们想要获取使用该参数值的作业列表(Git SHA1 - 哪些作业运行了此提交?)。

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

http://jenkins.example.com/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true

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

来自该 URL 的示例输出:

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

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

【问题讨论】:

  • /api/json?tree=jobs 不要遍历文件夹,如果您有文件夹,则需要为显示的每个文件夹运行一次休息调用。只需获取为每个文件夹返回的 url 并添加 /api/json?tree=jobs
  • 这个 API 在任何地方都有文档吗?我好像没找到。

标签: api jenkins


【解决方案1】:

我也在找这个,幸运的是我找到了一个很棒的要点

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】:

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

    不确定 JSON API,但您可以使用 XML API 并结合 treexpath 参数:

    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>
    

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

    【讨论】:

      【解决方案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]
      

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

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

      【讨论】:

        【解决方案4】:

        这是仅用于传递作业的查询:

        http://jenkinsURL/job/ProjectFolderName/api/xml?tree=jobs[name,color=blue]

        这里只查询失败的作业:

        http://jenkinsURL/job/ProjectFolderName/api/xml?tree=jobs[name,color=yellow]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          • 1970-01-01
          • 2018-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多