由于错误 "SSL certificate problem: unable to get local issuer certificate" (Bitbucket),Jenkins 管道脚本阻塞 git 拉取
Jenkins pipeline script blocking git pull due to error "SSL certificate problem: unable to get local issuer certificate" (Bitbucket)
我的詹金斯管道脚本非常简单(到目前为止),见下文
node{
stage('Scm Checkout'){
git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
}
}
我得到的错误是 SSL certificate problem: unable to get local issuer certificate
- 我从 bitbucket 仓库中提取。
有趣的是它在以下行失败:
git.exe fetch --tags --force --progress -- https://xx@xx/xx.git +refs/heads/*:refs/remotes/origin/* # timeout=10
但是我可以 运行 从 git bash 这很好,如果我先 运行 以下命令:
git config --global http.sslVerify false
我在其他地方看到 post 有人遇到同样的问题,他的评论是:"Adding following to gitconfig file resolved the issue"
{{[http] }}
sslVerify = false
这可能是解决方案,但我不确定我需要遵循哪些具体步骤才能实现此目的
禁用 ssl 验证很少是一个好的解决方案,只会考虑用于测试(例如检查网络连接是否有效)
最好定义一个执行 git config --list
的虚拟作业,并记下 ca-bundle.crt.
的 http.sslcainfo
路径
您可以在该捆绑包中添加 certificates from bitbucket.org(使用 openssl s_client -showcerts -connect
)。
如果您想在git中禁用ssl验证,并且不想在您的管道中执行git config ...
命令,您可以编辑git配置文件并添加最后
[http]
sslVerify = false
您可以在不同的文件中执行此操作,具体取决于您是希望此更改仅应用于当前存储库,还是应用于同一节点中的所有存储库。我建议你看看 git-config
man page
FILES
... there are three files where git config will search for configuration options:
$GIT_DIR/config
Repository specific configuration file. (The filename is of course relative to the repository root, not the working directory.)
~/.gitconfig
User-specific configuration file. Also called "global" configuration file.
$(prefix)/etc/gitconfig
System-wide configuration file.
在检出之前添加一个步骤,将此配置插入活动存储库中,这样就可以解决问题,并且只会影响当前存储库。以下代码行中的某些内容应该可以工作
node {
stages {
stage('Pre-Checkout') {
steps {
sh "git config http.sslVerify false"
}
}
stage('Scm Checkout'){
git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
}
}
}
我的詹金斯管道脚本非常简单(到目前为止),见下文
node{
stage('Scm Checkout'){
git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
}
}
我得到的错误是 SSL certificate problem: unable to get local issuer certificate
- 我从 bitbucket 仓库中提取。
有趣的是它在以下行失败:
git.exe fetch --tags --force --progress -- https://xx@xx/xx.git +refs/heads/*:refs/remotes/origin/* # timeout=10
但是我可以 运行 从 git bash 这很好,如果我先 运行 以下命令:
git config --global http.sslVerify false
我在其他地方看到 post 有人遇到同样的问题,他的评论是:"Adding following to gitconfig file resolved the issue"
{{[http] }}
sslVerify = false
这可能是解决方案,但我不确定我需要遵循哪些具体步骤才能实现此目的
禁用 ssl 验证很少是一个好的解决方案,只会考虑用于测试(例如检查网络连接是否有效)
最好定义一个执行 git config --list
的虚拟作业,并记下 ca-bundle.crt.
http.sslcainfo
路径
您可以在该捆绑包中添加 certificates from bitbucket.org(使用 openssl s_client -showcerts -connect
)。
如果您想在git中禁用ssl验证,并且不想在您的管道中执行git config ...
命令,您可以编辑git配置文件并添加最后
[http]
sslVerify = false
您可以在不同的文件中执行此操作,具体取决于您是希望此更改仅应用于当前存储库,还是应用于同一节点中的所有存储库。我建议你看看 git-config
man page
FILES
... there are three files where git config will search for configuration options:$GIT_DIR/config
Repository specific configuration file. (The filename is of course relative to the repository root, not the working directory.)~/.gitconfig
User-specific configuration file. Also called "global" configuration file.$(prefix)/etc/gitconfig
System-wide configuration file.
在检出之前添加一个步骤,将此配置插入活动存储库中,这样就可以解决问题,并且只会影响当前存储库。以下代码行中的某些内容应该可以工作
node {
stages {
stage('Pre-Checkout') {
steps {
sh "git config http.sslVerify false"
}
}
stage('Scm Checkout'){
git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
}
}
}