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

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

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

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

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

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

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

Эта фиксация, сборка, тестирование и развертывание — это непрерывный процесс, отсюда и название «непрерывная интеграция/развертывание».

Как работает Дженкинс?

Jenkins — это серверное приложение, которому требуется веб-сервер, такой как Apache Tomcat, для работы на различных платформах, таких как Windows, Linux, macOS, Unix и т. д. Чтобы использовать Jenkins, вам необходимо создать конвейеры, которые представляют собой серию шагов, которые будет выполнять сервер Jenkins. Jenkins Continuous Integration Pipeline — это мощный инструмент, состоящий из набора инструментов, предназначенных для кашель, монитор, компилировать и тестXNUMX код или изменения кода, например:

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

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

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

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

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

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

До Дженкинса После Дженкинса
После того, как все разработчики завершили порученные им задачи по кодированию, они одновременно фиксировали свой код. Later, Сборка протестирована и развернута.

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

Код создается и тестируется, как только разработчик фиксирует код. Дженкин будет собирать и тестировать код много раз в течение дня.

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

Если сборка завершится неудачей, Дженкинс уведомит об ошибках команду разработчиков.

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

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

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

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

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

Плагины Дженкинса

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

Плагины Дженкинса
Интеграция плагинов в Jenkins

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

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

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

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

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

Заключение

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