使用Hudson/Jenkins API确定当前是否正在运行给定作业

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)

  • 谢谢.将结果作为单个单词获得的下一步是:`http:// host/job/project/lastBuild/api/xml?depth = 1&xpath =*/building/text()`.它给出了真或假. (4认同)

Dam*_*euf 6

我正在使用 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)

它就像一个魅力。


Sag*_*gar 5

如果您转到工作页面,并在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)


gar*_*les 2

如果您习惯于深入研究 Jenkins Java API,则可以编写系统 Groovy 脚本来获取此数据。Job是开始的地方。