Jenkins声明式流水线Git插件克隆GitHub代码失败求助
问题排查与解决步骤
1. 检查Jenkins Git插件的代理设置
Jenkins Git插件默认可能使用Jenkins全局代理配置,而非代理节点本地的代理规则。你可以:
- 进入Jenkins全局配置(Manage Jenkins → Configure System),找到Git板块,检查是否设置了HTTP/HTTPS代理
- 如果节点本地无需代理,确保Git插件的代理配置为空,或勾选“使用代理节点的系统代理设置”
2. 强制Git插件使用节点本地的Git客户端
直接用sh git clone能成功,说明节点本地的Git客户端是正常的。你可以让Jenkins Git插件调用这个版本的Git:
- 进入Jenkins全局工具配置(Manage Jenkins → Global Tool Configuration),找到Git板块
- 添加一个Git安装项,取消“Install automatically”勾选,填入节点本地Git的路径(比如
/usr/bin/git) - 在流水线的
tools部分指定使用这个Git安装:
pipeline { agent any tools { git '本地Git路径配置的名称' } stages { stage('Clone') { steps { checkout scm: [ $class: 'GitSCM', branches: [[name: 'refs/tags/5.9.0']], userRemoteConfigs: [[url: 'https://github.com/ARM-software/CMSIS_5.git', credentialsId: '你的凭证ID']] ], extensions: [[$class: 'CloneOption', shallow: true, depth: 1]] } } } }
3. 修正凭证配置细节
- 确保你的凭证是**用户名+GitHub个人访问令牌(PAT)**类型(因为使用HTTPS URL),而非SSH密钥
- 核对凭证ID是否完全正确,Jenkins的凭证ID区分大小写
- 如果是公共仓库,可直接去掉
credentialsId参数,无需配置凭证
4. 检查Git插件版本与兼容性
- 将Jenkins的Git插件更新到最新稳定版,旧版本可能存在TLS协议支持不足的问题
- 确保节点本地的Git版本不低于2.20,低版本Git对TLS 1.2/1.3的支持可能存在缺陷
5. 显式指定Git使用TLS协议
在checkout步骤前添加sh命令,强制Git使用TLS 1.2:
stage('Pre-Clone') { steps { sh 'git config --global http.sslProtocol TLSv1.2' } }
内容的提问来源于stack exchange,提问作者cberk1
相关产品推荐
相关产品推荐

