Gitlab升级(12.2.1到14.6.4)

背景介绍那些乱七八糟的就跳过吧,直接上干货

一、准备

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下载地址点击此处

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。就会发现能看到所有的进程都出来了

Gitlab升级(12.2.1到14.6.4)_第1张图片

你可能感兴趣的:(gitlab,升级)