Что такое Дженкинс?
Jenkins — это сервер Continuous Integration с открытым исходным кодом, способный организовать цепочку действий, которые помогают автоматизировать процесс непрерывной интеграции (и не только).
Дженкинс свободен и полностью написан на Java. Jenkins — это широко используемое приложение по всему миру, которое имеет около 300 тыс. Установок и растет с каждым днем.
Это серверное приложение, для которого требуется веб-сервер, такой как Apache Tomcat. Причина, по которой Дженкинс стал настолько популярным, заключается в том, что он отслеживает повторяющиеся задачи, возникающие при разработке проекта. Например, если ваша команда разрабатывает проект, 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 и другие)
История Дженкин
- 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
- Дженкинс управляется сообществом, которое очень открыто. Каждый месяц они проводят публичные встречи и принимают участие общественности для развития проекта Дженкинс.
- На данный момент закрыто около 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 является то, что его интерфейс устарел и не удобен для пользователя по сравнению с текущими тенденциями пользовательского интерфейса.