trigger remotely parameter extended builds jenkins

remotely - jenkins rest api



De Jenkins, ¿cómo obtengo una lista de los trabajos actualmente en ejecución en JSON? (6)

A menudo hay confusión entre los trabajos y las construcciones en Jenkins, especialmente porque los trabajos a menudo se conocen como ''trabajos de construcción''.

  • Los trabajos (o ''trabajos de construcción'' o ''proyectos'') contienen una configuración que describe qué ejecutar y cómo ejecutarlo.
  • Las compilaciones son ejecuciones de un trabajo. Una compilación contiene información sobre la hora de inicio y finalización, el estado, el registro, etc.

Consulte https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project para obtener más información.

Si desea los trabajos que están construyendo actualmente (es decir, tienen una o más compilaciones en ejecución), la forma más rápida es usar la API REST con XPath para filtrar los colores que terminan en _anime , como este:

http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs

le dará algo como:

<jobs> <job> <name>PRE_DB</name> <url>http://jenkins.example.com/job/my_first_job/</url> <color>blue_anime</color> </job> <job> <name>SDD_Seller_Dashboard</name> <url>http://jenkins.example.com/job/my_second_job/</url> <color>blue_anime</color> </job> </jobs>

Jenkins usa el campo de color para indicar el estado del trabajo, donde el sufijo _anime indica que el trabajo está en desarrollo.

Lamentablemente, esto no le dará ninguna información sobre la compilación en ejecución real. Varias instancias del trabajo pueden ejecutarse al mismo tiempo, y la compilación en ejecución no siempre es la última iniciada.

Si desea enumerar todas las compilaciones en ejecución, también puede usar la API REST para obtener una respuesta rápida, como esta:

http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds

Te dará algo como:

<builds> <url>http://jenkins.example.com/job/my_first_job/1412/</url> <url>http://jenkins.example.com/job/my_first_job/1414/</url> <url>http://jenkins.example.com/job/my_second_job/13126/</url> </builds>

Aquí puede ver una lista de todas las compilaciones actualmente en ejecución. Tendrá que analizar la URL para separar el nombre del trabajo del número de compilación. Observe cómo my_first_job tiene dos compilaciones que se están ejecutando actualmente.

Puedo encontrar casi todo sobre mi servidor Jenkins a través de la Remote API, pero no la lista de trabajos actualmente en ejecución.

Esta,

http://my-jenkins/computer/api/json

o

http://my-jenkins/computer/(master)/api/json

Parecerían las opciones más lógicas, pero no dicen nada (aparte del recuento de trabajos) sobre qué trabajos se están ejecutando en realidad.


Es un truco, pero creo que puedes deducir qué trabajos se están ejecutando actualmente mirando la clave de color en los objetos de trabajo cuando haces un GET en /jenkins/api/json?pretty=true . Si el icono de ''bola'' para un trabajo dado en Jenkins está animado, sabemos que se está ejecutando.

Eche un vistazo a la matriz de objetos de trabajo en la respuesta JSON:

{ ... "jobs" : [ { "name" : "Test Job 1", "url" : "http://localhost:8000/jenkins/job/Test%20Job%201/", "color" : "blue" }, { "name" : "Test Job 2", "url" : "http://localhost:8000/jenkins/job/Test%20Job%202/", "color" : "blue_anime" } ... }

En este caso, "color" : "blue_anime" indica que el trabajo se está ejecutando actualmente, y "color" : "blue" indica que el trabajo no se está ejecutando.

Espero que esto ayude.


Mariscal la salida y el filtro para "building: true" de la siguiente llamada a json api en un trabajo con árbol para filtrar las cosas extrañas (espero que esto ayude):

http://jenkins.<myCompany>.com/job/<myJob>/api/json?pretty=true&depth=2&tree=builds[builtOn,changeSet,duration,timestamp,id,building,actions[causes[userId]]]

le dará algo como:

{ "builds" : [ { "actions" : [ { }, { "causes" : [ { "userId" : "cheeseinvert" } ] }, { }, { }, { }, { } ], "building" : true, "duration" : 0, "id" : "2013-05-07_13-20-49", "timestamp" : 1367958049745, "builtOn" : "serverA", "changeSet" : { } }, ...


Puedes hacer esto con la api jenkins tree, usando un punto final como este:

http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]

Puede ver qué atributos de lastBuild puede usar si accede a <job-endpoint>/lastBuild/api/json .


Tengo una vista definida con el complemento Ver filtros de trabajo que filtra solo los trabajos en ejecución, luego puede usar /api/json en la página de vista para ver solo los trabajos que se están ejecutando. También tengo uno para abortar, inestable, etc.

ACTUALIZAR

Seleccione Editar vistaFiltros de trabajoAgregar filtro de trabajoFiltro de estado de compilación
Construir estados : ☑ Actualmente construyendo
Tipo de coincidencia : Excluir sin coincidencia ...


Tuve un problema similar cuando algunas compilaciones de tuberías se atascan en el estado de construcción después de reiniciar jenkins (se supone que los trabajos de piepline son duraderos y se reanudan, pero la mayoría de las veces se atascan indefinidamente).

Estas compilaciones no usan un ejecutor, por lo que la única forma de encontrarlas es abrir cada trabajo.

Todas las demás respuestas parecen funcionar cuando el proyecto se considera construir, es decir: la última construcción se está construyendo. Pero ignoran construcciones pasadas que aún se están construyendo.

La siguiente consulta funciona para mí y me da todas las compilaciones actualmente en ejecución, es decir: no tienen un resultado.

http://localhost:8080/api/xml?tree=jobs[name,builds[fullDisplayName,id,number,timestamp,duration,result]]&xpath=/hudson/job/build[count(result)=0]&wrapper=builds