Gitlab跨大版本升级代码迁移
背景:旧版Gitlab存在安全漏洞,需要升级到安全版本,由于在用版本较老,需要跨大版本进行升级,本章记录了升级后代码迁移踩过的一些坑。
1. 绕开公司网络限制
Gitlab安装有两种途径,比较通用的是在服务器上直接下载 (代码引用自官网:https://about.gitlab.cn/install/ ):
wget https://omnibus.gitlab.cn/el/7/gitlab-jh-14.7.2-jh.0.el7.x86_64.rpm
由于这次版本升级需求比较急,而公司网络防火墙开通周期不明,遂找了第二种方式:
登录Gitlab网站下载离线安装包:https://packages.gitlab.com/gitlab,选择合适的版本,传到服务器上进行离线安装。
2. 代码仓库迁移
跨大版本的代码仓库迁移一般是先在新服务器上安装老版本,同版本进行仓库迁移,再对新服务器上的服务进行升级。而本次迁移由于硬件条件限制,无法实现这种方式的迁移,所以只能手动。
这里遇到一个比较大的而且还没有修复的坑,通过url导入时链接不识别,于是采用的下面方法,借本地库实现单项目的迁移。
- 在本地创建空文件夹,打开文件夹,右键选择Git bash here(提前安装了git)
- 从老代码库clone代码:
git clone --bare http://old_address/group/project_name.git
- 上传到新代码库:
cd project_name.git
git push --mirror https://username:password@new_address/group/project_name.git
小白踩坑:
上述方法是一个大佬给的,试了半天一直报错,后面才知道新地址和对应项目是命令执行时自动创建的,我新建了一个项目push,这个项目的default分支受保护,无法push成功。
另外一个坑:对于非public的项目,需要加“username:password@”,这里的密码不能带类似@这种特殊字符(尝试过@和!都不行,可能有其他方法绕开)。