在使用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
这里有两种方式:
个人推荐第一种,两种我都试过,使用源码安装的时候发现再去安装gitlab-runner的时候,一直提示我需要git
,我佛了,不是安装好git了吗,赶紧把源码安装的卸载了,然后果断使用yum安装git,然后再安装了 gitlab-runner。
我发现:gitlab-runner是依赖于git的,你在安装 gitlab-runner之前必须要把 git安装好,而且如果你在git
和gitlab-runner
都已经安装好的情况下,再去动git(更新/卸载之类)。你的gitlab-runner则需要重新安装…wft!!!
两种安装方式都贴出来:
先给一个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的命令仍然存在。你不妨可以先把当前的远服务器程连接工具的窗口关闭,然后重新打开一个,你会发现惊喜。哈哈