Развернутые в Docker, и не только, инстансы Gitlab периодически требуют обновления.
Обновления приносят за собой полезные исправления безопасности, особенно если ваш Gitlab вывешен в общедоступную сеть, а так же новый функционал, который часто бывает полезен.
В статье расскажу как обновление происходит на примере Gitlab инстанса развернутого в Docker контейнере.
Для начала нужно определить текущую версию Gitlab, для этого заходим в веб интерфейс и в правом верхнем углу клацаем на меню с иконкой знака вопроса, затем на поле Help
Далее сверяемся с картой обновления, которую можно увидеть на официальном ресурсе по адресу: https://docs.gitlab.com/ee/update/#upgrade-paths
Находим в списке нашу версию, или ближайшую к нам в старшую сторону (в моем случае текущая версия 13.10, а самая ближайшая к моей 13.8.8, по этому обновляться будем от неё.
Перед обновлением настоятельно рекомендую сделать бэкап или снапшот (если используете виртуальную машину).
Обновление происходит следующим образом: вы удаляете старый контейнер и разворачиваете новый с новой версией образа. Дожидаетесь завершения миграций, и повторяете процедуру со следующим. Следуя версиям описанным на официальном сайте.
Для начала останавливаем и удаляем текущий контейнер, а заодно и образ если вы раньше устанавливали с тегом latest:
docker stop gitlab
docker rm gitlab
docker image rm gitlab/gitlab-ce:latest
Теперь запускаем образ новой версии, сделать можно либо использовав команду которой вы разворачивали gitlab в первый раз, изменив тег образа, например:
sudo docker run --detach \
--log-opt max-size=1g \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /srv/gitlab/registry:/var/opt/gitlab/registry \
--env GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.com/';" \
gitlab/gitlab-ee:13.12.15-ee.0
Либо с помощью Docker-compose:
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ee:13.12.15-ee.0'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com/'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
- '5000:5000'
- '5001:5001'
- '5005:5005'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
- '/srv/gitlab/registry/config:/var/opt/gitlab/registry'
logging:
options:
max-size: 1g
Выполнив затем из каталога с docker-compose.yml команду:
docker-compose up -d
Далее ждём запуска и прохождения всех миграций. Напомню лог запущенного контейнера можно смотреть с помощью команды
docker logs -f gitlab
Как только увидите привычный для рабочего контейнера лог заходим в гитлаб и проверяем версию всё тем же методом:
Начиная с версий 14 появятся миграции которые выполняются после запуска gitlab, проверить их выполнение и можно по адресу: https://gitlab.example.com/admin/background_migrations
Обязательно проверьте работу всех ваших ci и пуш\пул репозиториев. Если всё хорошо — обновляем дальше повторив шаги начиная с остановки и удаления текущего контейнера.
Полезные ссылки по теме:
- Установка Gitlab в Docker
- Установка и регистрация gitlab-runner в docker контейнере
- Установка shell gitlab runner
- Переменные Gitlab-Ci
- Настройка работы Gitlab с registry без ssl
- Настройка E-mail уведомлений Gitlab
Отправить ответ