Обновление Gitlab
Инструкция по обновлению GitLab
Введение
Цель документа
Этот документ содержит пошаговую инструкцию для безопасного и последовательного обновления GitLab Community Edition (CE), установленного на сервере с Ubuntu через Omnibus-пакет.
Инструкция составлена на основе реального опыта обновления и включает в себя решения для всех потенциальных проблем, возникших в процессе.
Фаза 1: Подготовка (самый важный этап)
Перед началом обновления необходимо выполнить следующие подготовительные шаги. Не пропускайте их!
Шаг 1.1: Создание и копирование резервной копии
Это обязательный шаг для защиты ваших данных.
-
Запустите сессию
screen, чтобы процесс не прервался из-за разрыва SSH-соединения:screen -S gitlab-backup -
Запустите создание бэкапа:
sudo gitlab-backup createПроцесс может быть долгим. После его завершения убедитесь, что в директории
/var/opt/gitlab/backups/появился.tarфайл с бэкапом. -
(Рекомендуется) Скопируйте бэкап на локальный компьютер. Для максимальной безопасности рекомендуется скопировать созданный архив с резервной копией с VDS на ваш локальный компьютер.
-
Узнайте точное имя файла бэкапа на сервере. Следующая команда выведет имя самого свежего файла в директории с бэкапами:
ls -t /var/opt/gitlab/backups/ | head -n 1 -
Скачайте файл с помощью
scp. Откройте PowerShell на вашем локальном компьютере (Windows) и выполните команду по следующему шаблону:# Шаблон scp <имя_пользователя_на_сервере>@<IP_адрес_сервера>:/var/opt/gitlab/backups/<имя_файла_бэкапа.tar> <локальный_путь_для_сохранения> # Пример scp root@192.168.1.10:/var/opt/gitlab/backups/1752740631_2025_07_17_17.5.5_gitlab_backup.tar C:\backups\gitlab\
Теперь, имея локальную копию, вы можете быть уверены в сохранности данных, даже если с сервером что-то случится.
-
Узнайте точное имя файла бэкапа на сервере. Следующая команда выведет имя самого свежего файла в директории с бэкапами:
Шаг 1.2: Проверка и освобождение дискового пространства
Обновление GitLab требует значительного свободного места на диске для скачивания (более 1.3 ГБ) и распаковки пакета.
-
Проверьте доступное место:
df -hУбедитесь, что на корневом разделе (
/) или на/varдостаточно свободного места (рекомендуется иметь не менее 5 ГБ). -
Очистите кэш пакетов
apt. Это самый быстрый и безопасный способ освободить место перед обновлением:sudo apt-get clean -
(При необходимости) Удалите старые резервные копии GitLab. Если места все еще недостаточно, его можно освободить, удалив старые бэкапы.
- Посмотрите список существующих бэкапов и их размеры:
ls -lh /var/opt/gitlab/backups/ - Удалите ненужные старые файлы. Внимание: убедитесь, что у вас есть свежая и скопированная резервная копия (см. Шаг 1.1), прежде чем удалять старые.
# Пример удаления конкретного файла sudo rm /var/opt/gitlab/backups/1752740631_2025_07_17_17.5.5_gitlab_backup.tar
- Посмотрите список существующих бэкапов и их размеры:
Шаг 1.3: Определение правильного пути обновления
GitLab нельзя обновлять сразу до последней версии. Необходимо следовать официальному пути обновления, проходя через обязательные промежуточные версии ("required upgrade stops").
-
Узнайте вашу текущую версию:
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION -
Определите маршрут обновления. Перейдите на официальный сайт GitLab Upgrade Path Tool, введите вашу текущую версию и выберите "CE". Сайт покажет вам точную последовательность версий для обновления.
Фаза 2: Процесс обновления
Выполняйте установку строго последовательно для каждой версии из маршрута, который вы получили на предыдущем шаге.
Шаг 2.1: Последовательная установка
Для каждой промежуточной версии из вашего маршрута (например, 17.3.7-ce.0) выполните следующие команды:
-
Установите конкретную версию:
# Пример для версии 17.3.7 sudo apt-get install gitlab-ce=17.3.7-ce.0 -
Проверьте статус после установки. Убедитесь, что все сервисы запустились корректно, прежде чем переходить к следующей версии.
# Проверка статуса сервисов sudo gitlab-ctl status # Проверка установленной версии cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
Повторяйте эти два пункта для каждой версии в вашем маршруте обновления.
После установки последней версии из вашего маршрута, зайдите в веб-интерфейс GitLab и убедитесь, что все работает корректно, а уведомление о необходимости обновления исчезло.
Поздравляем, ваш GitLab обновлен!
Фаза 3: Решение известных проблем (Troubleshooting)
Здесь собраны решения для ошибок, с которыми можно столкнуться в процессе.
Проблема 1: Ошибка apt update из-за лишнего репозитория
-
Симптом: При выполнении
sudo apt updateпоявляется ошибка403 Forbiddenдля репозиторияgitlab-ee. - Причина: В системе одновременно подключены репозитории для Community Edition (CE) и Enterprise Edition (EE).
-
Решение:
- Найдите лишний файл конфигурации:
ls -l /etc/apt/sources.list.d/. Он будет называться примерноgitlab_gitlab-ee.list. - Удалите его:
sudo rm /etc/apt/sources.list.d/gitlab_gitlab-ee.list. - Повторите
sudo apt update.
- Найдите лишний файл конфигурации:
Проблема 2: Обновление прерывается из-за нехватки места
-
Симптом: В процессе установки появляется ошибка
No space left on device. -
Решение: Вернитесь к Шагу 1.2 и убедитесь, что вы освободили достаточно места. Очистите кэш
aptи, при необходимости, удалите старые ненужные бэкапы из/var/opt/gitlab/backups/.
Проблема 3: Обновление прерывается из-за таймаута базы данных
-
Симптом: На этапе
pre-installation scriptпоявляется ошибкаPG::QueryCanceled: ERROR: canceling statement due to statement timeout. - Причина: Автоматическое создание бэкапа перед установкой не укладывается в отведенное время.
-
Решение:
-
Создайте "файл-флаг", чтобы пропустить автоматический бэкап. Это безопасно, так как вы уже сделали полный бэкап на Шаге 1.1.
sudo touch /etc/gitlab/skip-auto-backup -
Повторите команду установки
sudo apt-get install ...для нужной версии. Обновление должно пройти без ошибки с бэкапом. -
Важно! После того, как вы успешно завершите все этапы обновления до финальной версии, обязательно удалите созданный файл, чтобы будущие обновления работали в штатном режиме:
sudo rm /etc/gitlab/skip-auto-backup
-
Создайте "файл-флаг", чтобы пропустить автоматический бэкап. Это безопасно, так как вы уже сделали полный бэкап на Шаге 1.1.