Гид по технологиям

Установка локального сервера GitLab для CI/CD

• 6 min read • DevOps • Обновлено 18 Nov 2025
Локальный GitLab для CI/CD — руководство
Локальный GitLab для CI/CD — руководство

Кратко: пошаговое руководство по развёртыванию GitLab Community Edition на локальном сервере для организации CI/CD. В статье — подготовка сервера, установка зависимостей, запуск и базовое тестирование репозитория, чеклисты для админа и советы по отладке.

Important: руководство ориентировано на локальную среду и использует GitLab CE. В продакшене рекомендуются дополнительные меры по резервному копированию, мониторингу и безопасности.

Фото сервера с отображением веб-интерфейса установки GitLab

Что такое GitLab и зачем он нужен

GitLab — это единое приложение для полного DevOps-пайплайна: планирование проектов, управление исходным кодом, CI/CD, мониторинг и безопасность. Вместо множества разрозненных инструментов GitLab даёт единый репозиторий данных, единый интерфейс и единую модель авторизации, что ускоряет цикл разработки и упрощает взаимодействие команд.

Преимущества локального развёртывания:

  • Контроль над данными и конфигурацией.
  • Возможность интеграции в корпоративную сеть и внутренние CI-агенты.
  • Отсутствие зависимости от внешнего SaaS при требованиях соответствия.

Когда локальный GitLab уместен: корпоративные сети с требованием к безопасности, разработка закрытых проектов, тестовые/стейдж-энвайронменты.

1. Как работает непрерывная интеграция и непрерывное развёртывание

Ниже — упрощённая логика работы DevOps-процесса на базе GitLab:

  • Разработчик создает ветку, вносит изменения и пушит код в репозиторий.
  • GitLab CI запускает пайплайны: сборка, тесты, статический анализ.
  • При успешных проверках артефакты автоматически разворачиваются на тест/прод окружение.
  • Мониторинг и уведомления закрывают цикл обратной связи.

Схема процесса непрерывной интеграции и доставки, показывающая фазы: код, тесты, сборка, деплой, мониторинг

Краткое определение:

  • CI (Continuous Integration) — автоматизация сборки и тестирования при каждом изменении кода.
  • CD (Continuous Deployment) — автоматическое развёртывание артефактов в окружения при прохождении CI.

Примечание: в этой инструкции мы сосредоточимся на развёртывании локального GitLab CE и базовом тестовом CI через процедуру клонирования и пуша.

2. Фаза установки

Ниже — последовательность действий для базовой установки GitLab CE на локальном сервере (пример на базе RHEL/CentOS-подобной системы). Пункты с командами сохранены как в исходном материале.

Требования и подготовка

Коротко о подготовке перед установкой:

  • Обновите пакеты и установите базовые утилиты (curl/wget, openssh-server).
  • Убедитесь, что сервер имеет доступ к интернету для скачивания репозиториев пакетов.
  • Проверьте настройки DNS (/etc/resolv.conf) и сетевые правила.
  • Для небольших тестовых установок достаточно выделить минимальные ресурсы; для боевой — используйте рекомендованные GitLab системные требования и планирование дискового пространства.

Пример подготовки:

 [root@MyGitLab ~]# cat /etc/resolv.conf   
 [root@MyGitLab ~]# yum updateinstall -y curl policycoreutils-python openssh-server   
 

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

Скриншот терминала с выполнением команд установки зависимостей

Интерфейс пакетов в процессе установки

Настройка почтового сервиса (Postfix)

GitLab использует почту для уведомлений и восстановления пароля. Для локальной установки достаточно простого SMTP-агента, например postfix.

 [root@MyGitLab ~]# systemctl start postfix   
 [root@MyGitLab ~]# systemctl status postfix   
 [root@MyGitLab ~]# systemctl enable postfix   
 

После запуска сервиса проверьте статус и логи, если почта не работает.

Скриншот статуса сервиса postfix

Важно: в средах с жёсткими ограничениями сети возможно потребуется настроить relay или интегрироваться с корпоративным SMTP.

Загрузка установочного скрипта GitLab (через wget)

GitLab предоставляет автоматический скрипт для добавления репозитория и ключей. В примере используется wget, можно заменить на curl.

 [root@MyGitLab ~]# yum install -y wget   
 [root@MyGitLab ~]# wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh   
 [root@MyGitLab ~]# chmod +x script.rpm.sh   
 [root@MyGitLab ~]# ./script.rpm.sh   
 

Процесс добавления репозитория и ключа выглядит примерно так:

Вывод выполнения скрипта установки репозитория GitLab

Дальнейшие шаги установки репозитория и ключей

Подтверждение добавления репозитория

Результат выполнения скрипта на терминале

Установка пакета gitlab-ce

Перед установкой задайте EXTERNAL_URL — адрес, по которому пользователи будут заходить в интерфейс GitLab.

 [root@MyGitLab ~]# EXTERNAL_URL="http://10.124.12.133:80"   
 [root@MyGitLab ~]# echo $EXTERNAL_URL   
 http://10.124.12.133   
 [root@MyGitLab ~]# yum install -y gitlab-ce   
 

Процесс установки может занять значительное время: GitLab включает несколько компонентов и зависимостей.

Лог установки пакета gitlab-ce с прогрессом

Другой фрагмент установки и вывода RPM

Конфигурация и запуск GitLab

После установки проверьте и при необходимости отредактируйте файл /etc/gitlab/gitlab.rb, убедитесь, что external_url настроен правильно.

 [root@MyGitLab ~]# cat /etc/gitlab/gitlab.rb   
 external_url='http://10.124.12.133'   
    
 [root@MyGitLab ~]# gitlab-ctl reconfigure   
 

Команда gitlab-ctl reconfigure применяет шаблоны и генерирует конфигурацию для всех встроенных компонентов.

Процесс выполнения gitlab-ctl reconfigure с логами

Пошаговый вывод утилиты настройки

Инициализация сервисов и создание пользователя внутри GitLab

Завершение конфигурации и готовность сервиса

Открытие портов и проверка сети

Разрешите HTTP/SSH-трафик в брандмауэре и убедитесь, что iptables/Firewalld пропускают соединения.

 [root@MyGitLab ~]# firewall-cmd --permanent --add-service ssh   
 [root@MyGitLab ~]# firewall-cmd --permanent --add-service http   
 [root@MyGitLab ~]# firewall-cmd --reload   
 [root@MyGitLab ~]# iptables -L -n   
 

Проверка правил firewall-cmd и iptables

Подтверждение, что службы доступны по сетевым портам

Завершение установки и первый вход

Откройте в браузере configured external_url (в примере — http://10.124.12.133). При первом входе система попросит задать пароль для пользователя root. При успешной установке откроется веб-интерфейс GitLab.

Экран входа в GitLab с полем ввода логина и пароля

Страница смены пароля администратора и начальной настройки

Important: после установки сделайте бэкап файла /etc/gitlab/gitlab.rb и резервную копию данных GitLab (gitlab-rake gitlab:backup:create) перед большими изменениями.

3. Фаза тестирования

Теперь проверим базовый рабочий поток: создадим проект, добавим пользователя, клонируем репозиторий с другой машины, внесём изменения и запушим их назад.

Создание проекта через веб-интерфейс

  • Нажмите “Create a Project” и заполните поля: имя, описание, видимость.
  • После создания вы попадёте на страницу проекта.

Экран создания нового проекта в GitLab с формой названия и описания

Выбор шаблона и настроек видимости проекта

Главная страница созданного проекта с деревом репозитория

Добавление участников и ролей

  • Перейдите в настройки проекта → Members → Add people.
  • Добавьте пользователя, назначьте роль (Guest, Reporter, Developer, Maintainer, Owner).

Форма добавления пользователя в проект

Список участников проекта и их роли

Выбор роли для участника с подсказкой Read More для описания прав

Подтверждение добавления члена команды со списком ролей

Клонирование репозитория с тестовой машины

Скопируйте URL проекта (HTTP/SSH) и на тестовой рабочей станции выполните:

 [root@Test1 ~]# yum install -y git   
 [root@Test1 ~]# git clone http://10.124.12.133/root/my-first-project.git   
 

При клонировании используйте учётные данные созданного пользователя.

Пример авторизации при клонировании через HTTP в терминале

Коммит и пуш изменений

Простейшая проверка синхронизации:

 [root@Test1 ~]# cd ls   
 anaconda-ks.cfg my-first-project   
 [root@Test1 ~]# cd my-first-project/   
 [root@Test1 my-first-project]# ls   
 README.md   
 [root@Test1 my-first-project]# touch myfile.txt   
 

Затем добавляем, коммитим и пушим:

 [root@Test1 my-first-project]# git add myfile.txt   
 [root@Test1 my-first-project]# git commit -m "added new file"   
 [root@Test1 my-first-project]# git push -u origin master   
 

Вывод команды git push с подтверждением передачи объектов

После успешного пуша обновите страницу проекта в браузере — новый файл должен появиться в списке репозитория.

Список файлов в репозитории, где виден только что добавленный файл

Чеклист: критерии приёмки установки

  • Веб-интерфейс GitLab доступен по external_url.
  • Удалённые пользователи могут аутентифицироваться и клонировать репозитории.
  • Mail-уведомления от GitLab доставляются (или настроен relay).
  • gitlab-ctl status показывает все основные сервисы в состоянии running.
  • Бэкап конфигурации и данных настроен и протестирован.

Роли и обязанности (быстрые чеклисты)

Для системного администратора:

  • Проверить сетевые правила и DNS.
  • Настроить резервное копирование и ротацию логов.
  • Обеспечить мониторинг и alerting.

Для разработчика:

  • Убедиться, что CI/CD пайплайн запускается при пушах.
  • Проверить, что права на проект соответствуют рабочей политике.

Для DevOps-инженера:

  • Настроить runners для сборок (Shared/Specific).
  • Оптимизировать кеши и хранение артефактов.

Быстрая методология развертывания (mini-methodology)

  1. Подготовка окружения: сеть, DNS, ресурсы.
  2. Инсталляция базовых пакетов и почтового агента.
  3. Добавление репозитория GitLab и установка пакета.
  4. Конфигурация external_url и reconfigure.
  5. Открытие портов, проверка доступа.
  6. Создание тестового проекта и проверка CI-процессов.
  7. Резервное копирование и документирование конфигурации.

Устранение неполадок — часто встречаемые проблемы и решения

  • Проблема: веб-интерфейс недоступен.

    • Проверить, что gitlab-ctl status возвращает сервисы в режиме running.
    • Проверить firewall-cmd и iptables.
    • Проверить /var/log/gitlab/nginx/*.log и /var/log/gitlab/gitlab-rails/production.log.
  • Проблема: при пуше авторизация не проходит.

    • Убедиться, что пользователь создан и имеет доступ к проекту.
    • Если используется HTTPS, проверить сертификаты и время на серверах (TLS ошибки из-за некорректного времени).
  • Проблема: почта не отправляется.

    • Проверить конфигурацию postfix или SMTP relay.
    • Проверить логи mail и настройки в /etc/gitlab/gitlab.rb (gitlab_rails[‘smtp_enable’] и т. п.).

Принятие решения: локальный GitLab или SaaS

flowchart TD
  A[Нужен GitLab] --> B{Требования к данным}
  B -->|Конфиденциальность или соответствие| C[Развёртывание локально]
  B -->|Гибкость не критична| D[Использовать GitLab.com 'SaaS']
  C --> E{Ресурсы и навыки}
  E -->|Есть| F[Развёртывание CE/EE]
  E -->|Нет| G[Использовать Managed/Hosted решение внутри сети]

Меры безопасности и рекомендации

  • Ограничьте доступ по сети: проксируйте через VPN или корпоративный прокси при необходимости.
  • Настройте HTTPS (TLS) для внешнего доступа — используйте сертификаты от внутреннего CA или Let’s Encrypt.
  • Регулярно обновляйте GitLab и системные пакеты, планируйте окна обслуживания.
  • Настройте RBAC для проектов и групп, минимизируя привилегии.

Короткий план отката (rollback)

  1. При наличии проблем остановить критические изменения.
  2. Восстановить конфигурацию из резервной копии /etc/gitlab/gitlab.rb.
  3. При необходимости восстановить бэкап данных gitlab-rake gitlab:backup:restore.
  4. Тестировать восстановление в стенде до применения в продакшен.

Факт-бокс: ключевые элементы

  • Пакет: GitLab Community Edition (gitlab-ce).
  • Основная команда для применения конфигурации: gitlab-ctl reconfigure.
  • Файлы конфигурации: /etc/gitlab/gitlab.rb, /var/opt/gitlab.
  • Резервное копирование: gitlab-rake gitlab:backup:create.

Краткое резюме

  • Локальный GitLab даёт полный набор инструментов для CI/CD и удобен для корпоративных сетей.
  • Важные этапы: подготовка сервера, установка зависимостей, конфигурация external_url, открытие портов и тестирование рабочей цепочки.
  • Не забудьте про бэкапы, мониторинг и безопасность перед переводом в продуктив.

Notes: если планируете интеграцию с корпоративными SSO/LDAP или использовать GitLab Runner в продакшене — выделите дополнительное время на тесты и безопасность.

Short announcement (для рассылки):

Готово: локальный GitLab-сервер развернут для CI/CD. Веб-интерфейс доступен по настраиваемому URL. Рекомендуется настроить TLS, резервное копирование и runners для полного рабочего процесса.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро