GitLab

Материал из llmdocs — справочник разработчика
Портал: Git, CI/CD, DevOps
GitLab
РазработчикGitLab Inc.
АвторыДмитрий Запорожец, Валерий Сизов
Первый выпуск2011
ЯзыкRuby (Rails), Go, Vue.js
РедакцииCommunity Edition (MIT), Enterprise Edition (Premium, Ultimate)
ВариантыGitLab.com, Self-Managed, Dedicated
Выпускиежемесячно, 3-го четверга
КонкурентыGitHub, Bitbucket, Gitea/Forgejo

GitLab — платформа для совместной разработки программ на основе Git. В одном продукте собраны хостинг репозиториев, merge requests и код-ревью, задачи и доски, встроенный CI/CD, реестры контейнеров и пакетов, вики, управление окружениями и инструменты безопасности. Главное отличие от GitHub — исторически сильная версия для установки на собственные серверы, благодаря чему GitLab широко распространён в компаниях, которым важно держать код внутри своей инфраструктуры.

История

Проект начали в 2011 году украинские программисты Дмитрий Запорожец и Валерий Сизов как открытую альтернативу GitHub для установки у себя.[2] В 2014 году была основана компания GitLab Inc. под руководством Сида Сейбрандея. В 2015-м CI-система GitLab CI была встроена в основной продукт — одна из ранних платформ «всё в одном». В 2018 году, после покупки GitHub компанией Microsoft, на GitLab переехали сотни тысяч репозиториев. В 2021 году компания вышла на биржу NASDAQ. GitLab известен полностью удалённой работой и публичным справочником компании (handbook).

Редакции и варианты

Вариант Где работает Кому
GitLab.com облако GitLab Inc. командам без своей инфраструктуры
Self-Managed ваши серверы или облако компаниям с требованиями к размещению данных
Dedicated выделенный экземпляр в облаке крупным организациям

Код распространяется в двух редакциях: Community Edition под лицензией MIT и Enterprise Edition с платными уровнями Premium и Ultimate (расширенное ревью, безопасность, портфельное планирование).[6] Бесплатный уровень включает репозитории, merge requests, CI/CD и реестры.

Основные возможности

  • Группы и проекты — иерархия групп и подгрупп с наследованием прав и настроек; удобно для большой организации.
  • Merge requests — аналог pull request на GitHub: обсуждение по строкам, обязательные одобрения, правила защиты веток, слияние после успешного конвейера (см. Pull request / Merge request).[4]
  • Задачи (issues) — метки, вехи (milestones), доски Kanban, эпики; связь коммитов и MR с задачами по ссылкам #123.
  • CI/CD — конвейеры описываются в .gitlab-ci.yml, задачи выполняет GitLab Runner на своих машинах, в Docker или Kubernetes.
  • Реестры — встроенный Container registry (registry.gitlab.com), реестры пакетов (npm, PyPI, Maven, Go), хранилище Helm-чартов и состояний Terraform.[5]
  • Окружения и деплой — история выкладок по окружениям, ревью-окружения для каждой ветки, интеграция с Kubernetes через агента.
  • Безопасность (часть функций — в Ultimate) — SAST, сканирование зависимостей и контейнеров, поиск секретов, отчёты прямо в MR.

Установка на свой сервер

Самый распространённый способ — пакет Omnibus, включающий все компоненты (Rails-приложение, Gitaly, PostgreSQL, Redis, nginx, Prometheus):[3]

# Ubuntu / Debian
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ee
sudo gitlab-ctl reconfigure
sudo gitlab-ctl status

Альтернативы — образ Docker, Helm-чарт или оператор для Kubernetes. Для небольшой команды нужен сервер минимум с 4 ядрами и 8 ГБ памяти; конфигурация хранится в /etc/gitlab/gitlab.rb, резервная копия создаётся командой gitlab-backup create (секреты из /etc/gitlab копируются отдельно). Обновлять стоит регулярно и по рекомендуемому пути версий — GitLab выходит каждый месяц.

GitLab и GitHub

GitLab GitHub
Своя установка CE бесплатно, полноценная GitHub Enterprise Server, платно
CI/CD встроен с 2015, единый .gitlab-ci.yml GitHub Actions, большой маркетплейс
Организация вложенные группы организации и команды
Сообщество open source меньше крупнейшее
Терминология merge request pull request

Для лёгкой собственной установки без CI-нагрузки также используют Gitea и её форк Forgejo — они требуют в десятки раз меньше ресурсов.

Практика

git remote add origin git@gitlab.com:group/project.git
git push -u origin main

# создать MR при пуше через push options
git push -o merge_request.create -o merge_request.target=main

Командная утилита glab позволяет работать с MR, задачами и конвейерами из терминала, аналогично gh для GitHub.

См. также

Источники

  1. GitLab Docs
  2. GitLab — History
  3. GitLab — Installation methods
  4. GitLab — Merge requests
  5. GitLab — Container registry
  6. GitLab — Feature comparison (pricing)