Jenkins流水线克隆代码库时遇Exec Format Error问题求助
解决Jenkins流水线Git仓库连接失败的问题
核心问题定位
报错指向Git生成的临时SSH脚本无法被正确执行(Exec format error),同时存在Shell执行器识别异常,即使全局配置了/bin/bash仍未生效。
修复方案
1. 强制Git使用指定Shell执行SSH命令
Git生成的临时脚本可能缺少正确的执行器声明,直接通过环境变量指定Git使用bash执行SSH:
- 在Jenkins节点的系统环境变量中添加:
GIT_SSH_COMMAND="bash -c '/usr/bin/ssh'" - 或在流水线的环境块中配置:
environment { GIT_SSH_COMMAND = 'bash -c "/usr/bin/ssh"' }
2. 校验节点级Shell配置
全局配置可能被节点本地配置覆盖,需确认节点Shell设置:
- 进入「管理Jenkins」→「管理节点」→ 选择运行流水线的节点 →「配置」
- 检查「Shell executable」是否明确设置为
/bin/bash,而非默认的sh - 若使用Docker代理,确保镜像内置
bash,并在Dockerfile中添加SHELL ["/bin/bash", "-c"]
3. 修复临时脚本权限与格式
临时脚本可能存在权限或换行符问题:
- 确保Jenkins运行用户对
/tmp目录拥有读写执行权限 - 检查脚本是否带有DOS换行符(CRLF),可通过
dos2unix工具转换格式(若能定位到临时脚本文件) - 在流水线前置步骤中全局配置Git的SSH命令:
stage('前置配置') { steps { sh 'git config --global core.sshCommand "bash -c /usr/bin/ssh"' } }
4. 升级Git客户端版本
旧版Git存在临时脚本生成的兼容性bug,建议升级到2.30以上稳定版本:
- 执行
git --version查看当前版本,通过包管理器(如apt、yum)完成升级
原报错信息:
连接仓库失败,执行命令/usr/bin/git ls-remote -h -- git@git.assembla.com:untold-universe.backend.git HEAD返回状态码128,stderr显示:
fatal: cannot exec '/tmp/jenkins-gitclient-ssh12333381895369065263.sh-copy': Exec format error,fatal: unable to fork
克隆公开仓库时可获取Jenkinsfile,但检出代码时报错:no hup cant run 'sh' exec format error
内容的提问来源于stack exchange,提问作者suyog nepal
相关产品推荐
相关产品推荐

