Учебники

2) Дженкин Непрерывная интеграция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если сборка не удалась, то Jenkins сообщит об ошибках команде разработчиков.

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

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

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

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

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

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

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

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

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

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

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

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

Вывод:

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