Что такое Дженкинс? Инструмент непрерывной интеграции (CI)

Содержание:

Anonim

Что такое Дженкинс?

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

Jenkins бесплатен и полностью написан на Java. Jenkins - это широко используемое приложение по всему миру, которое насчитывает около 300 тысяч установок и растет день ото дня.

Это серверное приложение, для которого требуется веб-сервер, например Apache Tomcat. Причина, по которой Jenkins стал настолько популярным, заключается в том, что он отслеживает повторяющиеся задачи, возникающие во время разработки проекта. Например, если ваша команда разрабатывает проект, Jenkins будет постоянно тестировать сборки вашего проекта и показывать вам ошибки на ранних этапах разработки.

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

В этом руководстве вы узнаете

  • Что такое Дженкинс?
  • Что такое непрерывная интеграция?
  • История Дженкина
  • Зачем использовать непрерывную интеграцию с Jenkins?
  • Практический пример непрерывной интеграции
  • Преимущества использования Jenkins
  • Недостатки использования Jenkins

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

При непрерывной интеграции после фиксации кода программное обеспечение создается и тестируется немедленно. В большом проекте с большим количеством разработчиков коммиты совершаются много раз в течение дня. С каждым коммитом создается и тестируется код. Если тест пройден, сборка проверяется на развертывание. Если развертывание прошло успешно, код отправляется в рабочую среду. Эта фиксация, сборка, тестирование и развертывание - это непрерывный процесс, отсюда и название «непрерывная интеграция / развертывание».

Конвейер непрерывной интеграции - это мощный инструмент, состоящий из набора инструментов, предназначенных для размещения , мониторинга , компиляции и тестирования кода или изменений кода, например:

  • Сервер непрерывной интеграции (Jenkins, Bamboo, CruiseControl, TeamCity и другие)
  • Инструмент управления исходным кодом (например, CVS, SVN, GIT, Mercurial, Perforce, ClearCase и другие)
  • Инструмент сборки (Make, ANT, Maven, Ivy, Gradle и другие)
  • Фреймворк для автоматизации тестирования (Selenium, Appium, TestComplete, UFT и другие)

История Дженкина

  • Косуке Кавагути, Java-разработчик, работающий в SUN Microsystems, устал постоянно строить код и исправлять ошибки. В 2004 году создал сервер автоматизации под названием Hudson, который автоматизирует задачи сборки и тестирования.
  • В 2011 году Oracle, которой принадлежала Sun Microsystems, поссорилась с сообществом открытого исходного кода Hudson, поэтому они разделили Hudson и переименовали его в Jenkins.
  • И Хадсон, и Дженкинс продолжали действовать независимо. Но за короткий промежуток времени Дженкинс приобрел множество проектов и участников, в то время как Хадсон остался только с 32 проектами. Со временем Jenkins стал более популярным, и Hudson больше не поддерживается.

Зачем использовать непрерывную интеграцию с Jenkins?

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

Представим, что около 10 разработчиков работают над общим репозиторием. Некоторые разработчики выполняют свою задачу за 25 дней, в то время как другим требуется 30 дней.

До Дженкинса После Дженкинса
Когда все разработчики выполнили поставленные перед ними задачи по кодированию, они обычно фиксировали свой код одновременно. Позже Build тестируется и развертывается. Создан коммит кода, цикл тестирования был очень редким, а единственная сборка была сделана через много дней. Код создается и тестируется, как только Разработчик фиксирует код. Jenkin будет собирать и тестировать код много раз в течение дня. Если сборка прошла успешно, Jenkins развернет исходный код на тестовом сервере и уведомит группу развертывания. Если сборка не удалась, Дженкинс сообщит об ошибках команде разработчиков.
Поскольку код был собран сразу, некоторым разработчикам придется подождать, пока другие разработчики закончат кодирование, чтобы проверить свою сборку. Код создается сразу после любого коммита разработчика.
Выявить, обнаружить и исправить ошибки для нескольких коммитов - непростая задача. Поскольку код создается после каждой фиксации одним разработчиком, легко определить, чей код привел к сбою сборки.
Сборка кода и процесс тестирования полностью выполняются вручную, поэтому есть много шансов на сбой. Автоматизированный процесс сборки и тестирования, сокращающий время и количество дефектов.
Код развертывается после того, как все ошибки будут исправлены и протестированы. Код развертывается после каждой успешной сборки и тестирования.
Цикл разработки медленный Цикл разработки быстрый. Новые функции становятся более доступными для пользователей. Увеличивает прибыль.

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

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

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

Плагины Jenkins

По умолчанию Jenkins имеет ограниченный набор функций. Если вы хотите интегрировать установку Jenkins с инструментами управления версиями, такими как Git, вам необходимо установить плагины, связанные с Git. Фактически, для интеграции с такими инструментами, как Maven, Amazon EC2, вам необходимо установить соответствующие плагины в свой Jenkins.

Интеграция плагинов в Jenkins

Преимущества использования Jenkins

  • Дженкинс управляется очень открытым сообществом. Каждый месяц они проводят публичные встречи и принимают участие в разработке проекта Jenkins.
  • На данный момент закрыто около 280 билетов, и проект публикует стабильный релиз каждые три месяца.
  • По мере развития технологий растет и Дженкинс. На данный момент в базе данных Jenkins опубликовано около 320 плагинов. С плагинами Jenkins становится еще более мощным и многофункциональным.
  • Jenkins также поддерживает облачную архитектуру, поэтому вы можете развернуть Jenkins на облачных платформах.
  • Причина, по которой Jenkins стал популярным, заключается в том, что он был создан разработчиком для разработчиков.

Недостатки использования Jenkins

Хотя Jenkins - очень мощный инструмент, у него есть свои недостатки.

  • Его интерфейс устарел и неудобен для пользователя по сравнению с текущими тенденциями пользовательского интерфейса.
  • Хотя Jenkins любим многими разработчиками, поддерживать его не так просто, потому что Jenkins работает на сервере и требует определенных навыков администратора сервера для отслеживания его активности.
  • Одна из причин, по которой многие люди не внедряют Jenkins, связана с трудностями при установке и настройке Jenkins.
  • Непрерывная интеграция регулярно прерывается из-за небольших изменений настроек. Непрерывная интеграция будет приостановлена ​​и, следовательно, требует внимания разработчика.

Вывод:

  • При непрерывной интеграции после фиксации кода программное обеспечение создается и тестируется немедленно.
  • Jenkins - это сервер непрерывной интеграции с открытым исходным кодом, способный организовать цепочку действий.
  • До Дженкинса, когда все разработчики выполняли назначенные им задачи кодирования, они обычно фиксировали свой код одновременно. Позже Build тестируется и развертывается.
  • После Дженкинса код создается и тестируется, как только разработчик фиксирует код. Дженкин будет строить и тестировать код много раз в течение дня.
  • По умолчанию Jenkins имеет ограниченный набор функций. Если вы хотите интегрировать установку Jenkins с инструментами управления версиями, такими как Git, вам необходимо установить плагины, связанные с Git.
  • Самым большим плюсом Jenkins является то, что им управляет сообщество, которое проводит публичные встречи и принимает участие в разработке проектов Jenkins.
  • Самый большой недостаток Jenkin заключается в том, что его интерфейс устарел и не удобен для пользователя по сравнению с текущими тенденциями пользовательского интерфейса.