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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:33:10