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.

Aprobación CSR desde el pipeline de Jenkins.

Tengo un pipeline para obtener el csr y aprobarlo.

Puedo obtener los csr pendientes y aprobarlos con el siguiente comando.

sh "oc get csr"
sh "xargs oc adm certificate approve"

Ahora pasando al problema real. Cuando hay csr pendientes, el método anterior funciona bien. Cuando no se encuentran recursos, el pipeline termina en Fallo, lo cual no debería ocurrir. Aún así, quiero que el pipeline tenga éxito con un mensaje indicando que todos los nodos están actualizados y no hay csr pendientes para su aprobación.

A continuación se encuentra el error:

“`
+ oc get csr
No se encontraron recursos.
+ xargs oc adm certificate approve
error: debe especificar uno o más csr como <nombre> o -f <nombre_archivo>

ERROR: el script devolvió el código de salida 123
Finalizado: FALLO
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Para evitar que la tubería termine en fracaso cuando no se encuentren CSRs pendientes, podemos agregar una declaración condicional para verificar si hay algún CSR pendiente. Si no hay CSRs pendientes, podemos imprimir un mensaje diciendo que todos los nodos están actualizados y que la tubería puede continuar con éxito.

    Podemos modificar el comando existente de la siguiente manera:

    pipeline {
       agent any
       stages {
          stage('Aprobar CSR') {
             steps {
                script {
                   def csrOutput = sh script: 'oc get csr', returnStdout: true
                   if (csrOutput.contains('No resources found.')) {
                      echo 'Todos los nodos están actualizados. No hay CSRs pendientes para su aprobación.'
                   } else {
                      sh 'oc get csr | xargs oc adm certificate approve'
                   }
                }
             }
          }
       }
    }
    

    En este comando modificado, primero almacenamos la salida del comando oc get csr en una variable csrOutput. Luego verificamos si la salida contiene la cadena No resources found.. Si se encuentra esta cadena, imprimimos un mensaje diciendo que todos los nodos están actualizados y no hay CSRs pendientes de aprobación.

    Si hay CSRs pendientes, ejecutamos el comando para aprobarlos.

    Con esta modificación, la tubería seguirá teniendo éxito incluso cuando no haya CSRs pendientes.

    ¡Espero que esto ayude! Déjame saber si tienes alguna pregunta adicional.

Comments are closed.