Определите, выполняется ли задание в настоящее время с использованием API Hudson/Jenkins
Существует ли API для определения того, выполняется ли данное задание или нет?
В идеале, я также хотел бы, чтобы определить его оцененный% complete и получить детали номера версии SVN и комментировать комментарий тоже!
EDIT:
Я нашел ответ. http://host/job/project/lastBuild/api/
имеет почти все, что мне нужно в нем где-то! Если вы начнете сборку вручную, он не скажет вам изменения в наборах SCM, но это имеет смысл. Он все еще говорит вам последнюю версию SCM, хотя и так хорошо. В общем, достаточно хорошо для моих целей прямо сейчас.
Ответы
Ответ 1
Как говорят gareth_bowles и Sagar, использование API Jenkins - это способ узнать.
Если вы поместите глубину в 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>
...
Ответ 2
Если вы перейдете на страницу своей работы и добавьте "api" в конец URL-адреса, вы получите информацию об использовании API.
http://yourjenkins/job/job_name/api
Дополнительная информация об использовании Jenkins API:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Ответ 3
Если вам удобно разбирать Jenkins Java API, вы можете написать систему Groovy script, чтобы получить эти данные. Класс работы - это место для запуска.
Ответ 4
Я использую плагин 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))
}
Он работает как шарм.