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.

Jenkins Declarative Piplines: el script no puede capturar el parámetro como variable.

Soy nuevo en Jenkins. Estoy tratando de crear un pipeline básico que utiliza parámetros basados en opciones. A continuación se muestra mi script.

Código —-

pipeline{
agent {
label ‘agente’
}
parameters {
choice choices: [‘John’, ‘Stacy’], description: ‘Elija uno’, name: ‘Persona’
}
stages {
stage(‘Imprimir’) {
steps {
echo “Hola ${params.Person}”
sh “””if (${params.Person} = ‘John’)
then
echo ‘La persona es hombre.’
else
echo ‘La persona es mujer.’
fi”””
}
}
}
}

Ahora mi construcción se completa correctamente independientemente de la opción que elija. Siempre muestra el resultado “La persona es mujer”.

A continuación se muestra el resultado de una de mis construcciones.

Comenzado por el usuario ****
[Pipeline] Inicio del Pipeline
[Pipeline] nodo
Ejecutando en agente en
/home/temp/jenkins_agent/workspace/ChoiceBased PL
[Pipeline] {
[Pipeline] etapa
[Pipeline] { (Imprimir)
[Pipeline] echo
Hola John
[Pipeline] sh
+ John = John
/home/temp/jenkins_agent/workspace/ChoiceBased PL@tmp/durable-
b7e98c46/script.sh: 1: John: no encontrado
+ echo La persona es mujer.
La persona es mujer.
[Pipeline] }
[Pipeline] // etapa
[Pipeline] }
[Pipeline] // nodo
[Pipeline] Fin del Pipeline

Finalizado: Éxito

Por favor, sugiera qué me falta.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que falta comillas alrededor de ${params.Person} en la declaración if. Modifica el paso sh de la siguiente manera:

    sh """if [ "${params.Person}" = "John" ]; then
                  echo "La persona es masculina."
              else
                  echo "La persona es femenina."
              fi"""
    

    Esto debería resolver el problema y mostrar correctamente el género según el parámetro seleccionado.

Comments are closed.