tutorial steps example español jenkins jenkins-pipeline

steps - ¿Cómo paso variables entre etapas en una tubería declarativa de Jenkins?



jenkins pipeline tutorial español (2)

Si desea usar un archivo (dado que un script es lo que genera el valor que necesita), puede usar readFile como se ve a continuación. Si no, use sh con la opción de script como se ve a continuación:

// Define a groovy global variable, myVar. // A local, def myVar = ''initial_value'', didn''t work for me. // Your mileage may vary. // Defining the variable here maybe adds a bit of clarity, // showing that it is intended to be used across multiple stages. myVar = ''initial_value'' pipeline { agent { label ''docker'' } stages { stage(''one'') { steps { echo "${myVar}" // prints ''initial_value'' sh ''echo hotness > myfile.txt'' script { // OPTION 1: set variable by reading from file. // FYI, trim removes leading and trailing whitespace from the string myVar = readFile(''myfile.txt'').trim() // OPTION 2: set variable by grabbing output from script myVar = sh(script: ''echo hotness'', returnStdout: true).trim() } echo "${myVar}" // prints ''hotness'' } } stage(''two'') { steps { echo "${myVar}" // prints ''hotness'' } } // this stage is skipped due to the when expression, so nothing is printed stage(''three'') { when { expression { myVar != ''hotness'' } } steps { echo "three: ${myVar}" } } } }

¿Cómo paso variables entre etapas en una tubería declarativa?

En una tubería programada, deduzco que el procedimiento es escribir en un archivo temporal y luego leer el archivo en una variable.

¿Cómo hago esto en una tubería declarativa?

Por ejemplo, quiero activar una compilació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})] } }


Simplemente:

pipeline { parameters { string(name: ''custom_var'', defaultValue: '''') } stage("make param global") { steps { tmp_param = sh (script: ''most amazing shell command'', returnStdout: true).trim() env.custom_var = tmp_param } } stage("test if param was saved") { steps { echo "${env.custom_var}" } } }