Обновление происходит только в рамках текущей мажорной версии, то есть устанавливаются только минорные версии. Мажорная версия автоматически НЕ СТАВИТСЯ.
GITLAB_URL
- адрес сервера GitLabGITLAB_API_TOKEN
- токен для доступа к API. Достаточно выставить scoperead_api
GITLAB_BACKUP_DIR
- указывается каталог, в котором хранятся бэкапы на ВМ с самим GitLab'омRATE_SIZE
- указывается множитель запаса свободного места на диске от размера последнего бэкапа. Например, если последний бэкап весит 25GB, то при значение2
свободно должно быть 50GBGITLAB_PROBES_TOKEN
- токен для проверкиprobes
. Берётся по путиAdmin -> Moitoring -> Healt Check
SLACK_AUTH_TOKEN
- указываем auth tokenSLACK_CHANNEL_ID
- указываем ID каналаPROJECT_NAME
- имя проекта, в котором находится GitLabTIME_UPDATE_CHECK
- время проверки наличия обновления (по времени сервера, где установлен GitLab. Обычно это UTC) в формате crontab.TIME_UPDATE_INSTALL
- время установки обновления (по времени сервера, где установлен GitLab. Обычно это UTC) в формате crontab.
- Добавляем бота (Gitlab Update Bot) в клиентский канал.
- В GitLab создаём технического пользователя (можно использовать текущего, если такой уже есть).
- Создаём ему токен со scope
read_api
. - Копируем
gitlab-updater
на cервер GitLab в каталог/opt/gitlab-updater
. - Копируем
check-time
на cервер GitLab (любой каталог) и выполняем. Вы увидите в каком виде/формате нужно заполнить переменныеTIME_UPDATE_CHECK
иTIME_UPDATE_INSTALL
. - Создаём файл .env в
/opt/gitlab-updater
и заполняем его по примеру. ВНИМАНИЕ!!! Это только пример. Подставляйте свои значения. Расшифровка переменных выше.
GITLAB_URL=URL
GITLAB_API_TOKEN=XXX88hk89798YXY-sfds
GITLAB_BACKUP_DIR=/var/opt/gitlab/backups
RATE_SIZE=2
GITLAB_PROBES_TOKEN=z_gt678TFvgtg34afa
SLACK_AUTH_TOKEN=xoxb-....PzBG
SLACK_CHANNEL_ID=C...31
PROJECT_NAME=my_project
TIME_UPDATE_CHECK="0 9 * * *"
TIME_UPDATE_INSTALL="0 3 * * *"
- Создаём systemd unit
/etc/systemd/system/gitlab-update.service
с содержимым:
[Unit]
Description=Gitlab Updater
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/gitlab-updater
ExecStart=/opt/gitlab-updater/gitlab-updater
SyslogIdentifier=gitlab-updater
Restart=always
[Install]
WantedBy=multi-user.target
- Включаем автозагрузку и запускаем утилиту:
systemctl enable gitlab-update.service
systemctl start gitlab-update.service
- Посмотреть логи можно так
journalctl -xe -u gitlab-update