Jenkins流水线中Git Clone命令执行卡住问题求助
解决Jenkins中Git CLI克隆卡住的问题
问题原因
你当前的代码里,两个sh步骤属于独立的Shell进程,第一个sh中通过export设置的GIT_SSH_COMMAND环境变量无法传递到第二个sh进程,导致Git无法读取指定的SSH密钥,最终卡在克隆环节。
解决方案
方案1:合并命令到同一个Shell进程
将环境变量配置和Git克隆命令放在同一个sh块内,确保变量在同一个Shell生效,同时添加跳过主机密钥验证的参数,避免交互式提示导致卡住:
withCredentials([sshUserPrivateKey(credentialsId: 'my-creds', keyFileVariable: 'SSH_KEY')]) { sh ''' export GIT_SSH_COMMAND="ssh -i $SSH_KEY -o StrictHostKeyChecking=no" git clone --verbose --progress ssh://my-host/proj/proj.git ''' }
方案2:通过Jenkins环境变量传递
利用Jenkins的env对象设置环境变量,让变量在整个withCredentials块内生效:
withCredentials([sshUserPrivateKey(credentialsId: 'my-creds', keyFileVariable: 'SSH_KEY')]) { env.GIT_SSH_COMMAND = "ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no" sh 'git clone --verbose --progress ssh://my-host/proj/proj.git' }
额外排查点
如果仍出现卡住的情况,可以检查以下内容:
- 确认
my-creds对应的SSH公钥已添加到Git服务器的目标用户授权列表中 - 在Jenkins agent上测试与Git服务器的连通性:执行
sh 'ssh -i $SSH_KEY -T git@my-host',验证是否能正常建立连接 - 确保密钥文件权限正确,必要时在克隆前添加
chmod 600 $SSH_KEY命令(Jenkins的sshUserPrivateKey通常会自动设置合适权限,可手动兜底)
内容的提问来源于stack exchange,提问作者JBoy
相关产品推荐
相关产品推荐

