trigger plugin hudson jenkins parameterized

hudson - plugin - Recupere el número de compilación o los artefactos de la compilación posterior en Jenkins



jenkins parameters (3)

Tengo un trabajo (llamélo BIGJOB) en Jenkins; varios de los pasos de compilación son para desencadenar compilaciones en otros trabajos (llámelos SMALLJOB) usando el complemento de activación parametrizado y luego espere a que se completen. Lo que necesito hacer es recuperar los artefactos de la compilación activada en SMALLJOB.

Originalmente, pensé que podía usar el complemento Copiar artefacto para recuperar los artefactos de la "última compilación" del SMALLJOB activado. Y esto funciona de manera confiable cuando solo se ejecuta un SMALLJOB a la vez.

Pero tengo múltiples BIGJOBs en ejecución, todos activando múltiples SMALLJOBs, de modo que el uso de la "última compilación" no es confiable de que dos SMALLJOBs finalicen al mismo tiempo.

¿Existe una forma más confiable de obtener los artefactos del trabajo específico posterior? Si solo pudiera obtener el número de compilación, podría usar Curl para obtener los artefactos.


En caso de que alguno (si no) tropieza con esta pregunta en el futuro:

Cuando se utiliza el complemento de activación parametrizada como un paso de compilación, entonces, si el disparador se configura con el "Bloqueo hasta que los proyectos activados finalicen sus compilaciones" habilitado, las siguientes variables de entorno estarán disponibles para otros pasos de compilación:

  • LAST_TRIGGERED_JOB_NAME = "Último proyecto iniciado"
  • TRIGGERED_BUILD_NUMBER_ {nombre de proyecto} = "Último número de compilación activado"

A partir de la versión 2.17.

  • TRIGGERED_JOB_NAMES = "Lista separada por comas de todos los proyectos activados"
  • TRIGGERED_BUILD_NUMBERS_ {nombre de proyecto} = "Lista separada por comas de números de compilación activados"
  • TRIGGERED_BUILD_RESULT_ {nombre de proyecto} = "Último resultado de compilación desencadenado del proyecto"
  • TRIGGERED_BUILD_RESULT_ {nombre del proyecto} RUN {número de compilación} = "Resultado de la compilación activada para el número de compilación"
  • TRIGGERED_BUILD_RUN_COUNT_ {nombre del proyecto} = "Número de construcciones activadas para el proyecto"

Ver más información en el sitio web del complemento - enlazado en la pregunta.


Encontré mi propia respuesta. No es tan fácil como un complemento o una variable ya establecida, pero funciona.

Utilice la API XML de Jenkins con depth = 1 (muy importante para obtener las URL completamente recorridas y toda la información disponible) y XPATH. Aquí hay una muestra de la URL que usé:

http://jenkins/job/SMALLJOB/api/xml?depth=1&xpath=/freeStyleProject/build[action/cause/upstreamProject="%JOB_NAME%" and action/cause/upstreamBuild=%BUILD_ID%]/number/text()

Esto devolvería el número de compilación del SMALLJOB correcto (el iniciado por ESTE BIGJOB). Luego use ese número en la descarga http de Jenkins para obtener los archivos de compilación archivados.


Puede referirse a estas funciones:

Jenkins Build donde puedes encontrar:

jenkinsapi.api.block_until_complete (jenkinsurl, trabajos, maxwait = 12000, intervalo = 30, raise_on_timeout = Verdadero, nombre de usuario = Ninguno, contraseña = Ninguno)

jenkinsapi.api.get_artifacts (jenkinsurl, jobid = None, build_no = None, username = None, password = None)

jenkinsapi.api.get_build (jenkinsurl, jobname, build_no, username = None, password = None)

jenkinsapi.api.get_latest_build (jenkinsurl, nombre de trabajo, nombre de usuario = Ninguno, contraseña = Ninguno)

jenkinsapi.api.get_latest_complete_build (jenkinsurl, nombre de trabajo, nombre de usuario = Ninguno, contraseña = Ninguno)

jenkinsapi.api.get_latest_test_results (jenkinsurl, nombre de trabajo, nombre de usuario = Ninguno, contraseña = Ninguno)

jenkinsapi.api.get_nested_view_from_url (url, username = None, password = None)

jenkinsapi.api.get_view_from_url (url, username = None, password = None)

jenkinsapi.api.grab_artifact (jenkinsurl, jobid, artifactid, targetdir, username = None, password = None)

jenkinsapi.api.install_artifacts (artefactos, dirstruct, installdir, basestaticurl)

jenkinsapi.api.search_artifact_by_regexp (jenkinsurl, jobid, artifactRegExp, username = None, password = None)