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.

¿Cómo puedo verificar errores de SSL dentro del script de la canalización?

Trabajo en el proceso de construcción de pipelines de Jenkins que presenta un error SSL intermitente y utiliza el paquete de construcción conan para construir. El motivo es que la carpeta de construcción de conan no actualiza el SSL en caché.

¿Cómo puedo verificar errores SSL dentro del script del pipeline para poder eliminar la carpeta si hay un error SSL, de modo que conan pueda obtener los certificados actualizados del archivo de configuración al reintentar la construcción?

Actualización

El error en el registro de la consola de Jenkins es el siguiente:

ERROR: HTTPSConnectionPool(host='conan.bintray.com', port=443): Max retries exceeded with url: /v1/ping (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))

Con el fin de simular el error, el administrador de infraestructura indicó que vaciar el archivo cert.pem provocaría este error o eliminar por completo el archivo de certificado pem, pero el error anterior no ocurrió. Sin embargo, recientemente volvió a surgir el mismo problema, a pesar de haber implementado el bloque de captura “try-catch” a continuación.
¿Alguna idea de cómo capturar el error anterior y lograr que se realice el reintento correctamente? Me dijeron que eliminar la carpeta de conan actualizaría la caché del certificado, pero eso tampoco parece estar sucediendo aquí, incluso aunque al final el administrador termina eliminando manualmente la carpeta de conan y luego todo vuelve a funcionar.

def conanDir = "~/.conan"
def sslError = false
def retryMaxCount = 5
def retryCount = 0

try {
    if(!sslError){
        try{
            // intenta obtener los repositorios de conan
            remotes = sh ("conan remote list", returnStdout: true)
        } catch (Exception ex){
            sslError = true
            dir(conanDir){
                sh "rm -rf ${conanDir}"
            }
            while(retryCount<retrymaxcount && sslerror){
                try {
                    remotes = sh ("conan remote list", returnstdout: true)
                    sslerror = false
                } catch(exception e) {
                    sslerror = true
                    dir(conandir){
                        sh "rm -rf ${conandir}"
                    }
                    retrycount++
                }
            }
        }
    }
    // algún otro código aquí
} catch(exception remotenotfound){
    sh "conan remote add $repo http://server/.../repo"
    sh "conan user -p ${pwd} -r $repo ${usr}"
}

&&=”” sslerror){=”” try=”” {=”” remotes=”sh” (“conan=”” remote=”” list”,=”” returnstdout:=”” true)=”” sslerror=”false” }=”” catch(exception=”” e)=”” {=”” sslerror=”true” dir(conandir){=”” sh=”” “rm=”” -rf=”” ${conandir}”=”” }=”” retrycount++=”” }=”” }=”” }=”” }=”” algún=”” otro=”” código=”” aquí=”” }=”” catch(exception=”” remotenotfound){=”” sh=”” “conan=”” remote=”” add=”” $repo=”” http://server/…/repo”=”” sh=”” “conan=”” user=”” -p=”” ${pwd}=”” -r=”” $repo=”” ${usr}”=”” }=”” =""></retrymaxcount && sslerror){
try {
remotes = sh ("conan remote list", returnstdout: true)
sslerror = false
} catch(exception e) {
sslerror = true
dir(conandir){
sh "rm -rf ${conandir}"
}
retrycount++
}
}
}
}
// algún otro código aquí
} catch(exception remotenotfound){
sh "conan remote add $repo http://server/.../repo"
sh "conan user -p ${pwd} -r $repo ${usr}"
}

>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para verificar errores SSL dentro del script de canalización, puedes usar un bloque try-catch de la siguiente manera:

    try {
       // algún código que puede generar un error SSL
    } catch (Exception ex) {
       // manejar el error SSL
       dir(conanDir){
          sh "rm -rf ${conanDir}/cache/certs"
       }
       retryCount++
    }
    

    Dentro del bloque catch, puedes eliminar la carpeta de SSL en caché utilizando el comando dir y luego actualizar los certificados al reintentar la compilación. En este caso, puedes eliminar la carpeta cache/certs dentro del directorio conanDir.

    Es importante tener en cuenta que al eliminar la carpeta, la caché de certificados no se actualizará de inmediato. Es posible que necesites reintentar la compilación varias veces antes de que se obtengan los nuevos certificados del archivo de configuración.

    Además, ten en cuenta que eliminar toda la carpeta ‘~/.conan’ puede que no sea el mejor enfoque, ya que podría eliminar otros archivos importantes. En su lugar, es mejor eliminar solo la carpeta específica que necesita ser actualizada.

Comments are closed.