You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Jenkins checkout与git插件的SSL证书验证?

问题1解答

你的猜测部分正确,但核心原因不是插件用Java实现:

  • git config --global 是对原生git命令生效的,你通过sh git clone可以正常拉取,已经证明全局配置本身是有效的。
  • Jenkins的checkout、git步骤默认会调用系统原生git命令,之所以没有读取到你配置的sslVerify false,90%以上的概率是Jenkins agent运行任务的用户和你写入~/.gitconfig的用户不是同一个,或者Jenkins运行任务时修改了HOME环境变量,导致git没有读到对应的全局配置文件。
  • 如果你在Git Client插件的全局配置里将git实现改为了JGit(Java实现的git客户端),那确实不会读取系统的.gitconfig文件,此时原生git的全局配置对插件步骤无效。

问题2解答

是的,checkout SCM步骤完全依赖git插件和git-client插件:

  • 上层checkout步骤和git步骤由Git插件提供,底层git操作能力由Git Client插件提供
  • Git Client插件支持两种实现:调用系统原生git命令、使用内置JGit实现

问题3解答

你第一个项目checkout正常,大概率是第一个项目的SCM配置中已经默认开启了跳过SSL验证,或是使用SSH协议拉取不会触发HTTPS证书校验。拉取第二个项目可以通过以下几种方法禁用SSL验证,优先推荐前两种:

  1. Pipeline checkout步骤直接配置跳过SSL
    在拉取第二个项目的checkout步骤中直接添加CloneOption配置即可生效,示例:
checkout([
  $class: 'GitSCM',
  branches: [[name: '你要拉取的分支名,比如*/master']],
  userRemoteConfigs: [[url: 'https://gitlab-ops.prod.hccn/iac/gitops/vsphere_linux.git']],
  extensions: [[$class: 'CloneOption', http.sslVerify: false]]
])
  1. 调整Git Client插件全局配置
    进入Jenkins全局管理 -> 工具配置 -> Git 部分:
  • 将Git实现改为Native Git(而非JGit)
  • 全局添加git配置项http.sslVerify false,所有调用Git插件的步骤都会生效
  1. Pipeline中提前写入用户git配置
    在调用checkout拉取第二个项目之前,先执行一步sh命令写入当前运行用户的git配置:
sh 'git config --global http.sslVerify false'
// 后续再执行checkout步骤即可读到配置
  1. 如果使用JGit实现的话
    在Jenkins agent的启动JVM参数中添加-Dorg.eclipse.jgit.transport.http.disableSslVerification=true即可全局禁用JGit的SSL验证。

内容的提问来源于stack exchange,提问作者Bryan Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:45:05