是否有 API 可以确定给定作业当前是否正在运行?
理想情况下,我还希望能够确定其估计的完成百分比,并获得 SVN 修订号的详细信息并提交评论!
编辑:
我找到了答案。http://host/job/project/lastBuild/api/
几乎所有我需要的东西都在它的某个地方!如果您启动手动构建,它不会告诉您 SCM 变更集,但这是有道理的。它仍然会告诉您最新的 SCM 版本,这很好。总而言之,对于我现在的目的来说已经足够好了。
是否有 API 可以确定给定作业当前是否正在运行?
理想情况下,我还希望能够确定其估计的完成百分比,并获得 SVN 修订号的详细信息并提交评论!
编辑:
我找到了答案。http://host/job/project/lastBuild/api/
几乎所有我需要的东西都在它的某个地方!如果您启动手动构建,它不会告诉您 SCM 变更集,但这是有道理的。它仍然会告诉您最新的 SCM 版本,这很好。总而言之,对于我现在的目的来说已经足够好了。
正如 gareth_bowles 和 Sagar 所说,使用 Jenkins API 是一种了解方式。如果将深度设置为 1,您将看到要查找的内容:
http://host/job/project/lastBuild/api/xml?depth=1
你会看到有一个<building>
标签告诉你构建是否正在运行
...
<build>
<action>
<cause>
<shortDescription>Started by user Zageyiff</shortDescription>
<userId>Zageyiff</userId>
<userName>Zageyiff</userName>
</cause>
</action>
<building>true</building>
<duration>0</duration>
<estimatedDuration>-1</estimatedDuration>
<fullDisplayName>Project #12</fullDisplayName>
<id>2012-08-24_08-58-45</id>
<keepLog>false</keepLog>
<number>12</number>
<timestamp>123456789</timestamp>
<url>
http://host/job/project/12
</url>
<builtOn>master</builtOn>
<changeSet/>
<mavenVersionUsed>3.0.3</mavenVersionUsed>
</build>
...
我正在使用 Groovy 插件,并将以下代码段作为系统运行:
import hudson.model.*
def version = build.buildVariableResolver.resolve("VERSION")
println "VERSION=$version"
def nextJobName = 'MY_NEXT_JOB'
def nextJob = Hudson.instance.getItem(nextJobName)
def running = nextJob.lastBuild.building
if (running) {
println "${nextJobName} is already running. Not launching"
} else {
println "${nextJobName} is not running. Launching..."
def params = [
new StringParameterValue('VERSION', version)
]
nextJob.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))
}
它就像一个魅力。
如果您转到您的工作页面,并将“api”添加到 URL 的末尾,您将获得有关使用 API 的信息。
http://yourjenkins/job/job_name/api
有关使用 Jenkins API 的更多信息:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
如果您对深入研究 Jenkins Java API 感到满意,您可以编写一个系统 Groovy 脚本来获取这些数据。Job 类是开始的地方 。
也可以查看颜色属性。我知道这不是想要的方式。但也许有人可以利用它。通过“/job/api/xml”获取概览 xml,然后检查“anim”的颜色属性。
如/api
您的构建页面(“访问渐进式控制台输出”一章)所述,您可以通过调用 GET 请求轮询控制台输出<url-to-job>/lastBuild/logText/progressiveText
。引用 API 文档:
如果响应还包含
X-More-Data: true header
,则服务器指示构建正在进行中
你去吧。您可以通过简单地在浏览器中调用相应的 URL,然后使用浏览器的开发人员工具(通常通过按 F12 访问)检查响应标头来测试此行为。在 Firefox 中,相应的选项卡称为“网络分析”(假设我的翻译是正确的,我的浏览器没有设置为英文)。在 Chrome 中,导航到“网络”标签。
此答案基于 Jenkins 版本 2.176.3。