es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Jenkinsfile: Definir variable en función de una variable de entorno.

Me gustaría establecer una variable booleana como verdadera si una de mis variables de entorno es igual a una cadena. Solo quiero ejecutar mi etapa de prueba si esta variable “RUN_TESTS” es verdadera.

pipeline{
  environment {
     RUN_TESTS = expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
  }
 stages{
     stage('test'){
       when {
         expression { RUN_TESTS }
       }
       steps{
          // ejecutar mis pruebas.......
     }
}
}
}

Sin embargo, lo anterior no está funcionando.

¿Cómo puedo establecer una variable booleana basada en el valor de una variable de entorno que luego pueda usar para ejecutar condicionalmente una etapa de la canalización?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para establecer una variable booleana basada en el valor de una variable de entorno que se puede utilizar para ejecutar condicionalmente una etapa del pipeline, puede modificar el código de la siguiente manera:

    pipeline{
      environment {
         RUN_TESTS = sh(script: '[[ "${env.TEST_PIPELINE}" == "true" ]] && echo "true" || echo "false"', returnStdout: true).trim()
      }
     stages{
         stage('test'){
           when {
             expression { params.RUN_TESTS == 'true' }
           }
           steps{
              // ejecutar mis pruebas.......
         }
    
      }
    }
    
    
    1. En la sección de environment, debes utilizar el comando “sh” para ejecutar un script de shell que verifica si la variable de entorno “TEST_PIPELINE” está establecida en “true”.
    2. El script devuelve una cadena “true” o “false” como resultado, y el método “trim()” elimina cualquier espacio en blanco al principio o al final de la cadena.
    3. El resultado del script de shell se asigna a la variable “RUN_TESTS” como una cadena de texto.
    4. En la sección “when” de la etapa, debes utilizar la variable “params” en lugar de la variable “RUN_TESTS”. Esto se debe a que la variable “RUN_TESTS” es una cadena de texto y la variable “params” es booleana.
    5. La expresión “params.RUN_TESTS == ‘true'” evalúa a verdadero o falso dependiendo del valor de la variable “RUN_TESTS”. Si el valor es “true”, la etapa se ejecutará. Si el valor es “false”, la etapa se omitirá.

Comments are closed.