Jenkins-pasando variables entre trabajos?


Tengo dos trabajos en jenkins, los cuales necesitan el mismo parámetro.

¿Cómo puedo ejecutar el primer trabajo con un parámetro para que cuando desencadene el segundo trabajo, se use el mismo parámetro?

Author: Rob Kielty, 2012-03-14

10 answers

Puede usar El complemento de disparador parametrizado que le permitirá pasar parámetros de una tarea a otra.

 58
Author: Łukasz Rżanek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-14 15:18:19

1.Acciones posteriores a la compilación > Seleccione "Activar compilación parametrizada en otros proyectos"

2.Introduzca la variable de entorno con valor.El valor también puede ser Jenkins Build Parameters.

Los pasos detallados se pueden ver aquí: -

Https://itisatechiesworld.wordpress.com/jenkins-related-articles/jenkins-configuration/jenkins-passing-a-parameter-from-one-job-to-another/

Espero que sea útil:)

 26
Author: Vinu Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-17 11:46:57

La respuesta aceptada aquí no funciona para mi caso de uso. Necesitaba ser capaz de crear parámetros dinámicamente en un trabajo y pasarlos a otro. Como Mark McKenna menciona, aparentemente no hay manera de exportar una variable desde un paso de compilación del shell a las acciones de compilación post.

Logré una solución utilizando el complemento de disparador parametrizado escribiendo los valores en un archivo y usando ese archivo como los parámetros para importar a través de 'Add post-build action' - > 'Activar compilación parametrizada...'a continuación, seleccione' Añadir parámetros '- > 'Parámetros del archivo de propiedades'.

 14
Author: Nigel Kirby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:38

(para compañeros de Google)

Si está construyendo una canalización seria con el complemento Build Flow , puede pasar parámetros entre trabajos con el DSL de la siguiente manera:

Suponiendo un parámetro de cadena disponible "CVS_TAG", para pasarlo a otros trabajos:

build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
   // will be scheduled in parallel.
   { build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
   { build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])

Sugerencia para mostrar variables / parámetros disponibles :

// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'
 9
Author: Offirmo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-09 10:09:13

Creo que la respuesta anterior necesita alguna actualización:

Estaba tratando de crear un directorio dinámico para almacenar mis artefactos de compilación de upstream, así que quería pasar mi número de compilación de trabajo de upstream al trabajo de downstream.Probé los pasos anteriores, pero no pude hacerlo funcionar. Así es como funcionó:

  1. Copié los artefactos de mi trabajo actual usando el complemento copiar artefactos.
  2. En la acción post build del trabajo upstream agregué la variable como "SOURCE_BUILD_NUMBER={{BUILD_NUMBER}" y configuré para activar el trabajo aguas abajo.
  3. Todo funcionó excepto que mi trabajo de downstream no fue capaz de obtener S SOURCE_BUILD_NUMBER para crear el directorio.
  4. Así que descubrí que para usar esta variable tengo que definir la misma variable en down stream job como una variable de parámetro como en esta imagen a continuación:

introduzca la descripción de la imagen aquí

Esto se debe a que la nueva versión de jenkins requiere que usted defina la variable en el trabajo descendente también. Espero que sea útil.

 8
Author: Tarun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-11 09:18:09

Simplemente agregue mi respuesta además de la de Nigel Kirby, ya que aún no puedo comentar:

Para pasar un parámetro creado dinámicamente, también puede exportar la variable en el mosaico 'Execute Shell' y luego pasarla a través de 'Trigger parameterized build on other projects' => 'Predefined parameters" => give 'YOUR_VAR=YOUR YOUR_VAR'. Mi equipo usa esta función para pasar la versión del paquete npm de trabajo de compilación a trabajos de implementación

ACTUALIZACIÓN: arriba solo funciona para Jenkins parámetros inyectados, parámetro creado desde shell todavía necesita usar el mismo método. eg. echo YOUR_VAR = variable{YOUR_VAR} > variable.propiedades y pasar ese archivo downstream

 7
Author: Shawn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-30 23:10:06

Puedes usar Hudson Groovy builder para hacer esto.

Primer trabajo en pipeline

introduzca la descripción de la imagen aquí

Segundo trabajo en pipeline

introduzca la descripción de la imagen aquí

 2
Author: CAMOBAP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-13 10:57:19

Me enfrenté al mismo problema cuando tuve que pasar una versión pom a un trabajo de Rundeck descendente.

Lo que hice fue usar la inyección de parámetros a través de un archivo de propiedades como tal:

1) Creación de propiedades en el archivo de propiedades vía shell:

Acciones de compilación:

  • Ejecuta un script de shell
  • Inyectar variables de entorno

Ej: definición de propiedades

2) Pasar propiedades definidas al trabajo descendente : Acciones de Post Build :

  • Activar compilación parametrizada en otro proyecto
  • Agregar parámetros: Parámetros de compilación actuales
  • Añadir parámetros: parámetros predefinidos

Ej: propiedades que envían

3) Entonces fue posible usar $POM_VERSION como tal en el trabajo Rundeck aguas abajo.

/!\ Jenkins Versión: 1.636

/!\ For some reason when creating the triggered build, it was necessary to add the option 'Current build parameters' to pass the propiedad.

 2
Author: Eli Mous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-24 07:53:34

Leyendo las respuestas, no veo otra opción que me guste, así que también la ofreceré. Me encanta la parametrización de trabajos, pero no siempre se escala bien. Si tiene trabajos que no están directamente aguas abajo del primer trabajo, sino más abajo en la tubería, realmente no desea parametrizar todos los trabajos en la tubería para poder pasar los parámetros hasta el final. O si tiene un gran número de parámetros utilizados por una variedad de otros trabajos (especialmente aquellos que no necesariamente ligado a un trabajo principal o principal), de nuevo la parametrización no funciona.

En estos casos, estoy a favor de enviar los valores a un archivo de propiedades y luego inyectarlos en cualquier trabajo que necesite usando el complemento EnvInject. Esto se puede hacer dinámicamente, que es otra forma de resolver el problema desde otra respuesta anterior donde aún se usaban trabajos parametrizados. Esta solución escala muy bien en muchos escenarios.

 2
Author: tbradt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-30 00:24:03

Ver mi respuesta en este otro post:

Funcionó para mí (El parámetro debe especificarse en ambos trabajos, no solo en el trabajo principal)

Https://stackoverflow.com/a/40348900/2010136

 0
Author: user2010136,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:45