GitLab

Решение для работы с git-репозиториями, которое можно развернуть на своём сервере.

GitLab Платформа для управления проектами и репозиториями. Она работает с системой версий Git и позволяет команде совместно работать над кодом.
Некоторые возможности GitLab: хранение кода проектов, вести ветвление, откатываться к нужным версиям, проводить сравнения и код-ревью. Планирование и трекинг задач. GitLab Issues позволяют быстро фиксировать баги, назначать ответственных, ставить сроки и следить за прогрессом. Настраивать CI/CD-пайплайны ля автоматизации сборки, тестов и производить деплой на продуктивный сервер.


Возможности

Интеграции и развертывание (CI/CD)

GitLab предоставляет полностью встроенную систему конвейеров, позволяющую автоматически собирать, тестировать и развёртывать код. Это обеспечивает непрерывный цикл поставки и повышает надёжность релизов.

Управление изменениями

Через Merge Requests, GitLab реализует проверку кода, ревью и автоматическое слияние через Merge Request. Инструмент поддерживает линейный, ветвистый и rebase‑стиль слияния, а также встроенную проверку кодовой базы через статический анализ. Это повышает качество кода и упрощает совместную работу над проектом.

Управление задачами (Issue Tracking)

Система отслеживания проблем объединяет баг‑трекер, Kanban‑таблицу и Gantt‑диаграммы. Пользователи могут создавать теги, приоритеты и статусы, а также связывать задачи с коммитами и Merge Requests, что позволяет видеть полную историю изменений.

Встроенный реестр контейнеров

GitLab Registry хранит Docker‑образы и Helm‑чарты внутри репозитория, позволяя управлять версиями там же, где хранится исходный код. Настраиваевые политики хранения образов, автоматического сканирования на наличие уязвимостей и доступа.

Нативная интеграция с GitLab Runner

GitLab Runner, написанный на Go, поддерживает несколько драйверов (Docker, Kubernetes, Shell). Он легко масштабируется и может работать как на локальных серверах, так и в облачных средах, обеспечивая гибкость при выполнении CI/CD‑задач.

Принцип работы

Omnibus‑пакетирование

GitLab поставляется в виде одного пакета, который автоматически устанавливает все зависимости: PostgreSQL, Redis, NGINX и GitLab Runner. Это упрощает развёртывание и обновление, а также гарантирует совместимость компонентов.

Микросервисная архитектура

Система разделена на несколько сервисов: Rails‑приложение для веб‑интерфейса, Gitaly (сервис для работы с Git‑репозиториями), Sidekiq для фоновых задач и Runner для выполнения пайплайнов. Каждый сервис можно масштабировать независимо, что повышает отказоустойчивость.

База данных PostgreSQL

В качестве основной СУБД используется PostgreSQL, обеспечивающая транзакционную целостность и поддержку расширений (PostGIS, Full‑Text Search). Это позволяет хранить метаданные репозиториев и пользовательские настройки.

Кеширование в Redis

GitLab использует Redis для кеширования сессий, очередей и задач Sidekiq. Это ускоряет обработку запросов и уменьшает нагрузку на базу данных, особенно при большом количестве одновременных пользователей.

Модульные расширения (Geo, LDAP, SAML)

Открытые модули позволяют подключать репликацию Geo для распределённых центров, LDAP‑и SAML‑аутентификацию и другие сервисы без изменения ядра. Это обеспечивает гибкость при настройке инфраструктуры под конкретные требования организации.