【发布时间】:2021-12-09 14:13:26
【问题描述】:
Jenkins 构建管道作业时出现间歇性 SSL 错误,该错误使用 conan 构建包进行构建。原因是柯南构建文件夹没有刷新缓存的 SSL。
如何检查管道脚本中的 SSL 错误,以便在出现 SSL 错误时删除文件夹,以便柯南在重试构建时从配置文件中获取新证书。
更新
jenkins 控制台日志上的错误如下:
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)'),))
为了模拟错误,infra admin 告诉清空 pem 证书文件会导致此错误或完全删除证书 pem 文件,但以上 错误没有发生,但最近同样的问题再次发生,即使下面的 try catch 已经到位。 知道如何捕获上述错误并使重试成功吗?有人告诉我删除柯南文件夹会刷新证书缓存,但这似乎也没有发生在这里 即使最终管理员最终手动删除柯南文件夹并在它开始工作后。
def conanDir = "~/.conan"
def sslError = false
def retryMaxCount = 5
def retryCount = 0
try {
if(!sslError){
try{
//try to get conan remotes
remotes = sh (script: "conan remote list", returnStdout: true)
} catch (Exception ex){
sslError = true
dir(conanDir){
sh "rm -rf ${conanDir}"
}
while(retryCount<retryMaxCount && sslError){
try {
remotes = sh (script: "conan remote list", returnStdout: true)
sslError = false
} catch(Exception e) {
sslError = true
dir(conanDir){
sh "rm -rf ${conanDir}"
}
retryCount++
}
}
}
}
//some other code here
} catch(Exception RemoteNotFound){
sh "conan remote add $repo http://server/.../repo"
sh "conan user -p ${pwd} -r $repo ${usr}"
}
【问题讨论】:
标签: jenkins jenkins-pipeline jenkins-groovy