Исходный код вики Обновление Gitlab через несколько релизов
Редактировал(а) Сергей Коршунов 2022/05/26 21:44
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | = Обновление Gitlab через несколько релизов = |
2 | |||
3 | С обновление Gitlab есть небольшие нюансы. Если вы не обновляетесь регулярно, то в какой-то момент спустя несколько релизов не сможете это сделать штатно через пакетный менеджер и репозиторий. Необходимо соблюдать определенную последовательность этапов обновления. Об этом я подробно расскажу далее. | ||
4 | |||
5 | **Онлайн-курс по Kubernetes** – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам Курс не для новичков – нужно пройти [[вступительный тест>>url:https://serveradmin.ru/ootus-kuber-txt]] | ||
6 | |||
7 | |||
8 | Некоторое время назад мне понадобилось обновить устаревшую версию Gitlab 12.7.5, [[установленную в Centos 7>>url:https://serveradmin.ru/ustanovka-i-nastroyka-gitlab/]] из репозитория разработчиков. Для начала попробовал просто сделать **yum update** в надежде, что все произойдет само, но чуда не случилось. В репозитории последней версией уже была 14-я, а на нее так просто не перейти. Я получил ошибку: | ||
9 | |||
10 | {{{gitlab preinstall: It seems you are upgrading from major version 12 to major version 14. | ||
11 | gitlab preinstall: It is required to upgrade to the latest 13.0.x version first before proceeding. | ||
12 | gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/README.html#upgrade-paths}}} | ||
13 | |||
14 | [[image:https://serveradmin.ru/wp-content/uploads/2021/02/gitlab-upgrade-01.png||height="341" width="1084"]] | ||
15 | |||
16 | Делать нечего, пошел читать [[документацию>>url:https://docs.gitlab.com/ee/update/README.html#upgrade-paths]]. Там четко прописана последовательность, по которой нужно обновляться, чтобы получить самую последнюю версию. В моем случае цепочка обновлений получалась следующая: **12.7.5 -> 12.9.2 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.10 -> 14.0.11 -> 14.1.6**. Обязательно делаем бэкап и приступаем к обновлению gitlab до последней версии. | ||
17 | |||
18 | Для того, чтобы установить конкретную версию, используем следующую команду yum: | ||
19 | |||
20 | {{{# yum install gitlab-ee-12.9.2-ee.0.el7.x86_64}}} | ||
21 | |||
22 | И так далее для всех остальных релизов. | ||
23 | |||
24 | {{{# yum install gitlab-ee-12.10.14-ee.0.el7.x86_64 | ||
25 | # yum install gitlab-ee-13.0.14-ee.0.el7.x86_64 | ||
26 | # yum install gitlab-ee-13.1.11-ee.0.el7.x86_64 | ||
27 | # yum install gitlab-ee-13.8.8-ee.0.el7.x86_64 | ||
28 | # yum install gitlab-ee-13.12.10-ee.0.el7.x86_64 | ||
29 | # yum install gitlab-ee-14.0.11-ee.0.el7.x86_64}}} | ||
30 | |||
31 | После этого на момент написания статьи до самой последней версии можно обновиться штатно: | ||
32 | |||
33 | {{{# yum update gitlab-ee}}} | ||
34 | |||
35 | Если после написания статьи выйдут следующие промежуточные версии, просто добавьте их в цепочку обновлений в соответствии с таблицей в документации. Сам принцип обновления gitlab будет такой же. | ||
36 | |||
37 | С ошибкой я столкнулся только при обновлении gitlab с версии 14.0 до 14.4. Ошибка связана с миграциями базы данных и описана в документации - [[Batched background migrations>>url:https://docs.gitlab.com/ee/user/admin_area/monitoring/background_migrations.html#manually-finishing-a-batched-background-migration]]. Текст ошибки примерно такой: | ||
38 | |||
39 | {{{StandardError: An error has occurred, all later migrations canceled: | ||
40 | |||
41 | Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackg | ||
42 | roundMigrationJob", :table_name=>"push_event_payloads", :column_name=>"event_id", :job_arguments=>[["event_id"], ["event_id_convert_to_bigint"]]}}}} | ||
43 | |||
44 | [[~[~[image:https://serveradmin.ru/wp-content/uploads/2021/02/gitlab-upgrade-04.png~|~|alt="StandardError: An error has occurred, all later migrations canceled" height="665" width="1300"~]~]>>url:https://serveradmin.ru/wp-content/uploads/2021/02/gitlab-upgrade-04.png]] | ||
45 | |||
46 | В тексте ошибки представлено решение в виде завершения миграции вручную. Но это не сильно поможет, так как при следующем запуске будет эта же ошибка, только с другой миграцией. Я попробовал раза 3-4 проделать это вручную, но не помогло. Пошёл читать статью, там всё есть. Вам надо посмотреть, если у вас незавершённые миграции. Для этого выполните: | ||
47 | |||
48 | {{{# gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'}}} | ||
49 | |||
50 | Если получите число больше нуля, значит какие-то миграции не завершены. Завершите их: | ||
51 | |||
52 | {{{# gitlab-rails c | ||
53 | > scheduled_queue = Sidekiq::ScheduledSet.new | ||
54 | > pending_job_classes = scheduled_queue.select { |job| job["class"] == "BackgroundMigrationWorker" }.map { |job| job["args"].first }.uniq | ||
55 | > pending_job_classes.each { |job_class| Gitlab::BackgroundMigration.steal(job_class) }}}} | ||
56 | |||
57 | Напоминаю, что это информация доступна по ссылке выше. Там всё подробно описано. После этого выполняем: | ||
58 | |||
59 | {{{# gitlab-rake db:migrate | ||
60 | # gitlab-ctl reconfigure | ||
61 | # gitlab-ctl restart}}} | ||
62 | |||
63 | После этого gitlab версии 14.4 нормально запустился. | ||
64 | |||
65 | Так же после обновления gitlab с более старых версий вы можете увидеть предупреждение о том, что можно обновить версию postgresql до 12 или выше. Автоматически база данных не обновляется. [[Инструкция>>url:https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server]] по ее обновлению так же есть в документации. Для этого существует команда: | ||
66 | |||
67 | {{{# gitlab-ctl pg-upgrade}}} | ||
68 | |||
69 | [[image:https://serveradmin.ru/wp-content/uploads/2021/02/gitlab-upgrade-02.png||height="290" width="1075"]] | ||
70 | |||
71 | Она все сделает сама, обновив postgresql до последней поддерживаемой версии. Результатом успешного обновления базы gitlab будет примерно следующее сообщение. | ||
72 | |||
73 | [[image:https://serveradmin.ru/wp-content/uploads/2021/02/gitlab-upgrade-03.png||height="392" width="820"]] | ||
74 | |||
75 | {{{==== Upgrade has completed ==== | ||
76 | Please verify everything is working and run the following if so | ||
77 | sudo rm -rf /var/opt/gitlab/postgresql/data.11 | ||
78 | sudo rm -f /var/opt/gitlab/postgresql-version.old}}} | ||
79 | |||
80 | Вот и все. Мы полностью обновили gitlab через несколько релизов до самой последней версии. Удивительно, как такой масштабный и многокомпонентный продукт как gitlab так четко обновляется. Сколько с ним работаю, никогда не сталкивался с проблемами во время обновления. При этом постоянно опасаюсь, как бы что-нибудь не пошло не так. Так что бэкапы перед обновлением обязательно должны быть и желательно всей виртуалки. |