dty*_*dty 17 hudson hudson-api jenkins
是否有API来确定给定作业当前是否正在运行?
理想情况下,我还希望能够确定其估计完成百分比并获取SVN修订号的详细信息并提交评论!
编辑:
我找到了答案.http://host/job/project/lastBuild/api/在某个地方几乎拥有我需要的所有东西!如果您启动手动构建,它将不会告诉您SCM更改集,但这是有道理的.它仍然告诉你最新的SCM修订版,所以这很好.总而言之,这对我的目的来说足够好了.
zag*_*iff 19
正如gareth_bowles和Sagar所说,使用Jenkins API是了解的方法.如果您将深度设置为1,您将看到您要查找的内容:
http://host/job/project/lastBuild/api/xml?depth=1
Run Code Online (Sandbox Code Playgroud)
您将看到有一个<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>
...
Run Code Online (Sandbox Code Playgroud)
我正在使用 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))
}
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力。
如果您转到工作页面,并在URL的末尾添加"api",您将获得有关使用API的信息.
http://yourjenkins/job/job_name/api
Run Code Online (Sandbox Code Playgroud)
有关使用Jenkins API的更多信息:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22747 次 |
| 最近记录: |