Сравнение самых популярных инструментов непрерывной интеграции: Jenkins, TeamCity, Bamboo, Travis CI и других

Waterfall

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

Гибкие методологии

Переход на гибкие методы помог сократить циклы программирования до недель и обеспечил постоянную доставку. Сегодняшняя практика непрерывной интеграции (CI) развертывает обновления программ еще быстрее, в течение нескольких дней или часов. Это результат частой отправки кода в общий репозиторий, так что разработчики могут легко отслеживать баги с помощью автоматизированых тестов, а затем исправлять их как можно скорее. В нашей специальной статье мы подробно объясняем преимущества непрерывной интеграции, то, как подходить к ее принятию, и какие проблемы стоит ожидать на этом пути.

Теперь CI - это не волшебная палочка, которая автоматически исправляет ваш рабочий процесс, вам понадобится соответствующий инструмент. Итак, давайте углубимся в детали, задав практические вопросы: какой инструмент CI мне нужен? Насколько сложно учиться? Сколько это будет стоить мне? Будет ли это работать с моей инфраструктурой? Какой инструмент мне подходит?

Сегодняшний рынок наводнен множеством инструментов непрерывной интеграции, поэтому выбор правильного может быть затруднен. Хотя некоторые инструменты кажутся более популярными, чем другие, они не обязательно будут работать для вас. Пройдите легкий путь и прочитайте эту статью, чтобы получить четкое представление о лучших в своем классе инструментах CI: сравнение их функциональности. Затем вы увидите, какой инструмент лучше всего соответствует вашим потребностям.

Как выбрать инструмент непрерывной интеграции

Чтобы провести вас через множество вариантов на пути к выбору, мы предлагаем использовать следующие критерии:

Варианты хостинга. Программные средства отличаются по своей инфраструктуре управления. Облачные инструменты размещаются на стороне поставщика, требуют минимальных настроек и могут быть скорректированы по требованию в зависимости от ваших потребностей. Есть также решения для собственного размещения. Ответственность за их развертывание и поддержку лежит исключительно на ваших плечах, точнее на вашей собственной [команде DevOps] . В то время как локальные сервисы обеспечивают гибкость процесса построения, размещенные решения избавляют от трудностей установки, предлагая большую масштабируемость.

Интеграция и поддержка программного обеспечения. Насколько хорошо инструмент CI интегрирован с другим программным обеспечением, используемым в разработке? Примеры интеграции могут включать программное обеспечение для управления проектами (например, Jira), инструменты заполнения инцидентов (например, PagerDuty и Bugzilla), инструменты статического анализа, инструменты соответствия требованиям законодательства и т. Д. Инструмент CI должен быть достаточно гибким, чтобы поддерживать различные типы инструментов сборки (Make, Shell Скрипты, Ant, Maven, Gradle), программное обеспечение для контроля версий или VCS (Subversion, Perforce, Git) и т. Д.

Юзабилити. Некоторые инструменты могут сделать процесс сборки намного проще, чем другие, благодаря их четкому и понятному графическому интерфейсу и UX. Тщательно продуманный интерфейс может сэкономить ваше время на этапе адаптации.

Контейнерная поддержка. Наличие плагина развертывания или конфигурации для инструментов управления контейнером, таких как Kubernetes и Docker, упрощает подключение инструмента CI к целевой среде приложения.

Теперь мы выбрали лучших исполнителей на рынке CI для дальнейшего анализа: Jenkins, TeamCity, Bamboo, Travis CI, CircleCI и CodeShip. Чтобы понять их популярность, мы сравнили рейтинги от StackShare, G2 Crowd, and Slant.co.

Краткий обзор

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

Jenkins: наиболее распространенное решение CI

Jenkins - это проект с открытым исходным кодом, написанный на Java, который работает на Windows, macOS и других Unix-подобных операционных системах. Это бесплатно, поддерживается сообществом и может быть вашим первым инструментом непрерывной интеграции. Jenkins, в основном развернутый локально, может работать и на облачных серверах. Его интеграция с Docker и Kubernetes использует преимущества контейнеров и выполняет еще более частые выпуски.

+

  1. Jenkins - это бесплатный инструмент CI, который поможет вам сэкономить на проекте.
  2. Jenkins может интегрироваться практически с любой внешней программой, используемой для разработки приложений. Это позволяет использовать контейнерные технологии, такие как Docker и Kubernetes, из коробки.
  3. В Jenkins доступна обширная библиотека плагинов : Git, Gradle, Subversion, Slack, Jira, Redmine, Selenium, Pipeline, как вы это называете. Плагины Jenkins охватывают пять областей: платформы, пользовательский интерфейс, администрирование, управление исходным кодом и, наиболее часто, управление сборкой. Хотя другие инструменты CI предоставляют аналогичные функции, им не хватает полной интеграции плагинов, которую имеет Jenkins. Более того, сообщество Jenkins поощряет своих пользователей расширять функциональность новыми функциями, предоставляя учебные ресурсы.

-

  1. Плохая документация.
  2. Плохой интерфейс.

TeamCity: еще один крупный игрок CI

TeamCity от JetBrains - это надежный и качественный CI-сервер. Команды часто выбирают TeamCity для большого количества функций аутентификации, развертывания и тестирования, а также поддержки Docker. Он кроссплатформенный, поддерживает все последние версии Windows, Linux и macOS и работает с Solaris, FreeBSD, IBM z / OS и HP-UX. TeamCity работает сразу после установки, никаких дополнительных настроек или настроек не требуется. Он обладает рядом уникальных функций, таких как подробные хронологические отчеты, мгновенные отзывы о неудачных тестах и ​​повторное использование настроек, поэтому вам не нужно дублировать код.

Ценовая политика TeamCity предлагает бесплатную версию с полным доступом ко всем функциям продукта, но она ограничена 100 конфигурациями сборки и тремя агентами сборки. Добавление еще одного агента сборки и 10 конфигураций сборки в настоящее время стоит $ 299. TeamCity предлагает 60-дневную пробную версию облака, которая обходит локальную установку.

+

  1. Хорошая документация.
  2. Простота настройки.
  3. Хороший функционал.

-

  1. Сложный для новичков.
  2. Процесс обновления вручную.

Bamboo: готовая интеграция с продуктами Atlassian

Хотя Bamboo имеет меньше готовых опций, он изначально интегрируется с другими продуктами Atlassian: Bitbucket, Jira и Confluence. Фактически, та же самая интеграция берет Дженкинса в огромную схему плагинов. Как и два предыдущих инструмента, Bamboo работает на Windows, Linux, Solaris и macOS. Для тех, кто работает с Bamboo в Linux, они настаивают на создании специального пользователя, чтобы предотвратить возможные злоупотребления.

Ценовая политика. Бамбук можно попробовать в течение 30 дней. После этого его опции уровня пользователя включают неограниченное количество локальных агентов и 10 рабочих мест и возможность масштабирования до 1000 удаленных агентов по цене от 10 до 126 500 долларов США соответственно. Там включен 12-месячный период обслуживания. Этот период можно удвоить или утроить за больше денег. Программное обеспечение Atlassian является бесплатным для любого проекта с открытым исходным кодом, который соответствует их определенным критериям.

+

  1. Богатая и простая интеграция.
  2. Документация и поддержка.

-

  1. Мало плагинов.
  2. Некоторые пользователи жалуются что процесс установки первой задачи развертывания не совсем интуитивно понятен.

Travis CI

Как одно из старейших решений CI, Travis завоевал доверие многих пользователей. Он имеет большое и полезное сообщество, которое приветствует новых пользователей и предоставляет множество учебных пособий.

Travis CI может тестировать на Linux и MacOS. Между тем, его документация предупреждает, что включение тестирования нескольких ОС может привести к недоступности некоторых инструментов или языков или к ошибкам тестирования из-за особенностей поведения каждой файловой системы.

Предлагая множество автоматических опций CI, Travis устраняет необходимость в выделенном сервере, так как он размещен в облаке. Тем не менее, у него также есть локальный продукт для компаний, которые хотят продолжать использовать те же функции инструментов CI, которые дополнены требованиями безопасности на месте.

Ценовая политика. Первые 100 сборок бесплатны. В противном случае существует четыре тарифных плана для хобби-проектов (69 долларов в месяц) и для небольших, растущих и более крупных команд (от 129 до 489 долларов в месяц). Они отличаются по количеству одновременных процессов, которые могут быть запущены. Вы также можете связаться с Travis CI, чтобы получить индивидуальный план.

+

  1. Простая настройка и настройка.
  2. Интеграция с Github (хотя этим не удивить).
  3. Резервное копирование последней сборки.

-

  1. Интеграция только с GitHub
  2. Только CI без CD.

CircleCI: простой и полезный инструмент CI для ранних проектов

CircleCI - это гибкий инструмент CI, который обеспечивает параллелизацию до 16x. Он интеллектуально уведомляет пользователей, предоставляя только соответствующую информацию по электронной почте, HipChat, Campfire и другим каналам. CircleCI обеспечивает простую настройку и обслуживание.

CircleCI - это облачная система, которая также предлагает предварительное решение с безопасностью и конфигурацией для запуска инструмента в частном облаке или центре обработки данных.

Ценовая политика. У CircleCI есть бесплатная двухнедельная пробная версия. Бесплатный пакет Linux включает в себя один контейнер. Добавив больше контейнеров (по 50 долларов в месяц), вы также можете выбрать уровень распараллеливания (от одного до 16 одновременных заданий). Планы MacOS варьируются от 39 долларов в месяц для 2-х параллельного использования до 249 долларов в месяц для 7-кратного параллелизма и поддержки по электронной почте.

+

  1. Простой пользовательский интерфейс
  2. CircleCI выполняет все типы тестов программного обеспечения, включая веб, мобильные и контейнерные среды.
  3. Кэширование требований установки и сторонних зависимостей. Вместо установки сред CircleCI может получать данные из нескольких проектов.
  4. . CircleCI имеет функцию отладки Debug через SSH , но пользователям Jenkins приходится отлаживать вручную, нажимая на задания.

-

  1. Нет кэширования Docker
  2. CircleCI пока не позволяет создавать и тестировать в среде Windows

CodeShip: облачный инструмент CI с быстрой сборкой

CodeShip by CloudBees дает полный контроль над настройкой и оптимизацией рабочего процесса CI и CD. Этот инструмент CI помогает управлять командой и оптимизировать проекты. С помощью параллельных конвейеров, параллельных сборок и кэширования CodeShip позволяет создавать мощные конвейеры развертывания, которые позволяют легко развертывать несколько раз в день.

Ценовая политика. CodeShip доступен в двух версиях: Basic и Pro. Базовая версия предлагает предварительно настроенную службу CI с простым веб-интерфейсом, но без поддержки Docker. CodeShip Basic поставляется в нескольких платных пакетах от 49 до 399 долл. В месяц: чем больше возможностей распараллеливания, тем выше цена. Pro версия поддерживает Docker и является более гибкой.

Существует также бесплатный план, ограниченный 100 сборками в месяц, одной параллельной сборкой и одним параллельным конвейером тестирования. Образовательные и некоммерческие проекты получают скидку 50%. Проекты с открытым исходным кодом всегда бесплатны.

+

  1. Параллельные тесты. CodeShip имеет специальную функцию Parallel CI для параллельного запуска тестов.
  2. Хороший UX.
  3. CodeShip легко настраивается благодаря встроенной поддержке Docker.

-

  1. Плохя документация.
  2. CodeShip работает на Windows, macOS и веб-устройствах, в то время как большинство инструментов CI также поддерживают Linux, Android и iOS.

Окончательные рекомендации по выбору инструмента CI

Как выбрать из множества решений CI то, которое будет не только отвечать вашим текущим требованиям интеграции? Прохождение следующего контрольного списка облегчит ваш выбор:

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

Имейте в виду функциональность, которая вам нужна. Jenkins - отличное решение для непрерывной интеграции, но это не так уж важно, если у вас уже есть система CI и вы ищете инструмент для CD. Меньшие инструменты, такие как Spinnaker , отлично подходят для тестирования и доставки, но не предназначены для интеграции. Эти примеры показывают, что каждый инструмент хорош в определенных функциях. Итак, сначала вы должны выяснить вашу основную бизнес-цель и какие функциональные возможности могут ее удовлетворить.

Знайте правила хранения данных вашей компании. Хотя очень удобно использовать размещенные сервисы и инструменты, иногда бывает нецелесообразно передавать управление инфраструктурой третьей стороне. Правовые и законодательные требования могут стать решающим критерием, если ваша компания требует строгого контроля над процессами, строго регулирующими доступ к данным. В этом случае единственный вариант - хранить данные локально на локальном сервере.

Убедитесь, что решение соответствует вашему бюджету. Учитывайте размер вашего проекта и выбирайте вариант, который удовлетворяет его потребности по разумной цене. Например, стартапы могут более эффективно использовать облачное решение CI, поскольку оно включает базовые основные функции для небольшого числа пользователей с минимальными затратами или без таковых.

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

Протестируйте рабочий процесс с помощью различных инструментов CI. Очень редко достаточно одного инструмента CI для всех сценариев. Даже выдающиеся инструменты CI, описанные в нашей статье, едва ли могут удовлетворить 80 процентов требований к автоматизации, поскольку проекты варьируются от монолитных систем программного обеспечения до мощных архитектур на основе микросервисов.

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

Перевод статьи.

7 лайков

Было бы здорово обзор ещё одного, популярного инструмента, GitLab CI

2 лайка