Определите, выполняется ли задание в данный момент, используя Hudson / Jenkins API - PullRequest
15 голосов
/ 02 сентября 2011

Существует ли API для определения, выполняется ли задание в данный момент или нет?

В идеале, я также хотел бы иметь возможность определить его приблизительный% выполнения и получить информацию о номере ревизии SVN, а также зафиксировать комментарий!

EDIT:

Я нашел ответ. http://host/job/project/lastBuild/api/ где-то есть почти все, что мне нужно! Если вы начнете сборку вручную, она не скажет вам наборы изменений SCM, но это имеет смысл. Это все еще говорит вам о последней версии SCM, так что это хорошо. В общем, достаточно для моих целей прямо сейчас.

Ответы [ 4 ]

19 голосов
/ 24 августа 2012

Как сказали 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>
...
5 голосов
/ 02 сентября 2011

Если вы перейдете на страницу своей работы и добавите «api» в конец URL-адреса, вы получите информацию об использовании API.

http://yourjenkins/job/job_name/api

Дополнительная информация об использовании Jenkins API:

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
2 голосов
/ 23 июля 2014

Я использую плагин 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))
}

Он работает как шарм.

2 голосов
/ 02 сентября 2011

Если вам удобно копаться в Java API Дженкинса, вы можете написать системный скрипт Groovy для получения этих данных. Job class - это то место, с которого нужно начинать.

...