博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享
在之前的部分中,我们已经讨论了如何安装GitLab并部署GitLab Runner。现在,让我们继续向下,了解如何进行GitLab的升级。
如果你还不知道如何部署GitLab,那么可以准备一台腾讯云轻量应用服务器,最好是8G内存的版本,并查看这篇教程进行配置:
升级GitLab是非常重要的,因为每个版本都会带来新的功能和修复现有的问题。但是,具体如何升级呢?如何平滑升级呢?总不能把大楼拖倒,重新搭建一遍,再把仓库内容重新放上去吧?
为什么要升级GitLab呢? 旧版本又不是不能用?
如果你网上冲浪🏄♂️一下,总结一下,有这些原因:
这里我举两个例子。
首先,不是说开源软件就一定不安全。正是因为开源、社区软件开源,所以在存在安全漏洞的时候;会有安全机构或者组织、个人进行披露,并给出修复的方法。如果本来就是闭源的软件,不是没有安全漏洞,只是没有披露。
我平时也有做一些网络安全,经常也会看到各个系统和开源软件的漏洞披露;前段时间也有看到GitLab的代码执行漏洞(CVE-2023-2478):
受影响的版本范围是:
可以看到,目前最新的版本16系列就是没影响的。所以,对于大多数用户,这个漏洞给出的修复,也是推荐升级GitLab版本。
新的功能,也是在不断的版本更新中出来的。比如:最开始的GitLab是不支持Pipeline的,需要使用jenkins来完成CI/CD的操作。
当然,现在的GitLab还是无法取代Jenkins的…… 只是某些情况下,可以使用GitLab替代Jenkins的部分功能。
再比如,GitLab 12.0(2019年5月):
GitLab 16:
不过,新的功能你是否“感冒”,就看取舍了。
升级的危险有什么呢?最主要的就是: 仓库安全!
还有一些危险需要注意:
建议大家在升级GitLab前,先大上一个快照,比如腾讯云轻量应用服务器的快照功能:
好啦,现在正式开始我们的教程。考虑到GitLab的安装方法比较多,我们这里以Docker版本为主,在粗略介绍一下直装版本和K8S版本如何操作。
操作参考:
原则上,Docker版本的升级是最简单的了。基本上,就和我们平时升级Docker镜像是一样的步骤。
在小版本上进行升级,通常情况下没什么问题;但是如果是跨越版本的升级,一定要记得备份GitLab的配置文件。也就是config文件夹下的gitlab.rb
。如果需要完整地备份或者是进行数据的迁移:
# 完整备份
sudo docker exec gitlab gitlab-backup create
之后,会自动进行备份:
备份好后,在Docker映射的文件夹内存在:
还原的话,需要在gitlab.rb
内,定义gitlab_rails['backup_path']
指向还原目录,并运行:
sudo docker exec gitlab gitlab-backup restore BACKUP=1696414953_2023_10_04_16.4.1-ee
全量备份主要用于大版本升级和数据迁移。小的版本升级,或者已经备份完成后,可以接下来的操作。
升级的步骤非常简单,假设你之前安装GitLab的方法是这样的:
# GitLab的拉取命令
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8880:80 --publish 8822:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee
那么我们更新方法:
# 停止GitLab的版本
sudo docker stop gitlab
# 删除旧的GitLab镜像
sudo docker rm gitlab
# 重新拉取最新版本的GitLab镜像
sudo docker pull gitlab/gitlab-ee:latest
最后,重新启动GitLab:
当然,如果你是跨版本的话,建议在重新启动GitLab前,把config内的文件进行备份,并删除gitlab.rb
文件,在重新启动GitLab后,对比新旧文件的不同之处进行修改。
直装版本其实也非常简单,需要注意,直装版本,是直接使用软件包管理器进行GitLab的包管理,更新的话,依赖环境也会进行更新。
具体可以参考:
在更新之前,建议使用命令进行备份数据:
# 安装依赖
sudo apt install rsync
# 使用CLI进行备份
sudo gitlab-backup create
还原的话,需要在gitlab.rb
内,定义gitlab_rails['backup_path']
指向还原目录,并运行:
# 去除标识的备份文件是什么呢?1696414953_2023_10_04_16.4.1-ee_gitlab_backup.tar => 1696414953_2023_10_04_16.4.1
sudo gitlab-backup restore BACKUP=『去除后缀标识的备份文件』
说实话,个人建议安装GitLab还是用K8S版本或者Docker比较好。
GitLab进行了升级,那么Runner肯定也要。GitLab的Runner升级就简单太多了。
通常情况下,Runner的更新,配置文件并没有改变(最起码进几个大版本是这样的)。
所以,你只需要停止镜像、删除镜像和重新拉取部署即可:
# 停止GitLab Runner的镜像
sudo docker stop gitlab-runner
# 删除旧的GitLab Runner镜像
sudo docker rm gitlab-runner
# 重新拉取最新版本的GitLab Runner镜像
sudo docker pull gitlab/gitlab-runner:latest
docker run -d --name gitlab-runner --restart always \
-v /dockerData/gitlab-runner:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
到此,就升级安装完成了。
嘿嘿,如果升级完不能用~ 那就重新配置一下吧~~~ 我是认为Runner没有备份的必要(●'◡'●)ノ♥
通过本文的讲解,我们了解了GitLab升级的重要性,包含获取新功能、安全修复、兼容性提升等方面的考量。另外,文章中也详细介绍了不同部署方式的GitLab如何进行平滑升级,其中Docker版本的升级最为简单方便。
如果在操作中遇到任何问题,也欢迎在评论区进行讨论。
下次讲什么内容好呢?好像有什么坑没填来着的?(;′⌒`)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。