Обновление Gitlab через несколько релизов

Thank you for reading this post, don't forget to subscribe!

С обнов­ле­ние Gitlab есть неболь­шие нюан­сы. Если вы не обнов­ля­е­тесь регу­ляр­но, то в какой-то момент спу­стя несколь­ко рели­зов не смо­же­те это сде­лать штат­но через пакет­ный мене­джер и репо­зи­то­рий. Необ­хо­ди­мо соблю­дать опре­де­лен­ную после­до­ва­тель­ность эта­пов обновления.

Неко­то­рое вре­мя назад мне пона­до­би­лось обно­вить уста­рев­шую на год с неболь­шим вер­сию Gitlab 12.7.5, уста­нов­лен­ную в Centos 7 из репо­зи­то­рия раз­ра­бот­чи­ков. Для нача­ла попро­бо­вал про­сто сде­лать yum update в надеж­де, что все про­изой­дет само, но чуда не слу­чи­лось. В репо­зи­то­рии послед­ней вер­си­ей уже была 13-я, а на нее так про­сто не перей­ти. Я полу­чил ошибку:

чита­ем доку­мен­та­цию. Там чет­ко про­пи­са­на после­до­ва­тель­ность, по кото­рой нуж­но обнов­лять­ся, что­бы полу­чить самую послед­нюю вер­сию. В моем слу­чае цепоч­ка обнов­ле­ний полу­ча­лась сле­ду­ю­щая: 12.7.5 -> 12.9.2 -> 12.10.14 -> 13.0.14 -> 13.4.3. Обя­за­тель­но дела­ем бэкап и при­сту­па­ем к обнов­ле­нию gitlab до послед­ней версии.

Для того, что­бы уста­но­вить кон­крет­ную вер­сию, исполь­зу­ем сле­ду­ю­щую коман­ду yum:

И так далее для всех осталь­ных релизов.

После это­го на момент напи­са­ния ста­тьи до самой послед­ней вер­сии мож­но обно­вить­ся штатно:

Если после напи­са­ния ста­тьи вый­дут сле­ду­ю­щие про­ме­жу­точ­ные вер­сии, про­сто добавь­те их в цепоч­ку обнов­ле­ний в соот­вет­ствии с таб­ли­цей в доку­мен­та­ции. Сам прин­цип обнов­ле­ния gitlab будет такой же.

Так же после обнов­ле­ния gitlab с более ста­рых вер­сий вы може­те уви­деть пре­ду­пре­жде­ние о том, что мож­но обно­вить вер­сию postgresql до 12 или выше. Авто­ма­ти­че­ски база дан­ных не обнов­ля­ет­ся. Инструк­ция по ее обнов­ле­нию так же есть в доку­мен­та­ции. Для это­го суще­ству­ет команда:

Она все сде­ла­ет сама, обно­вив postgresql до послед­ней под­дер­жи­ва­е­мой вер­сии. Резуль­та­том успеш­но­го обнов­ле­ния базы gitlab будет при­мер­но сле­ду­ю­щее сообщение.

Вот и все. Мы пол­но­стью обно­ви­ли gitlab через несколь­ко рели­зов до самой послед­ней версии.

===================================================

Дове­лось мне обнов­лять гит­лаб ООООООчень ста­рой версии.

чтоб был при­мер сна­ча­ла постав­лю гит­лаб ста­рой версии:

yum install pygpgme yum-utils
yum install -y curl policycoreutils-python openssh-server
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
cd /etc/yum.repos.d/
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo

yum install -y yum-plugin-downloadonly

[root@centos7 yum.repos.d]# yum install gitlab-ce-10.4*

[root@centos7 ~]# cat /etc/gitlab/gitlab.rb | grep ^external_url
external_url 'http://gitlab.test.ru'
[root@centos7 ~]# gitlab-ctl reconfigure
ждём окон­ча­ния уста­нов­ки после захо­дим на наш сайт где нам пред­ло­жат вве­сти пароль:

логи­ним­ся и про­ве­ря­ем нашу версию:

при­сту­пим к обнов­ле­нию, для это­го идём на сайт:

https://docs.gitlab.com/ee/update/index.html

наша вер­сия 10.4.7 зна­чит даль­ше будем обнов­лять­ся сле­ду­ю­щим образом:
10.4.7 - 10.8.7 - 11.11.8 - 12.0.12 - 12.1.17 - 12.10.14 - 13.0.14  - 13.1.11 - 13.5.4

при­сту­пим к обновлнию:

[root@centos7 ~]# yum install gitlab-ce-10.8.7

 

[root@centos7 ~]# yum install gitlab-ce-11.11.8

[root@centos7 ~]# yum install gitlab-ce-12.0.12

[root@centos7 ~]# yum install gitlab-ce-12.1.17

[root@centos7 ~]# yum install gitlab-ce-12.10.14

 

[root@centos7 ~]# yum install gitlab-ce-13.0.14

[root@centos7 ~]# yum install gitlab-ce-13.1.11 -y

[root@centos7 ~]# yum install gitlab-ce-13.5.4

 

если обнов­ля­ли до 13 вер­сии то пост­грес сам обно­вит­ся, или на свой страх и риск запус­кай­те апгрейд

[root@centos7 ~]# gitlab-ctl pg-upgrade

[root@centos7 ~]# gitlab-ctl restart postgresql

!!!!!!!!!отме­чу что в директории
/var/opt/gitlab/postgresql
есть скрипт delete_old_cluster.sh кото­рый уда­ля­ет директорию:

/var/opt/gitlab/postgresql/data    т.е. нихе­ра не ста­рые вер­сии а прям теку­щую версию.
в свя­зи с этим воз­ни­ка­ют про­бле­мы с базой и вы затра­ха­е­тесь её вос­ста­нав­ли­вать, поэто­му крайне не сове­тую это делать.