gitlab跨大版本升级

  gitlab ce版漏洞,发现是9.1.3,而现在的是12.8.1,强迫症犯了,开始折腾。

  不能直接跨大版本升级,于是根据网上的建议,制定一个计划:弄台新机器,装9中最高版,把现在的数据迁移过来,然后一步步升上去。

  跨大版本升级必须先升到该大版本的最高小版本,然后再升级到下一个大版本的最低小版本,再升到目标版本,注意版本要适配操作系统。

一、升级标准动作:

1、停gitlab:

gitlab-ctl stop nginx
gitlab-ctl stop sidekiq
gitlab-ctl stop unicorn

2、升级(本地包升级):

yum install ~/gitlab.el7.13.0.0.rpm

3、重新配置、重启:

gitlab-ctl reconfigure
gitlab-ctl restart

4、gitlab从14开始使用hashed storage,之前的版本需要做存储迁移,迁移过程中可能因为有的项目为read-only而导致迁移失败,此处有相关存储迁移内容。在13.12.15版本做迁移

5、如果有batched background migrations,就不能从14.0直接升级到14.2

二、坑:

1、gitlab-ctl reconfigure有可能执行失败,原因不明,但重执行一次就会成功。为这反复卸载安装gitlab及组件,差点把主机整垮了

2、修改仓库数据存储地址的方法,在9版本下还能用git_data_dir "/data/gitlab/git-data",但10开始就不能用了

3、必须先升到每个大版本中的最高版本才能升到下一个版本。

4、rpm是从清华大学镜像站上下的,比官网要慢一些,最新的需要到官网下载:https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm

5、external_url配置端口8080会导致失败,原因是unicorn默认占用8080。

  备忘:

1、gitlab-ctl是核心命令,大多数操作都是通过它。备份和恢复操作靠gitlab-rake

2、设置/取消gitlab自动启动:systemctl enable/disable gitlab-runsvdir.service

3、修改数据存放位置:/etc/gitlab/gitlab.rb文件中git_data_dirs({ "default" => { "path" => "/data/gitlab/git-data" } })。这样数据将放在/data/gitlab/git-data/repositores下。

4、修改备份文件存放/读取位置:gitlab_rails['backup_path'] = "/data/gitlab/backups"

5、yum除了在线装,还可以直接通过rpm安装:yum install gitlab-ce-9.5.9-ce.0.el7.x86_64.rpm

6、自动备份:通过cron设置定时任务来实现自动备份:crontab -e,增加一条:

0 3 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

7、自动删除旧备份文件:gitlab自带删除旧备份数据功能,需要修改配置文件(设置备份保留7天(7*3600*24=604800),秒为单位):

gitlab_rails['backup_keep_time'] = 604800

 8、nginx的配置:如果需要新增location,可以修改/var/opt/gitlab/nginx/conf/gitlab-http.conf。然后用gitlab-ctl restart nginx生效。做好备份,如果执行reconfigure可能会被冲掉。

 三、常用命令:

1、查看版本:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

  参考链接:

http://blog.sina.com.cn/s/blog_beebb7590102yi9l.html

http://www.361way.com/gitlabce-backup-restore-update/5713.html

官网CE包下载地址:https://packages.gitlab.com/gitlab/gitlab-ce