是否有API来确定某个作业当前是否正在运行?
理想情况下,我也希望能够确定其估计完成百分比并获取SVN修订号的详细信息并提交评论!
编辑:
我找到了答案。 http://host/job/project/lastBuild/api/
几乎所有我需要的东西都在其中!如果您启动手动构建,它将不会告诉您SCM更改集,但这是有道理的。它仍然告诉你最新的SCM修订版,所以这很好。总而言之,这对我的目的来说足够好了。
答案 0 :(得分:19)
正如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>
...
答案 1 :(得分:5)
如果您转到工作页面,并在网址末尾添加“api”,您将获得有关使用API的信息。
http://yourjenkins/job/job_name/api
有关使用Jenkins API的更多信息:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
答案 2 :(得分:2)
如果您对挖掘Jenkins Java API感到满意,可以编写一个系统Groovy脚本来获取此数据。 Job class是开始的地方。
答案 3 :(得分:2)
我正在使用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))
}
它就像一个魅力。
答案 4 :(得分:0)
如构建的/api
页中所述(第“访问渐进控制台输出”一章),您可以通过调用<url-to-job>/lastBuild/logText/progressiveText
用GET请求来轮询控制台输出。引用API文档:
如果响应中还包含
X-More-Data: true header
,则服务器指示构建正在进行中
然后您就去了。您可以通过简单地在浏览器中调用相应的URL,然后使用浏览器的开发人员工具检查响应标头(通常通过按F12进行访问)来测试此行为。在Firefox中,相应的选项卡称为“网络分析”(假设我的翻译正确,我的浏览器未设置为英语)。在Chrome中,导航至“网络”标签。
此答案基于Jenkins版本2.176.3。