我可以通过远程 API 找到有关 Jenkins 服务器的几乎所有信息,但无法找到当前正在运行的作业的列表。
这个,
http://my-jenkins/computer/api/json
或
http://my-jenkins/computer/(master)/api/json
这似乎是最合乎逻辑的选择,但它们没有说明哪些作业正在实际运行(除了作业数量)。
最佳答案
在 Jenkins 中,作业和构建之间经常会混淆,特别是因为作业通常被称为“构建作业”。
- 作业(或“构建作业”或“项目”)包含描述要运行的内容以及如何运行的配置。
- 构建是作业的执行。构建包含有关开始和结束时间、状态、日志记录等的信息。
参见https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project了解更多信息。
如果您想要当前正在构建的作业(即有一个或多个正在运行的构建),最快的方法是使用带有 XPath 的 REST API 进行过滤以 _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
如何有两个当前正在运行的构建。
关于jenkins - 从 Jenkins 中,如何获取 JSON 格式的当前正在运行的作业列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843874/