Thank you for reading this post, don't forget to subscribe!
С обновление Gitlab есть небольшие нюансы. Если вы не обновляетесь регулярно, то в какой-то момент спустя несколько релизов не сможете это сделать штатно через пакетный менеджер и репозиторий. Необходимо соблюдать определенную последовательность этапов обновления.
Некоторое время назад мне понадобилось обновить устаревшую на год с небольшим версию Gitlab 12.7.5, установленную в Centos 7 из репозитория разработчиков. Для начала попробовал просто сделать yum update в надежде, что все произойдет само, но чуда не случилось. В репозитории последней версией уже была 13-я, а на нее так просто не перейти. Я получил ошибку:
1 2 3 |
gitlab preinstall: It seems you are upgrading from major version 12 to major version 13. gitlab preinstall: It is required to upgrade to the latest 13.0.x version first before proceeding. gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/README.html#upgrade-paths |
читаем документацию. Там четко прописана последовательность, по которой нужно обновляться, чтобы получить самую последнюю версию. В моем случае цепочка обновлений получалась следующая: 12.7.5 -> 12.9.2 -> 12.10.14 -> 13.0.14 -> 13.4.3. Обязательно делаем бэкап и приступаем к обновлению gitlab до последней версии.
Для того, чтобы установить конкретную версию, используем следующую команду yum:
1 |
# yum install gitlab-ee-12.9.2-ee.0.el7.x86_64 |
И так далее для всех остальных релизов.
1 2 3 |
# yum install gitlab-ee-12.10.14-ee.0.el7.x86_64 # yum install gitlab-ee-13.0.14-ee.0.el7.x86_64 # yum install gitlab-ee-13.4.3-ee.0.el7.x86_64 |
После этого на момент написания статьи до самой последней версии можно обновиться штатно:
1 |
# yum update |
Если после написания статьи выйдут следующие промежуточные версии, просто добавьте их в цепочку обновлений в соответствии с таблицей в документации. Сам принцип обновления gitlab будет такой же.
Так же после обновления gitlab с более старых версий вы можете увидеть предупреждение о том, что можно обновить версию postgresql до 12 или выше. Автоматически база данных не обновляется. Инструкция по ее обновлению так же есть в документации. Для этого существует команда:
1 |
# gitlab-ctl pg-upgrade |
Она все сделает сама, обновив postgresql до последней поддерживаемой версии. Результатом успешного обновления базы gitlab будет примерно следующее сообщение.
1 2 3 4 |
==== Upgrade has completed ==== Please verify everything is working and run the following if so sudo rm -rf /var/opt/gitlab/postgresql/data.11 sudo rm -f /var/opt/gitlab/postgresql-version.old |
Вот и все. Мы полностью обновили 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[gitlab_gitlab-ce] name=gitlab_gitlab-ce baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/$basearch repo_gpgcheck=0 gpgcheck=0 enabled=1 gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [gitlab_gitlab-ce-source] name=gitlab_gitlab-ce-source baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/SRPMS repo_gpgcheck=1 gpgcheck=1 enabled=1 gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 |
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 т.е. нихера не старые версии а прям текущую версию.
в связи с этим возникают проблемы с базой и вы затрахаетесь её восстанавливать, поэтому крайне не советую это делать.