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
“`
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:
En este comando modificado, primero almacenamos la salida del comando
oc get csr
en una variablecsrOutput
. Luego verificamos si la salida contiene la cadenaNo 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.