Jenkins构建脚本中Bower安装Angular依赖包失败求助
解决Jenkins中Bower安装Angular依赖时Git HTTP请求失败问题
我之前帮不少开发者处理过类似的Jenkins+Bower依赖安装报错,你的问题根源很明确:GitHub已经停用了dumb-http这种老旧的Git传输方式,而Jenkins服务器上的Git客户端版本过低,还在使用这种被淘汰的协议,所以执行git ls-remote等命令时会触发HTTP请求失败,出现退出码128的报错。下面给你几个可行的解决方案:
方案一:升级Jenkins服务器上的Git客户端
这是最直接的根治方法,因为GitHub现在只支持smart-http传输,新版本Git默认使用该协议:
- 先检查当前Git版本:在Jenkins构建脚本中或服务器终端执行
git --version,如果版本低于2.10.x(大概这个版本后默认启用smart-http),就需要升级 - 根据服务器系统进行升级:
- Ubuntu/Debian系统:执行
sudo apt-get update && sudo apt-get install git - CentOS/RHEL系统:执行
sudo yum update git - Windows系统:下载最新Git安装包手动更新
- Ubuntu/Debian系统:执行
- 升级完成后重启Jenkins服务,确保Jenkins能识别到新的Git版本
方案二:将Bower依赖地址改为SSH协议(适用于无法升级Git的场景)
如果暂时没法升级Git,可以把依赖的HTTPS地址换成SSH格式,绕开HTTP传输限制:
- 打开项目中的
bower.json文件,把报错的依赖地址修改为SSH格式:- 比如将
https://github.com/angular-ui/ui-utils.git改为git@github.com:angular-ui/ui-utils.git - 同样处理
angular-card-input对应的Git地址
- 比如将
- 确保Jenkins服务器的SSH公钥已经添加到你的GitHub账号的SSH密钥列表中,这样拉取代码时无需密码验证
- 重新执行Bower安装命令
bower install
方案三:配置Git强制使用smart-http协议
如果升级Git后仍有问题,可以手动配置Git使用HTTP/1.1协议(smart-http基于此):
- 在Jenkins构建脚本的Bower命令前添加Git配置:
git config --global http.version HTTP/1.1 - 或者在项目根目录创建/修改
.bowerrc文件,添加Git传输配置:{ "git": { "httpVersion": "HTTP/1.1" } }
验证修复效果
完成上述操作后,先在Jenkins服务器终端手动执行 git ls-remote --tags --heads https://github.com/angular-ui/ui-utils.git,确认能正常返回结果;再触发Jenkins构建,检查Bower安装依赖的步骤是否正常完成。
内容的提问来源于stack exchange,提问作者JonyD
相关产品推荐
相关产品推荐

