Какво е Дженкинс? Защо да използвате инструмента за непрекъсната интеграция (CI)?

Какво е Дженкинс?

Дженкинс е сървър за непрекъсната интеграция с отворен код, написан на Java за организиране на верига от действия за постигане на процеса на непрекъсната интеграция по автоматизиран начин. Jenkins поддържа пълния жизнен цикъл на разработка на софтуера от изграждане, тестване, документиране на софтуера, внедряване и други етапи от жизнения цикъл на разработка на софтуер.

Jenkins е широко използвано приложение по целия свят, което има около 300 XNUMX инсталации и расте с всеки изминал ден. Използвайки Jenkins, софтуерните компании могат да ускорят процеса на разработка на софтуер, тъй като Jenkins може да автоматизира изграждането и тестването с бързи темпове.

Това е сървърно приложение и изисква уеб сървър като Apache Tomcat. Причината, поради която софтуерът Jenkins стана толкова популярен, е наблюдението на повтарящи се задачи, които възникват по време на разработването на проект. Например, ако вашият екип разработва проект, Дженкинс непрекъснато ще тества компилациите на вашия проект и ще ви показва грешките в ранните етапи на вашето развитие.

Какво е непрекъсната интеграция?

Непрекъснато интегриране е процес на многократно интегриране на промени в кода от множество разработчици в един проект. Софтуерът се тества веднага след подаване на код. С всеки ангажимент на код, кодът се създава и тества. Ако тестът е преминат, компилацията се тества за внедряване. Ако внедряването е успешно, кодът се прехвърля към производство.

Това ангажиране, изграждане, тестване и внедряване е непрекъснат процес и оттам идва и името непрекъсната интеграция/разгръщане.

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

Jenkins е сървърно базирано приложение и изисква уеб сървър като Apache Tomcat, за да работи на различни платформи като Windows, Linux, macOS, Unix и т.н. За да използвате Jenkins, трябва да създадете тръбопроводи, които са поредица от стъпки, които сървърът на Jenkins ще предприеме. Jenkins Continuous Integration Pipeline е мощен инструмент, който се състои от набор от инструменти, предназначени да домакин, монитор, компилирам намлява тест код или промени в кода, като:

  • Сървър за непрекъсната интеграция (Дженкинс, 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?

Някои хора може да си помислят, че старомодният начин за разработване на софтуера е по-добрият начин. Нека разберем предимствата на CI с Jenkins със следния пример

Нека си представим, че има около 10 разработчици, които работят върху a споделено хранилище. Някои програмисти изпълняват задачата си за 25 дни, докато на други са им необходими 30 дни.

Преди Дженкинс След Дженкинс
След като всички разработчици изпълниха възложените им задачи за кодиране, те използваха да ангажират своя код едновременно. Later, Build е тестван и внедрен.

Изграден е ангажимент на кода и цикълът на тестване беше много рядък и едно компилиране беше извършено след много дни.

Кодът се изгражда и тества веднага след като разработчикът ангажира код. Дженкин ще създава и тества код много пъти през деня

Ако изграждането е успешно, Дженкинс ще разположи източника в тестовия сървър и ще уведоми екипа за внедряване.

Ако изграждането е неуспешно, Дженкинс ще уведоми за грешките екипа на разработчиците.

Тъй като кодът е изграден наведнъж, някои разработчици ще трябва да изчакат, докато други разработчици завършат кодирането, за да проверят своята компилация Кодът се изгражда веднага след всяко от ангажиментите на Разработчика.
Не е лесна задача да се изолират, откриват и коригират грешки за множество ангажименти. Тъй като кодът се изгражда след всеки комит на един разработчик, лесно е да се открие чий код е причинил неуспеха на изградения
Изграждане на код и тестов процес са изцяло ръчни, така че има много шансове за повреда. Автоматизиран процес на изграждане и тестване, спестяващ време и намаляващ дефектите.
Кодът се внедрява, след като всички грешки са коригирани и тествани. Кодът се внедрява след всяко успешно изграждане и тестване.
Цикълът на развитие е бавен Цикълът на развитие е бърз. Новите функции са по-лесно достъпни за потребителите. Увеличава печалбите.

Казус от реалния свят за непрекъсната интеграция

Сигурен съм, че всички знаете за стария телефон Nokia. Nokia прилагаше процедура, наречена nightly build. След множество ангажименти от различни разработчици през деня, софтуерът се изграждаше всяка вечер. Тъй като софтуерът е създаден само веднъж на ден, е огромна болка да се изолират, идентифицират и поправят грешките в голяма кодова база.

Later, те възприеха подхода за непрекъсната интеграция. Софтуерът е изграден и тестван веднага щом разработчикът е ангажирал код. Ако бъде открита грешка, съответният разработчик може бързо да коригира дефекта.

Казус от реалния свят за непрекъсната интеграция

Дженкинс плъгини

По подразбиране Jenkins идва с ограничен набор от функции. Ако искате да интегрирате вашата инсталация на Jenkins с инструменти за контрол на версиите като Git, тогава трябва да инсталирате добавки, свързани с Git. Всъщност, за интеграция с инструменти като Maven, Amazon EC2, трябва да инсталирате съответните плъгини във вашия Jenkins.

Дженкинс плъгини
Интегриране на плъгини в Jenkins

Предимства от използването на Jenkins

  • Дженкинс се управлява от общността, която е много отворена. Всеки месец те провеждат публични срещи и вземат принос от обществеността за развитието на проекта Дженкинс.
  • До момента са затворени около 280 билета и проектът публикува стабилна версия на всеки три месеца.
  • С развитието на технологиите расте и Дженкинс. Досега Дженкинс има около 320 плъгина, публикувани в своята база данни с плъгини. С плъгини Jenkins става още по-мощен и богат на функции.
  • Инструментът Jenkins също поддържа облачно базирана архитектура, така че можете да разположите Jenkins в облачно базирани платформи.
  • Причината Jenkins да стане популярен е, че е създаден от разработчик за разработчици.

Недостатъци на използването на Jenkins

Въпреки че Дженкинс е много мощен инструмент, той има своите недостатъци.

  • Интерфейсът му е остарял и не е удобен за потребителя в сравнение с текущите тенденции в потребителския интерфейс.
  • Въпреки че Jenkins е обичан от много разработчици, не е толкова лесно да се поддържа, защото Jenkins работи на сървър и изисква някои умения като сървърен администратор, за да наблюдава дейността му.
  • Една от причините, поради които много хора не прилагат Jenkins, се дължи на трудността му при инсталиране и конфигуриране на Jenkins.
  • Непрекъснатите интеграции редовно се прекъсват поради някои малки промени в настройките. Непрекъснатата интеграция ще бъде поставена на пауза и следователно изисква известно внимание от страна на разработчиците.

Заключение

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