Вот и пришла пора вступить на тернистый путь контроля версий git, после теплого и лампового SVN. Для начала утоним, чем же хорош этот пресловутый инструментарий. GitLab — это проект, который используя систему управления репозиториями git полностью обеспечивает жизненный цикл DevOps, включая wiki, CI/CD и многое другое. По сравнению с другими версиями GitLab, Community Edition предоставляет ограниченный набор функций, но все же является мощным инструментом для управления проектами разработки ПО. Корпоративные версии предоставляют более широкие возможности, такие как расширенная аналитика, аварийное восстановление и средства безопасности.
Что же нам понадобится для развертывания данного инструмента для разработчика:
1. Debian 12 или новее;
2. Выделенная оперативная память не менее 8 Гб;
3. Дисковое пространство 50 Гб + место под проекты;
4. Процессорных ядер не менее 4 шт;
5. Доменное имя.
Это основное, там еще есть почтовые сервисы, и другие плюшки, но и без этого будет работать.
На самом деле, инструкция будет довольно короткой, так как добрые разработчики сделали все до нас, и по сути установочные скрипты сделают всю грязную работу сами, главное не накосячить в мелочах.
1. Обновление Debian
2. Установка необходимых пакетов
3. Установить локаль, потребуется для PostgreSQL
4. Импорт репозитория GitLab
5. Установка Gitlab CE
6. Настройка GitLab
В нем нам нужно поправить несколько основных вещей, как то доменное имя, на которое будем получать сертификат, и настройки почтового сервиса, для получения оповещений.
Находим, заменяем на необходимое:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.mail.ru"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "robot@r2d2.pro"
gitlab_rails['smtp_password'] = "123456789"
gitlab_rails['smtp_domain'] = "smtp.mail.ru"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['gitlab_email_from'] = "robot@r2d2.pro"
gitlab_rails['gitlab_email_reply_to'] = "robot@r2d2.pro"
7. Если нигде не удалось до этого момента накосячить, то запуск установки указанной команды ниже, должен пройти без ошибок, и по итогу, заходя по адресу, изначально указанному нами в переменной external_url, должен открыться сайт.
Если перед установкой не была задана переменная с паролем администратора, после установки пароль администратора в течение 24 часов хранится в файле
Если необходимо сбросить пароль root, можно воспользоваться следующей командой:
8. Установка GitLab Runner
Для установки сборщика нужно воспользоваться официальным репозиторием GitLab:
apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io
# установка GitLab-Runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash -
apt update
apt install -y gitlab-runner
9. Обновление GitLab
curl -L https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | sudo apt-key add -
#ИЛИ воспользоваться скриптом обновлений ключей с самого Gitlab
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
apt update
Для обновления на последнюю версию, нужно выяснить номер версии текущую и затем обновиться:
apt-cache policy gitlab-ce
dpkg -s gitlab-ce
#Воспользоваться онлайн калькулятором обновлений по ссылке в подвале, и потом уже пошагово поднимать версию (далее пример)
apt install gitlab-ce=14.4.1-ce.0
10. Создание сценария резервного копирования
Для начала необходимо создать сценарий резервного копирования, который будет выполнять резервное копирование экземпляра GitLab. Для этого выполните следующие действия:
Используя текстовый редактор, создайте новый файл для сценария резервного копирования. Вот пример:
Вставьте в файл следующий код:
BACKUP_DIR=/var/opt/gitlab/backups
TIMESTAMP=$(date +%F_%H-%M)
sudo gitlab-rake gitlab:backup:create
#Не обязательное переименование
sudo mv ${BACKUP_DIR}/$(ls -t ${BACKUP_DIR} | head -1) ${BACKUP_DIR}/gitlab_backup_${TIMESTAMP}.tar
Установка разрешений и прав
На следующем этапе необходимо установить соответствующие разрешения и права собственности для сценария резервного копирования, чтобы cronjob мог его выполнить. Для этого выполните следующие действия:
Установите владельцем сценария резервного копирования и разрешение на выполнение пользователя, связанного с GitLab:
chmod +x /usr/local/bin/gitlab-backup.sh
Создание Cronjob
Чтобы запланировать запуск сценария резервного копирования через регулярные промежутки времени, необходимо создать cronjob. Для этого выполните следующие действия:
Чтобы запланировать запуск сценария резервного копирования на каждый день в 1:00 утра, добавьте следующую строку в конфигурационный файл crontab для пользователя GitLab (смотрим при необходимости калькулятор):
Проверить правильность работы cronjob можно, выполнив вручную сценарий резервного копирования и убедившись, что файл резервной копии создан без ошибок. Для этого введите в терминале следующую команду:
Основные файлы GitLab расположены:
/etc/gitlab/ — конфигурация gitlab
/var/log/gitlab/ — журналы gitlab
/opt/gitlab/ — бинарные файлы gitlab
/var/opt/gitlab/ — рабочие директории nginx, postgresql, redis, registry, prometheus, grafana
Полезные ссылки:
Установка Gitlab CE на Debian/Ubuntu Linux
Как установить GitLab в Debian 12
Запуск GitLab на Debian 11
Калькулятор Crontab
Калькулятор обновлений Gitlab-ce