Проект GitLab
Несмотря на то что Git уже больше двенадцати лет, толковых проектов, реализующих серверную часть, практически нет. Конечно, можно организовать репозиторий для хранения кода с использованием стандартных инструментов SSH и HTTP плюс установить интерфейс GitWeb, средство управления аккаунтами Gitolite, но вряд ли после GitHub или Bitbucket он покажется функциональным, а управление несколькими инструментами — удобным и понятным. Разработчики будут бунтовать.
GitLab — решение, предоставляющее возможности создания репозитория на своем сервере, не уступающие по функциям GitHub. Интерфейс даже в чем-то похож на GitHub, хотя и не совсем его копирует, но все удачные находки там присутствуют. Основан в 2011 году харьковчанином Дмитрием Запорожцем, который пытался найти аналог сервиса GitHub с доступными ценами и в итоге написал его сам. Решение быстро начало набирать популярность, так как он удобней для командной работы, а новые функции появлялись постоянно, и разработчики реагировали на потребности пользователей. Позже была образована GitLab Inc. Анонс в стартап-акселератор Y Combinator оказался удачным, и команда получила финансирование. Сегодня в проект инвестировано более 25 миллионов долларов, а сам Дмитрий Запорожец попал в Forbes 30 до 30 лет в категории Enterprise Tech. В компании работает более 150 разработчиков из 37 стран, кроме того, часть изменений предлагает комьюнити. GitLab использует более 100 тысяч компаний, в том числе NASA, AT&T, IBM, Alibaba, O’Reilly Media.
Код распространяется по MIT-лицензии. В 2013 году разработка разделена на две версии: для комьюнити — GitLab CE и для предприятий — GitLab EE. Вторая впоследствии получила ряд дополнительных функций, недоступных в CE, имеет два варианта — Starter и Premuim. Справедливости ради следует отметить, что некоторые фишки из EE со временем перекочевывают в CE. Так это случилось с учетом времени (Time Tracking) и GitLab Pages. Написан на Ruby с использованием фреймворка Ruby on Rails, некоторые части на Go.
Возможности GitLab
В первую очередь хочется отметить продуманный дизайн. Все просто и на своих местах. Разработчики прислушиваются к пользователям и, меняя меню и интерфейс, делают GitLab более удобным в работе. Интерфейс английский, немецкий и испанский. В Сети есть попытки локализации, но я ими не пользовался.
GitLab поддерживает все основные функции, которые мы привыкли видеть в GitHub: проекты, отслеживание ошибок, запросы на добавление кода, контроль за изменениями, ревью кода, навигацию по веткам и тегам, управление доступом на основе учетных записей и групп. Группы могут быть приватные, внутренние (доступны всем зарегистрированным пользователям) и публичные. С релиза 9.0 появились подгруппы, по возможностям не отличающиеся от групп, но позволяющие лучше организовать проекты в компаниях с большим количеством подразделений или проектов. Доступно до 20 уровней вложенности. Также есть Wiki, функция публикации небольших блоков кода (Code Snippets), графики коммитов участников и аналитика общей активности репозитория, анализ различий между версиями, визуализация ветвления репозитория, веса задач, связанные с мерж-реквестами, protected branches и многое другое.
Главная страница проекта настраиваемая. Здесь можно указывать список файлов, текущую активность или, например, README. Есть поиск и фильтры. Доски задач (Issue Boards) позволяют контролировать задачи на разных этапах, наглядно показывая ход работ, порядок и приоритет задач меняется простым перетаскиванием, сообщения о событиях отправляются по email или в чат. Этим в общем мало кого удивишь. Некоторые вещи (например, code review) могут показаться непривычными, но все работает как нужно, нет необходимости ставить что-то еще вроде CodeBrag или Gerrit.
GitLab можно интегрировать с Jenkins CI, но сам GitLab предоставляет большой набор всяких DevOps-инструментов для разработчиков. С версии 8.0 появилась непрерывная интеграция CI/CD (Continuous Integration / Continuous Delivery) и затем автоматическое развертывание (auto deploy), в том числе и в Kubernetes, позволяющие автоматизировать тестирование, контролировать код, разворачивать приложение. Для активации CI достаточно в корень проекта положить файл .gitlab-ci.yml, в котором описаны задачи (Job), и GitLab, обнаружив файл, будет выполнять все инструкции. Для запуска сборок используется Docker. Позже появилось графическое отображение конвейеров, события конвейеров стали доступны через веб-хуки, и для хранения образов можно использовать приватные Docker-репозитории. Развертывание приложения в Kubernetes отслеживается при помощи deploy boards, текущее состояние отслеживается вплоть до пода (pods), без необходимости использования Dashboard или команд Kubernetes. Для доступа при развертывании используются deploy keys с ограничением по доступу к репозиторию извне, закрытые переменные хранятся в Secret Variables.
С CI/CD тесно связана идея ChatOps. GitLab поддерживает опенсорсную альтернативу Slack — Mattermost, позволяющий вести переписку в публичных и приватных каналах, развертывать приложения в окне чатов, искать информацию, экспортировать переписку.
Для мониторинга GitLab в него интегрирован Prometheus и его компонент, позволяющий отслеживать системные ресурсы Node Exporter. Благодаря этому можно получать данные об используемых ресурсах и выводить их, например на Grafana. С версии 9.0 мониторинг интегрирован в конвейеры CI/CD и репозиторий исходного кода, данные об использовании ресурсов CPU и памяти приложением выводятся прямо в интерфейсе GitLab.
Следует особо отметить API GitLab, помогающий автоматизировать задачи и управление, поддерживается CLI (gitlab-*) и слеш-команды, позволяющие выполнить сразу несколько операций.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»