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: Trabajo de canalización bloqueado en el paso de input()

Estoy ejecutando el pipeline de Terraform a través de Jenkinsfile, donde estoy utilizando un bloque input(...) para la aprobación del usuario, antes de aplicar. Este es el fragmento de código:

stage('tf_plan') {

agent {
    label: 'Jenkins-Linux-Dev'
  }

steps {
    sh(
      label: 'Terraform Plan',
      script: '''
        #!/usr/bin/env bash
        terraform plan -input=false -no-color -out=plan.tfplan'
      '''
    )
  }
}
stage('tf_approve') {

when { expression { return env.Action == 'apply' } }

options {
    timeout( time: 1, unit: 'MINUTES' )
  }
  steps {
    input(
      message: '¿Continuar con el Plan de Terraform anterior??',
      ok: 'Continuar'
    )
  }
}
stage('tf_apply') {

agent {
    label: 'Jenkins-Linux-Dev'
  }

when { expression { return env.Action == 'apply' } }

steps {
    sh(
      label: 'Terraform Apply',
      script: '''
        #!/usr/bin/env bash
        terraform apply -auto-approve -input=false -no-color plan.tfplan'
      '''
    )
  }
}

stage('tf_plan') funciona perfectamente bien, pero cuando env.Action = 'apply', no avanza más después de stage('tf_approve'). Se queda atascado en el paso Continuar o Abortar sin avanzar al hacer clic en ninguno de ellos. ¿Alguna idea de cuál podría ser el problema?

Cualquier ayuda sería muy apreciada.

-S

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el fragmento de código proporcionado, parece que la condición when para la etapa tf_approve está causando el problema. La condición env.Action == 'apply' está verificando si existe una variable de entorno llamada Action con un valor de apply, pero no parece estar configurada en ninguna parte del pipeline.

    Para solucionar esto, puedes establecer la variable de entorno Action antes de ejecutar el pipeline o actualizar la condición when a algo como params.Action == 'apply' y pasar el valor de Action como un parámetro al activar el pipeline.

    Una vez que se cumpla la condición when, el pipeline debería continuar a la etapa tf_apply y ejecutar el comando de aplicar de Terraform.

    También vale la pena verificar si hay errores o mensajes de registro en la salida de la consola de Jenkins que puedan proporcionar más información sobre lo que está causando que el pipeline se quede atascado en el paso input.

Comments are closed.