Что такое Дженкинс?
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.
- На данный момент закрыто около 280 билетов, и проект публикует стабильный релиз каждые три месяца.
- По мере развития технологий растет и Дженкинс. На данный момент в базе данных Jenkins опубликовано около 320 плагинов. С плагинами Jenkins становится еще более мощным и многофункциональным.
- Jenkins также поддерживает облачную архитектуру, поэтому вы можете развернуть Jenkins на облачных платформах.
- Причина, по которой Jenkins стал популярным, заключается в том, что он был создан разработчиком для разработчиков.
Недостатки использования Jenkins
Хотя Jenkins - очень мощный инструмент, у него есть свои недостатки.
- Его интерфейс устарел и неудобен для пользователя по сравнению с текущими тенденциями пользовательского интерфейса.
- Хотя Jenkins любим многими разработчиками, поддерживать его не так просто, потому что Jenkins работает на сервере и требует определенных навыков администратора сервера для отслеживания его активности.
- Одна из причин, по которой многие люди не внедряют Jenkins, связана с трудностями при установке и настройке Jenkins.
- Непрерывная интеграция регулярно прерывается из-за небольших изменений настроек. Непрерывная интеграция будет приостановлена и, следовательно, требует внимания разработчика.
Вывод:
- При непрерывной интеграции после фиксации кода программное обеспечение создается и тестируется немедленно.
- Jenkins - это сервер непрерывной интеграции с открытым исходным кодом, способный организовать цепочку действий.
- До Дженкинса, когда все разработчики выполняли назначенные им задачи кодирования, они обычно фиксировали свой код одновременно. Позже Build тестируется и развертывается.
- После Дженкинса код создается и тестируется, как только разработчик фиксирует код. Дженкин будет строить и тестировать код много раз в течение дня.
- По умолчанию Jenkins имеет ограниченный набор функций. Если вы хотите интегрировать установку Jenkins с инструментами управления версиями, такими как Git, вам необходимо установить плагины, связанные с Git.
- Самым большим плюсом Jenkins является то, что им управляет сообщество, которое проводит публичные встречи и принимает участие в разработке проектов Jenkins.
- Самый большой недостаток Jenkin заключается в том, что его интерфейс устарел и не удобен для пользователя по сравнению с текущими тенденциями пользовательского интерфейса.