Системы непрерывной интеграции, о которых стоит знать

Перевод статьи «10 Continuous Integration Systems your Dev Team should know about in 2019».

Системы непрерывной интеграции
Photo by rawpixel on Unsplash

Что такое непрерывная интеграция

Непрерывная интеграция (Continuous Integration) в разработке программ это автоматизированный процесс сборки и тестирования кода в разделяемом репозитории. Когда делаются новые коммиты, они изолируются, собираются и тестируются на соответствие определенным стандартам прежде чем вольются в основную кодовую базу.

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

Обычно непрерывная интеграция сопряжена с непрерывной доставкой (Continuous Delivery), поэтому этапы непрерывной автоматизированной доставки исполняемого кода в продакшен часто обозначают CI/CD.

Преимущества непрерывной интеграции

Непрерывная интеграция обеспечивает множество преимуществ вашей компании, среди которых:

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

А теперь давайте рассмотрим основные системы непрерывной интеграции, используемые разработчиками, и особенности их работы.

Jenkins

Jenkins

Jenkins это инструмент непрерывной интеграции с открытым исходным кодом. Написан он на Java. Этот проект собрал больше 11 тысяч звезд на GitHub.

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

Благодаря интуитивному пользовательскому интерфейсу Jenkins очень легко настраивать и конфигурировать. Он доступен на операционных системах Linux, Macintosh и Windows. Jenkins создан для крупномасштабных интеграций, благодаря чему можно легко распределять работу между различными машинами.

Наличие больше 1000 плагинов позволяет автоматизировать практически что угодно. В результате члены вашей команды смогут посвятить свое время исключительно тем задачам, с которыми не способны справиться машины.

TeamCity

TeamCity

TeamCity это сервер непрерывной интеграции корпоративного уровня. Он поддерживает большое количество мощного функционала, а также имеет очень надежную бесплатную версию для маленьких проектов (до 100 конфигураций сборки).

TeamCity создан командой JetBrains, которая дала нам такой инструмент как WebStorm.

Поставляется он с обширной поддержкой множества плагинов с открытым исходным кодом – как собственных продуктов JetBrains, так и сторонних приложений и инструментов. Также TeamCity предлагает потрясающую поддержку .NET.

Благодаря всему этому данный сервер непрерывной интеграции отличается высокой надежностью, не зависящей от запуска сборок. TeamCity имеет очень понятную интеграцию с системами контроля версий. Коммиты можно предварительно тестировать, а команды – запускать удаленно.

Travis CI

Travis CI

Travis это очень популярный инструмент непрерывной интеграции (больше 7 тысяч звезд на GitHub). Он бесплатен для проектов с открытым исходным кодом. Этот инструмент можно назвать не кроссплатформенным, а платформо-независимым, поскольку что это веб-ресурс.

Travis поддерживает много языков программирования, включая Node и PHP, а также много конфигураций сборки.

Этот инструмент поставляется с очень мощным API и интерфейсом командной строки. Его легко настраивать, а инсталлировать и вовсе не нужно. Travis интегрирован с такими сервисами коммуникации как Slack, HipChat и даже с электронной почтой. Для сборки приложений используются виртуальные машины. Допускается параллельное тестирование.

Gitlab CI

GitLab CI

GitLab Continuous Integration это часть GitLab. По сути это веб-приложение с API, сохраняющим его состояние в базе данных. Используется для менеджмента проектов и предоставляет дружественный к пользователю, интуитивный интерфейс, а также все другие преимущества функционала GitLab.

Gitlab CI поставляется с реестром образов Docker, который называется реестром контейнеров. С помощью Gitlab вы можете изменять метаданные merge-реквеста без команд slash в комментарии.

Circle CI

Circle CI

Circle CI это гибкий сервер непрерывной интеграции, запускаемый в любой среде: в кросс-платформенном мобильном приложении, Python API сервере или кластере Docker. Инструмент нацелен на обозначение багов и улучшение качества приложения в целом (в долгосрочной перспективе).

Хорошо интегрируется с системами контроля версий, поддерживает много языков (JavaScript, C++, PHP, Python), а также Docker. Вы можете выбрать среду сборки и она будет поставлена вам в иде бесплатной версии, чтобы вы могли ее опробовать.

GoCD

GoCD

GoCD это сервер непрерывной интеграции, собравший больше 4,5 тысяч звезд на GitHub. Используется для моделирования и визуализации сложных рабочих процессов. GoCD также является инструментом непрерывной доставки, таким образом, это прекрасное решение для CI/CD процессов.

Несмотря на высокую степень безопасности, при обработке аутентификации и авторизации пользователей GoCD сохраняет чистое дерево конфигурации. Благодаря такому функционалу как value stream map вы можете визуализировать весь рабочий процесс в одном месте. GoCD имеет очень быстро растущее сообщество пользователей. Для этого сервера регулярно создаются и добавляются тысячи плагинов.

Bamboo

Bamboo

Bamboo создан командой Atlassian – очень крупной компании, занимающейся созданием программ промышленного уровня. Это build-сервер непрерывной интеграции, осуществляющий сборку, тестирование и релизы. Он создан для поддержки его «сестринского» инструмента Jira от Atlassian и систем контроля версий. Bamboo поддерживает много языков программирования и технологий, например, AWS Buckets.

Этот инструмент имеет простой в использовании интерфейс. Он содержит встроенный git branching, а также интегрируется с HipChat. Сборки могут запускаться по мере обнаружения изменений в кодовой базе.

Codeship

Codeship

Codeship это популярный инструмент непрерывной интеграции, автоматизирующий как процесс разработки, так и процесс деплоймента. Он запускает автоматизированный рабочий процесс, упрощая отправку в хранилище. Codeship имеет базовую и pro-версию. Можно настраивать уровни доступа для членов команды в каждом проекте. Поддерживает шифрованное внешнее кэширование образов Docker, имеет отличный функционал отладки, включая возможность отладки прямо из среды непрерывной интеграции. Также у Codeship очень приятная панель инструментов.

Buildbot

Buildbot

Buildbot это фреймворк для сборки инструмента тестирования и непрерывной интеграции, автоматизирующий цикл компиляции/тестирования. Написан он на Python, является кроссплатформенным, имеет больше 3,7 тысяч звезд на GitHub. Этот фреймворк используется для валидации изменений во многих проектах, поскольку предлагает очень распределенное параллельное выполнение задач.

Помимо того что BuildBot имеет открытый исходный код, он поддерживает single-source репозиторий, автоматизированную сборку и даже деплоймент, т. е., это централизованные CI/CD. BuildBot поставляется с поддержкой разнообразных платформ тестирования.

StriderCD

StriderCD

Strider это CI-инструмент с открытым исходным кодом. Имеет больше 4 тысяч звезд на GitHub. Для его установки вам понадобится установить на свою машину Node.js и MongoDB, поскольку он написан на Node с MongoDB в качестве уровня для хранения данных. Этот инструмент предлагает поддержку различных плагинов, модифицирующих схему базы данных и регистрирующих маршруты HTTP.

Strider позволяет вам публиковать и даже подписываться на события сокетов. Вы можете создавать собственный пользовательский интерфейс. Этот инструмент поставляется с поддержкой GitHub и различных систем контроля версий. Также Strider поддерживает большое количество плагинов для изменения дефолтной конфигурации и имеет очень хорошую поддержку Docker.

Заключение

Мы рассмотрели несколько стандартных систем непрерывной интеграции, которые можно опробовать в этом году. Этот обзор может быть полезен для команд, находящихся в поиске особого функционала, а также для команд, которые просто хотят сделать осознанный выбор.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх