¿Cómo paso variables entre etapas en una canalización declarativa?
En una canalización con script, deduzco que el procedimiento es escribir en un archivo temporal y luego leer el archivo en una variable.
¿Cómo hago esto en una canalización declarativa?
Por ejemplo, quiero activar la construcción de un trabajo diferente, basado en una variable creada por una acción de shell.
stage("stage 1") {
steps {
sh "do_something > var.txt"
// I want to get var.txt into VAR
}
}
stage("stage 2") {
steps {
build job: "job2", parameters[string(name: "var", value: "${VAR})]
}
}
Respuestas:
Si desea usar un archivo (ya que un script es lo que genera el valor que necesita), puede usarlo
readFile
como se muestra a continuación. Si no es así, utilícelosh
con lascript
opción que se muestra a continuación:fuente
def myVar
y usarlo después conecho ${myVar}
si desea tener su configuración en la parte superior del archivo;)withEnv
contenedor en la segunda etapa, para que pueda usar la variable en el contexto desh
. De lo contrario, imprimirá una cadena vacía. Al menos lo hace con Jenkins 2.124.Simplemente:
fuente
Tuve un problema similar ya que quería que una canalización específica proporcionara variables y muchas otras que la usaran para obtener estas variables.
Creé una canalización my-set-env-variables
Puedo reutilizar estas variables en otra canalización my-set-env-variables-test
fuente