Фев 082024
 

Вот и пришла пора вступить на тернистый путь контроля версий git, после теплого и лампового SVN. Для начала утоним, чем же хорош этот пресловутый инструментарий. GitLab — это проект, который используя систему управления репозиториями git полностью обеспечивает жизненный цикл DevOps, включая wiki, CI/CD и многое другое. По сравнению с другими версиями GitLab, Community Edition предоставляет ограниченный набор функций, но все же является мощным инструментом для управления проектами разработки ПО. Корпоративные версии предоставляют более широкие возможности, такие как расширенная аналитика, аварийное восстановление и средства безопасности.

Что же нам понадобится для развертывания данного инструмента для разработчика:
1. Debian 12 или новее;
2. Выделенная оперативная память не менее 8 Гб;
3. Дисковое пространство 50 Гб + место под проекты;
4. Процессорных ядер не менее 4 шт;
5. Доменное имя.

Это основное, там еще есть почтовые сервисы, и другие плюшки, но и без этого будет работать.
На самом деле, инструкция будет довольно короткой, так как добрые разработчики сделали все до нас, и по сути установочные скрипты сделают всю грязную работу сами, главное не накосячить в мелочах.
1. Обновление Debian

apt update && sudo apt upgrade

2. Установка необходимых пакетов

apt install htop mc ssh curl ca-certificates apt-transport-https tzdata perl

3. Установить локаль, потребуется для PostgreSQL

sh -c "echo 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale"

4. Импорт репозитория GitLab

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

5. Установка Gitlab CE

apt install gitlab-ce

6. Настройка GitLab

nano /etc/gitlab/gitlab.rb

В нем нам нужно поправить несколько основных вещей, как то доменное имя, на которое будем получать сертификат, и настройки почтового сервиса, для получения оповещений.
Находим, заменяем на необходимое:

external_url 'https://gitlab.example.com'

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, должен открыться сайт.

gitlab-ctl reconfigure

Если перед установкой не была задана переменная с паролем администратора, после установки пароль администратора в течение 24 часов хранится в файле

cat /etc/gitlab/initial_root_password

Если необходимо сбросить пароль root, можно воспользоваться следующей командой:

gitlab-rake "gitlab:password:reset[root]"

8. Установка GitLab Runner
Для установки сборщика нужно воспользоваться официальным репозиторием GitLab:

# установка Docker
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

#Обновление GPG ключа репозитория:
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 update
apt-cache policy gitlab-ce
dpkg -s gitlab-ce
#Воспользоваться онлайн калькулятором обновлений по ссылке в подвале, и потом уже пошагово поднимать версию (далее пример)
apt install gitlab-ce=14.4.1-ce.0

10. Создание сценария резервного копирования
Для начала необходимо создать сценарий резервного копирования, который будет выполнять резервное копирование экземпляра GitLab. Для этого выполните следующие действия:

Используя текстовый редактор, создайте новый файл для сценария резервного копирования. Вот пример:

nano /usr/local/bin/gitlab-backup.sh

Вставьте в файл следующий код:

#!/bin/bash
 
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:

chown git:git /usr/local/bin/gitlab-backup.sh
chmod +x /usr/local/bin/gitlab-backup.sh

Создание Cronjob
Чтобы запланировать запуск сценария резервного копирования через регулярные промежутки времени, необходимо создать cronjob. Для этого выполните следующие действия:

crontab -u git -e

Чтобы запланировать запуск сценария резервного копирования на каждый день в 1:00 утра, добавьте следующую строку в конфигурационный файл crontab для пользователя GitLab (смотрим при необходимости калькулятор):

0 1 * * * /path/to/backup/script.sh

Проверить правильность работы cronjob можно, выполнив вручную сценарий резервного копирования и убедившись, что файл резервной копии создан без ошибок. Для этого введите в терминале следующую команду:

/usr/local/bin/gitlab-backup.sh

Основные файлы 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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)