Saltar al contenido

Cómo usar la variable de entorno jenkins en Jenkinsfile if declaración

No dejes de compartir nuestro espacio y códigos en tus redes sociales, ayúdanos a ampliar esta comunidad.

Solución:

El problema es que cuando lo haces echo "False" > scan.txt echo dejará un salto de línea al final del archivo, puede ver esto si hace eco env.TEXT en su secuencia de comandos de canalización.

Así que lo que tienes que hacer es usar String.trim() antes de comprobar si es igual False, recortar eliminará todos los espacios en blanco al principio y al final. Además, la mejor manera de probar si un string contiene es para usar Boolean.parseBoolean()hace todo el trabajo duro por usted.

Intentemos esto:

node 
    sh 'echo "False" > output.txt'
    def val = readFile 'output.txt'
    echo "$val"
    echo "$val.trim()"
    if (val.equals("False"))  // This will print No
        echo "Yes"
     else 
        echo "No"
    
    if (val.trim().equals("False"))  // This will print Yes
        echo "Yes"
     else 
        echo "No"
    
    if (!Boolean.parseBoolean(val))  // This will print Yes
        echo "Yes"
     else 
        echo "No"
    

Y en la salida obtenemos:

Started by user jon
[Pipeline] node
Running on master in /var/lib/jenkins/workspace/pl
[Pipeline] 
[Pipeline] sh
[pl] Running shell script
+ echo False
[Pipeline] readFile
[Pipeline] echo
False

[Pipeline] echo
False
[Pipeline] echo
No
[Pipeline] echo
Yes
[Pipeline] echo
Yes
[Pipeline] 
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

Como puede ver, tenemos un salto de línea adicional cuando hacemos el primer paso de eco. También tenga en cuenta que Boolean.parseBoolean() maneja el string sin ningún recorte.

aquí hay algunos casos, espero que ahorre tiempo para algunas personas:

node 

sh 'echo "False" > output.txt'
def val = readFile 'output.txt'
echo "$val"
echo "$val.trim()"
if ( "$val.trim()" ==~ /False/ ) 
    echo "Match Yes trim"
 else 
    echo "Match No trim"


if ( "$val" ==~ /(?ms)False/ ) 
    echo "Match Yes (?ms)"
 else 
    echo "Match No (?ms)"


if ( "$val" ==~ /(?ms)False.*/ ) 
    echo "Match Yes (?ms).*"
 else 
    echo "Match No (?ms).*"


if ( "$val" =~ /False/ ) 
    echo "Match Yes 1="
 else 
    echo "Match No 1="



Producción:

[Pipeline] sh
+ echo False
[Pipeline] readFile
[Pipeline] echo
False

[Pipeline] echo
False
[Pipeline] echo
Match Yes trim
[Pipeline] echo
Match No (?ms)
[Pipeline] echo
Match Yes (?ms).*
[Pipeline] echo
Match Yes 1=

Donde (?ms) significa varias líneas y s para la nueva línea de coincidencia de puntos en expresiones regulares.

Tenga en cuenta que echo "False" > agregará nueva línea al archivo. Esto necesita ser recortado o echo -n usó.

Comentarios y calificaciones del tutorial

Si te sientes estimulado, eres capaz de dejar un ensayo acerca de qué le añadirías a este artículo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *