hudson jenkins hudson-api

Determine si el trabajo determinado se está ejecutando actualmente utilizando Hudson/Jenkins API



hudson-api (4)

¿Hay una API para determinar si un trabajo determinado se está ejecutando actualmente o no?

Idealmente, también me gustaría poder determinar su% estimado y obtener los detalles del número de revisión de SVN y también ¡cometeré comentarios!

EDITAR:

Encontré la respuesta. http://host/job/project/lastBuild/api/ tiene casi todo lo que necesito en algún lado! Si inicias una compilación manual, no te dirá los conjuntos de cambios SCM, pero eso tiene sentido. Sin embargo, todavía te dice la última revisión de SCM, así que está bien. En general, lo suficientemente bueno para mis propósitos en este momento.


Si te sientes cómodo explorando la API Java de Jenkins, puedes escribir una secuencia de comandos Groovy del sistema para obtener esta información. La clase de trabajo es el lugar para comenzar.


Si va a la página de su trabajo y agrega "api" al final de la URL, obtendrá información sobre el uso de la API.

http://yourjenkins/job/job_name/api

Más información sobre el uso de la API de Jenkins:

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API


Como dijo gareth_bowles y Sagar, usar la API de Jenkins es la forma de saberlo. Si pones la profundidad en 1, verás lo que estás buscando:

http://host/job/project/lastBuild/api/xml?depth=1

Verás que hay una etiqueta <building> que indica si esa compilación se está ejecutando

... <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> ...


Estoy usando el complemento de Groovy y ejecuto el siguiente fragmento de código como sistema:

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)) }

Funciona a las mil maravillas.