当前位置: 首页 > 知识库问答 >
问题:

从Jenkins那里,我如何获得JSON中当前正在运行的作业的列表?

孟和玉
2023-03-14

我可以通过远程API找到关于Jenkins服务器的所有信息,但不能找到当前正在运行的作业列表。

这个,

http://my-jenkins/computer/api/json

http://my-jenkins/computer/(master)/api/json

这似乎是最合乎逻辑的选择,但它们没有说明(除了作业数)哪些作业正在实际运行。

共有3个答案

高承望
2023-03-14

有点难,但我认为您可以通过查看作业对象中的颜色键来推断当前正在运行的作业,当您在/jenkins/api/json执行GET时?漂亮=true。如果Jenkins中给定作业的“球”图标是动画的,我们就知道它正在运行。

看看JSON响应中的作业对象数组:

{
 ...
  "jobs" : [
    {
      "name" : "Test Job 1",
      "url" : "http://localhost:8000/jenkins/job/Test%20Job%201/",
      "color" : "blue"
    },
    {
      "name" : "Test Job 2",
      "url" : "http://localhost:8000/jenkins/job/Test%20Job%202/",
      "color" : "blue_anime"
    }
  ...
}

在这种情况下,“color”:“blue_anime”表示作业当前正在运行,“color”:“blue”表示作业未运行。

希望这有帮助。

鄢修德
2023-03-14

我有一个使用view Job Filters插件定义的视图,该插件过滤当前正在运行的作业,然后您可以在查看页面上使用/api/json查看正在运行的作业。我也有一个用于流产、不稳定等。

使现代化

选择“编辑视图”→ 工作过滤器→ 添加作业筛选器

施利
2023-03-14

在Jenkins中,作业和构建之间经常存在混淆,尤其是因为作业通常被称为“构建作业”。

  • 作业(或“构建作业”或“项目”)包含描述要运行什么以及如何运行它的配置。
  • 构建是作业的执行。构建包含有关开始和结束时间、状态、日志记录等的信息。

看见https://wiki.jenkins-ci.org/display/JENKINS/Building更多信息的软件项目。

如果您想要当前正在构建的作业(即有一个或多个正在运行的构建),最快的方法是使用REST API和XPath来过滤以\u anime结尾的颜色,如下所示:

http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs

会给你一些类似的东西:

<jobs>
  <job>
    <name>PRE_DB</name>
    <url>http://jenkins.example.com/job/my_first_job/</url>
    <color>blue_anime</color>
  </job>
  <job>
    <name>SDD_Seller_Dashboard</name>
    <url>http://jenkins.example.com/job/my_second_job/</url>
    <color>blue_anime</color>
  </job>
</jobs>

Jenkins使用Color字段来指示作业的状态,其中_anime后缀表示作业当前正在生成。

不幸的是,这不会给你任何关于实际运行的构建的信息。作业的多个实例可能同时运行,并且运行的构建并不总是最后启动的。

如果要列出所有正在运行的构建,还可以使用REST API快速获得答案,如下所示:

http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds

会给你一些类似的东西:

<builds>
  <url>http://jenkins.example.com/job/my_first_job/1412/</url>
  <url>http://jenkins.example.com/job/my_first_job/1414/</url>
  <url>http://jenkins.example.com/job/my_second_job/13126/</url>
</builds>

在这里,您可以看到所有当前正在运行的构建的列表。您需要解析URL以将作业名称与构建号分开。请注意my_first_job有两个当前正在运行的构建。

 类似资料:
  • 问题内容: 我可以通过Remote API找到有关我的Jenkins服务器的所有信息,但不能找到当前正在运行的作业的列表。 这个, 要么 看起来似乎是最合乎逻辑的选择,但是他们没有说出(实际上是作业数)实际正在运行的作业。 问题答案: 我有一个使用“ 查看作业过滤器”插件定义的视图,该视图仅过滤当前正在运行的作业,然后您可以在视图页面上使用以查看正在运行的作业。我也有一个用于流产,不稳定等。 更新

  • 问题内容: 我有一些任务是在Java Quartz Jobs的帮助下执行的,但是我需要在某些情况下在代码中停止某些任务。我读到这可以通过InterruptableJob完成。但是我不知道我应该怎么做? 问题答案: 您需要将您的工作写成InterruptableJob的实现。要中断此作业,您需要Scheduler的句柄,然后调用 请查看上述类的@javadoc,石英发行版也包含此示例(example

  • 在浏览了spring文档之后,在我的代码中。 我面临的问题是,有时工作的终止是发生在预期和其他时间终止工作是不发生的。实际上,每次调用joboperator上的stop时,它都在更新BATCH_JOB_EXECUTION表。当终止成功发生时,作业的状态将通过杀死批处理过程中的jobExecution更新为STOPPED。其他失败的时候,它会完成批处理的其他不同流,并将BATCH_JOB_EXECU

  • 问题内容: 如果我知道作业ID,有什么方法可以检索作业配置(配置中的某些属性)? 基本上,我正在做的是检查当前是否有任何正在运行的作业,然后我要检查当前正在运行的任何作业中是否存在某些属性值? 用于检索当前正在运行的作业的部分代码: 问题答案: 您可以在作业跟踪器中查看正在运行的作业的配置,该配置通常在端口50030上运行。

  • 问题内容: 我有这个独特的要求来检查给定的节点是否正在运行作业。我正在考虑使用groovy,因为它看起来是最简单的选择。 它使我能够找到从站是否在线。对我来说,下一步是检查它是否正在运行作业。 我正在考虑使用API函数setAcceptingTasks(false)来将slave标记为正在运行作业,以便下次当我使用isAcceptingTasks()查询时,我会得到false,因此不会在该slav

  • 我想阻止Jenkins节点在完成已经执行的作业后再执行任何其他作业。 我该怎么办?我目前正在告诉詹金斯准备关机。这会错误地停止向所有节点分配新作业。