Установка GitLab Community Edition

Я решил подготовить небольшую опорную статью о том, как выполняет Установка GitLab Community Edition (CE) , т.к. оказалось, что есть некоторые нюансы. Поэтому для последующих развертываний будет очень удобно собрать все нюансы в одной публикации.

Я рассматриваю установку GitLab CE с позиции использования в качестве демо среды для обучения или каких-то тестов.

Я буду использовать операционную систему Ubuntu 22.04 x64. Если вам удобно, то можете руководствоваться официальным гайдом по установке GitLab на Ubuntu.

Предварительные требования

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

Для установки пакета вам потребуется порядка 3 ГБ свободного места на диски.

Для комфортной работы рекомендуется процессор с 4-мя процессорными ядрами.

Поскольку GitLab и GitLab Runner я совмещу на одной машине, то я бы рекомендовал минимум 6-8 ГБ оперативной памяти.

Подготовка операционной системы

Перед тем, как начать установку GitLab сначала нужно подготовить операционную систему.

Устанавливаем нужные компоненты:

sudo apt-get install -y curl openssh-server ca-certificates tzdata perl git
sudo apt-get install -y postfix

Дожидаемся окончания процесса установки компонентов.

Добавляем репозиторий GitLab:

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

Установка GitLab Community Edition

Запускаем процесс установки GitLab CE:

sudo EXTERNAL_URL="http://gitlab.itproblog.ru" apt install -y gitlab-ce

EXTERNAL_URL – это URL по которому вы будите обращаться к серверу GitLab.

Дожидаемся окончания процесса установки.

Проверка установки

После того, как установка была успешно завершена мы можем подключиться к web интерфейсу GitLab. Однако, предварительно нам необходимо посмотреть пароль пользователя root – он был сгенерирован автоматически в процессе установки.

sudo cat /etc/gitlab/initial_root_password

Содержимое файла будет примерно следующим:

# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: qWLTgJSQXT+WCI3nza5T0HYHN1eyeOMHslA7jG/18mw=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

Поскольку для доступа к web интерфейсу я указал имя gitlab.itproblog.ru, то я добавлю его в файл hosts и укажу IP-адрес сервера, на котором установлен GitLab.

sudo nano /etc/hosts
127.0.0.1       localhost
127.0.1.1       roman-virtual-machine
10.10.10.47     gitlab.itproblog.ru

Сохраняем внесенные изменения в файл hosts.

Вот теперь мы можем попробовать подключиться к web-интерфейсу:

http://gitlab.itproblog.ru

Указываем наши логин и пароль:

root
qWLTgJSQXT+WCI3nza5T0HYHN1eyeOMHslA7jG/18mw=

Установка GitLab Community Edition завершена успешно:

Добавление GitLab Runner

Сразу после установки GitLab CE у нас не будет ни одного раннера, т.е. все наши CI/CD процессы не смогут завершиться, а будут находиться в подвешенном состоянии (stuck). Чтобы этого избежать нам необходимо добавить хотя бы один Runner.

Я покажу пример добавления Runner типа shell – это самый простой тип раннера. Shell Runner – запускается локально на том сервере, где вы его установили. В моем случае он будет установлен на самом сервере с GitLab CE.

Сначала установим и настроем Runner на самом хосте с GitLab.

# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# Give it permission to execute
sudo chmod +x /usr/local/bin/gitlab-runner

# Create a GitLab Runner user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# Install and run as a service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

А вот теперь небольшой нюанс. На момент подготовки стать с shell runner в Ubuntu 22.04 был небольшой баг. Дело в том, что из-за файла .bash_logout пользователя gitlab-runner инициализация окружения runner’а не могла завершиться корректно. Обходное решение – удаление файла .bash_logout пользователя gitlab-runner:

sudo rm /home/gitlab-runner/.bash_logout

Переходим в раздел по управлению Runner.

http://gitlab.itproblog.ru/admin/runners

Нажимаем на ссылку “installation and registration instructions”.

В появившемся диалоговом окне копируем текст из секции “Command to register runner”. В моем случае текст команды для регистрации runner будет следующий:

sudo gitlab-runner register --url http://gitlab.itproblog.ru/ --registration-token 8pSJbE-nnwdnzh6-EqpU

Обратите внимание, что в команде указывается токен для подключения к серверу GitLab, т.е. в вашем случае токен будет другой.

Теперь регистрируем наш shell runner:

sudo gitlab-runner register --url http://gitlab.itproblog.ru/ --registration-token 8pSJbE-nnwdnzh6-EqpU
roman@roman-virtual-machine:~$ sudo gitlab-runner register --url http://gitlab.itproblog.ru/ --registration-token 8pSJbE-nnwdnzh6-EqpU
Runtime platform                                    arch=amd64 os=linux pid=8351 revision=0d4137b8 version=15.5.0
Running in system-mode.                            
                                                   
Enter the GitLab instance URL (for example, https://gitlab.com/):
[http://gitlab.itproblog.ru/]: 
Enter the registration token:
[8pSJbE-nnwdnzh6-EqpU]: 
Enter a description for the runner:
[roman-virtual-machine]: 
Enter tags for the runner (comma-separated):

Enter optional maintenance note for the runner:

Registering runner... succeeded                     runner=8pSJbE-n
Enter an executor: docker, shell, docker+machine, virtualbox, docker-ssh+machine, instance, kubernetes, custom, docker-ssh, parallels, ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
 
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml" 
roman@roman-virtual-machine:~$ 

Я оставлю все значения по умолчанию, но на этапе указания типа executor’а необходимо указать значение “shell”.

Теперь вернемся на веб интерфейс настройки Runner’а:

http://gitlab.itproblog.ru/admin/runners

Как результат, через пару минут (или даже меньше) мы должны увидеть наш Runner со статусом Online.

Добавление и настройка Runner завершена.

Настройка HTTPS

1. Открываем на редактирование конфигурационный файл:

/etc/gitlab/gitlab.rb

2. Отключаем обновление сертификата Let’s Encrypt и указываем URL для доступа по HTTPS:

external_url "https://gitlab.itproblog.ru"
letsencrypt['enable'] = false

Указываем расположение сертификата и файла ключа, а также включем редирект с HTTP на HTTPS:

nginx['ssl_certificate'] = "/etc/gitlab/ssl/itproblog.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/itproblog.key"
nginx['redirect_http_to_https'] = true

3. Создаем директорию для хранения сертификатов и ключей:

sudo mkdir -p /etc/gitlab/ssl
sudo chmod 755 /etc/gitlab/ssl

4. Скопируйте сертификат и файл ключа в диреткорию /etc/gitlab/ssl под теми именами, которые вы указали в п. 2. Можно использовать бесплатный сертификат от Let’s Encrypt.

5. Запустите процедедуру обновления конфигурации сервера GitLab:

sudo gitlab-ctl reconfigure

Тестовый pipeline

Осталось проверить какой-нибудь тестовый пайплайн.

Для чистоты эксперимента я создам новый пустой проект и в корень положу файл .gitlab-ci.yml:

Stage1:
  script:
    - echo "Step 1"
    - echo "Step 2"

Stage2:
  script:
    - echo "Step 1"
    - echo "Step 2"

А вот теперь выполним commit и проверим статус нашего pipeline. Оба этапа, определенные в файле выше должны завершиться успешно.

Таким образом мы завершили установку и первоначальную настройку GitLab Community Edition.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *