Какой CI/CD-инструмент выбрать — Jenkins или GitLab?

Инструменты непрерывной интеграции и развертывания CI/CD на сегодня довольно востребованы. Из всех актуальных решений есть два очевидных лидера, Jenkins и GitLab. На крупных сервисах отзывов у обоих решений примерно одинаковый рейтинг, но смотреть стоит не только на это. Давайте разберемся с преимуществами Jenkins и GitLab, и для каких задач они лучше всего подходят.

GitLab


Это бесплатный opensource-продукт, выпущенный под лицензией MIT и написанный на языках Go и Ruby. Отдельный сервер на таком решении способен работать более чем с 25 000 пользователями.


Интерфейс GitLab

GitLab дает возможности работы с репозиториями, ревьюить код, имеет собственную систему контроля ошибок и многое другое. Для повышения конфиденциальности пользователей есть возможность связать инструмент с Active Directory и с LDAP-серверами, установив его локально.

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

Плюсы


  • Подробная документация и простое управление.
  • Удобный пользовательский интерфейс для наблюдения за результатами тестирования. Можно дать права на чтение и изменение как отдельным людям, так и группе пользователей.
  • Удобный инструмент для установки майлстоунов, что позволяет оперативно отслеживать и решать проблемы.
  • Легкое назначение контрольных точек проекта и их группировка по задачам.
  • Удобное параллельное тестирование pull requests и веток, что делает его хорошим выбором для opensource-проектов.

Минусы


  • Артефакты (файлы, которые сохранить после сборки) требуется определять и загружать для каждого задания.
  • Этапы внутри больших задач пока не поддерживаются.

Jenkins


Расширяемое opensource-решение для автоматизации развертывания. Jenkins написан на Java и тоже работает под лицензией MIT. У него богатый набор функций для автоматизации задач сборки, тестирования, развертывания, интеграции и релиза программного обеспечения.


Интерфейс Jenkins

Кроме инсталяции через традиционный установочный пакет он может быть установлен как автономно, так и в качестве Docker на любой машине с установленной Java Runtime Environment (JRE).

Существует также подпроект команды Jenkins под названием Jenkins X, который специализируется на CI/CD в рамках кластеров Kubernetes.

Команда Jenkins выпустила около 1 500 плагинов, благодаря чему его можно использовать вместе с другими решениями — например, co Slack, Jira и другими. Интеграция также доступна для ряда инструментов тестирования DevOps. Есть поддержка REST API для удаленного доступа к системе. Существует три его варианта: Python, XML и JSON с поддержкой JSONP. Как и в случае с GitLab, продукт помогает развивать большое неравнодушное сообщество. Также решение может работать в качестве сервлета в контейнерах Java, таких как GlassFish и Apache Tomcat.

Плюсы


  • Простота настройки и обновления (всего за несколько шагов).
  • Автоматизированный процесс сборки и подробная понятная документация.
  • Легкая интеграция с другими инструментами, в этом случае вы можете получать уведомление о ходе процесса.
  • Использование нескольких машин для распределенных сборок. Это полезно в задачах, когда нужно протестировать продукт в нескольких разных средах.

Минусы


  • Сложная интеграция плагинов.
  • Решение не очень подходит для небольших проектов, так как его настройка довольно трудоемкая.

Суммируем


Jenkins хорош большой библиотекой плагинов, полным контролем над рабочими пространствами, легкой настройкой узлов и простым развертыванием. В целом решение гибкое, универсальное и несложное в освоении, с поддержкой множества языков (но нет русского).

В GitLab просто масштабировать раннеры, есть параллельное выполнение заданий в рамках разных фаз конвейера. Решение очень хорошо масштабируется, легко добавлять задачи. Также в GitLab качественно сделан с точки зрения безопасности и конфиденциальности.

С помощью GitLab можно контролировать все аспекты работы с Git-репозиториями, включая ветки с кодом С Jenkins же вы контролируете репозитории только до некоторой степени. Например, ветки вы контролируете не полностью.

Также стоит помнить изначальную задачу, которая стояла при разработке обоих инструментов. Jenkins создавался в первую очередь для реализации CI, а GitLab — для совместной работы с кодом и контроля версий.

Who's online

There are currently 0 users and 1 guest online.