背景介绍那些乱七八糟的就跳过吧,直接上干货
一、准备
1.1:确定安装方式
开始纠结于到底是rpm还是yum,后来知道yum相当于对rpm进行了一系列的加壳,目的是解决rpm的依赖问题。那么就果断选择yum方式即可。
当前操作系统环境为centos7,当前gitalb版本为12.2.1
1.2:确定升级路线
好多人介绍过,gitlab的跨版本升级,需要先升级到当前大版本的最高版本后再升到下一版本。因此升级路线如下:
12.2.1 -> 12.10.14 -> 13.0.0 -> 13.12.9 -> 14.0.0 -> 14.6.4
ps,如果不清楚当前的版本号,可以执行以下两个命令任何之一或者从gitlab网页的“help”中查看。
[gitlab@localhost gitlab]$ sudo yum list | grep gitlab-ce
[gitlab@localhost gitlab]$ cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
1.3:gitlab 资料
gitlab中文网
1.4:特别说明
本文出现的sudo,大家酌情使用
二、操作
2.1:备份配置文件
#查看,备份配置文件。其中,/user/local/backup/gitlab/conf是我随便建的路径
[gitlab@localhost gitlab]$ sudo vim /etc/gitlab/gitlab.rb
[gitlab@localhost gitlab]$ sudo cp -rf /etc/gitlab/gitlab.rb /user/local/backup/gitlab/conf
[gitlab@localhost gitlab]$ sudo cp -rf /etc/gitlab/gitlab-secrets.json /user/local/backup/gitlab/conf
#在这个文件中,找到备份的路径、权限级别、备份文件保存时间(单位秒),如下所示。
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800
#根据需求进行修改,然后保存后重载配置,使之生效
[gitlab@localhost gitlab]$ gitlab-ctl reconfigure
2.2:备份当前gitlab
# 在任意位置执行下述命令,然后会在你设定的备份路径中生成一个当前版本的备份。
[gitlab@localhost gitlab]$ sudo gitlab-rake gitlab:backup:create
#备份后可能会出现诸如下面的文字,因此上一步的备份配置就显得很重要了。同时,如果升级失败需要回退时,需要手动将之前备份的配置文件拷回去即可。
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
#备份成功后,会生成一个如下面所示的备份文件。
1644547226_2022_02_11_12.2.1_gitlab_backup.tar
#如果需要回退时,可以执行如下命令,其中“备份名”那里要填写“1644547226_2022_02_11_12.2.1”这些内容。而非简单的版本号
[gitlab@localhost gitlab]$ sudo gitlab-rake gitlab:backup:restore BACKUP=备份名
2.3:配置yum源
既然决定使用yum方式,那么为了快速下载,需要配置yum源。
修改 /etc/yum.repos.d/gitlab-ce.repo
#其中baseurl是镜像地址
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
2.4:升级
使用yum命令,一步步的把所有版本都升级一下即可。比如按照我的升级路线,我只需要如下操作即可
[gitlab@localhost gitlab]$ sudo yum install -y gitlab-ce-12.10.14
[gitlab@localhost gitlab]$ sudo yum install -y gitlab-ce-13.0.0
[gitlab@localhost gitlab]$ sudo yum install -y gitlab-ce-13.12.9
[gitlab@localhost gitlab]$ sudo yum install -y gitlab-ce-14.0.0
[gitlab@localhost gitlab]$ sudo yum install -y gitlab-ce-14.6.4
2.5:后续
升级后,稳妥起见可以重启。如果在重启后发现部分配置异常,可以像3.1中所述那样重载配置后再次重启已达到使配置生效的目的。命令如下
[gitlab@localhost gitlab]$ sudo gitlab-ctl reconfigure
[gitlab@localhost gitlab]$ sudo gitlab-ctl restart
三、卸载
如果升级后发现有解决不了的问题,那就干脆卸载重装。只是这个卸载一定要卸载干净。否则会有不少麻烦干扰进度。
开始我这么玩儿,发现根本不成
1:停服务
sudo gitlab-ctl stop
2:清理和卸载
gitlab-ctl cleanse #若保留数据不执行该命令
gitlab-ctl uninstall
yum remove gitlab-ce
rm -rf /opt/gitlab #若保留数据不执行该命令
如上操作后重新安装再reconfigure,发现出现了一堆乱七八糟的异常。根据之前的经验,应该是由冲突引起的。因此重新彻底卸载
1:停服务
sudo gitlab-ctl stop
2:卸载gitlab(这里需确认gitlab是ce版本还是ee版本)
sudo rpm -e gitlab-ce
3:杀掉gitlab守护进程(有 opt/gitlab/service log 字样的)
ps -ef|grep gitlab
sudo kill -9 xxx
4:删除磁盘文件(如果有提示 permission deny的,手动逐层删除即可)
sudo find / -name gitlab |xargs rm -rf
5:查看/root/gitlab下是否有内容,存在的话也一并删掉即可
四、问题
4.1:无法访问
如果升级后,发现无法访问,首先先查看一下你的配置是否正确
#查看其中的external_url字段对应的值是否期望的地址
[gitlab@localhost gitlab]$ sudo vim /etc/gitlab/gitlab.rb
4.2:报错“Errno::EACCES: Permission denied @ dir_s_mkdir - /var/opt/gitlab/backups/db”
从12.2.1升级到12.10.14时,报了上述错误。感觉是当前路径的权限不足。但是进去查看才发现压根就没有这个目录,没的说,创建并赋权后重新升级即可。之后又报出了“/var/opt/gitlab/backups/dbdatabase.sql.gz”的权限问题。随意创建了一个同名文件并赋权,再升级,问题解决。安全升级到12.10.14。
4.3:重装12.14.10
重装之后,发现有报错,完整信息如下
Total download size: 761 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm | 761 MB 00:02:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
JSON file with existing configuration not found inside /opt/gitlab/embedded/nodes.
Skipping config check.
gitlab preinstall:
gitlab preinstall: This node does not appear to be running a database
gitlab preinstall: Skipping version check, if you think this is an error exit now
gitlab preinstall:
Updating : gitlab-ce-12.10.14-ce.0.el7.x86_64 1/2
Cleanup : gitlab-ce-12.2.1-ce.0.el7.x86_64 2/2
其中“Delta RPMs disabled because /usr/bin/applydeltarpm not installed”就是报错。重装delta即可
[gitlab@localhost gitlab]$ yum provides '*/applydeltarpm' #查看依赖包的位置
[gitlab@localhost gitlab]$ yum -y install deltarpm #安装命令
4.4:redis: unable to open supervise/ok: file does not exist
我在执行 gitlab-ctl reconfigure 的时候,一度执行不下去,然后ctrl+c强制退出后,先 gitlab-ctl stop 时发现报了以上的错误。此时即使再次执行 gitlab-ctl reconfig 也依然报上述的错误。其实执行下面的命令即可解决。
[gitlab@localhost gitlab]$ sudo systemctl restart gitlab-runsvdir
然后重新 reconfig 就能顺利的刷新配置了,然后重启gitlab。就会发现能看到所有的进程都出来了