记录-gitlab自动部署-git拉取代码失败构建失败 + linux系统升级git(yum安装 + 源码安装)

遇见的问题

fatal: git fetch-pack: expected shallow list

在使用gitlab自动构建部署时,遇到的一个问题我第一次构建部署的时候成功了,但是后面再去部署构建,拉代码的时候出现问题了。

Reinitialized existing Git repository in /home/gitlab-runner/builds/NqAgEmSK/0/lihuifu/graphical_admin/.git/
fatal: git fetch-pack: expected shallow list
fatal: The remote end hung up unexpectedly
ERROR: Job failed: exit status 1

参考网上的资料,发现很可能是 git 版本过低导致的。

赶紧去看了下自己的 git 和 gitlab-runner的版本

git --version
gitlab-runner --version

发现

git版本:1.8.3.1
gitlab-runner版本:12.5

升级git版本

这里有两种方式:

  • 更新一下yum中git的源,然后用yum来安装git
  • 源码安装git

个人推荐第一种,两种我都试过,使用源码安装的时候发现再去安装gitlab-runner的时候,一直提示我需要git,我佛了,不是安装好git了吗,赶紧把源码安装的卸载了,然后果断使用yum安装git,然后再安装了 gitlab-runner。

我发现:gitlab-runner是依赖于git的,你在安装 gitlab-runner之前必须要把 git安装好,而且如果你在gitgitlab-runner都已经安装好的情况下,再去动git(更新/卸载之类)。你的gitlab-runner则需要重新安装…wft!!!

两种安装方式都贴出来:

更新yum中git源

先给一个centos7系统更新git的示例:

# 先安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

# 安装git
yum install git

# 更新git
yum install git

那么先看下一自己的操作系统

cat /etc/redhat-release

# centos8的系统 CentOS Linux release 8.0.1905 (Core)

centos8默认的git版本应该是在2以上的,这里还是说明下怎么找。

那么我去这个源的网站上,看下有没有适合我系统的git源

http://opensource.wandisco.com/centos/

在这里插入图片描述

正好有centos8的,一路点进去,找到相应的 rpm包,然后yum install安装

centos8的git源

# 安装git源
yum install http://opensource.wandisco.com/centos/8/git/x86_64/wandisco-git-release-8-1.noarch.rpm

# 安装git
yum install git

# 更新git
yum update git

执行完之后会发现,你的git版本已经到 2.x版本了。

整完后,如果要使用gitlab-runner,记得再去安装下 gitlab-runner

快捷入口:安装gitlab-runner12.5版本的

源码方式安装

需要先去安装一下依赖。

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum -y install gcc perl-ExtUtils-MakeMaker

把旧版本的git卸载了

yum -y remove git

可以先选择好安装到哪个目录下,以 /usr/local/src为例。

cd /usr/local/src

去网站上找找,你自己需要的包

https://mirrors.edge.kernel.org/pub/software/scm/git/在这里插入图片描述

找到后,直接复制下载地址,然后wget下载就行了

# 下载源包 2.3.4版本的
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.3.4.tar.xz

解压

tar -xvf git-2.3.4.tar.xz

进入目录

cd git-2.3.4

编译(这里的 /usr/local是git安装到的目录

make prefix=/usr/local/git all

安装

make prefix=/usr/local/git install

配置环境变量

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile

查看版本,升级到2版本了。

git --version

两种方式都可以。

小提示

另外,假如我们要删除源码安装的git,那么就直接把环境变量中的相关配置一删除,再把所有关于git相关的文件全部删除即可。如果你发现,全都删了而且环境变量也删了,但是git的命令仍然存在。你不妨可以先把当前的远服务器程连接工具的窗口关闭,然后重新打开一个,你会发现惊喜。哈哈

参考自大佬文章

无翼之雀:gitlab自动构建(二次构建)报错–fatal: git fetch-pack: expected shallow list

无翼之雀:Centos(Linux)升级git最新版本

猜你喜欢

转载自blog.csdn.net/weixin_45248492/article/details/124895349