Какво е JenkinsЗащо да използваме инструмента за непрекъсната интеграция (CI)?
⚡ Умно обобщение
Jenkins е сървър за автоматизация с отворен код, който изгражда и тества код всеки път, когато разработчик се ангажира, превръщайки непрекъснатата интеграция от нощна задача в процес, който работи непрекъснато през целия работен ден.
Какво е Jenkins?
Jenkins е сървър за непрекъсната интеграция с отворен код, написан на Java за организиране на верига от действия за постигане на процеса на непрекъсната интеграция по автоматизиран начин. Jenkins поддържа пълния жизнен цикъл на разработка на софтуер - от изграждането, тестването, документирането на софтуера, внедряването и други етапи от жизнения цикъл на разработка на софтуер.
Jenkins е широко използвано приложение по целия свят, със стотици хиляди инсталации и нарастващ с всеки изминал ден. Чрез използването Jenkins, софтуерните компании могат да ускорят процеса си на разработване на софтуер, тъй като Jenkins може да автоматизира изграждането и тестването с бърза скорост.
Това е сървърно приложение и изисква уеб сървър като Apache Tomcat. Причината... Jenkins софтуерът стана толкова популярен, е наблюдението на повтарящи се задачи, които възникват по време на разработването на проект. Например, ако вашият екип разработваping проект, Jenkins ще тества непрекъснато изграждането на вашите проекти и ще ви показва грешките в ранните етапи на вашето развитие.
Забележка: разгръщане на ВОЙНАТА в Apache Tomcat все още работи, но текущите версии доставят вграден контейнер за сървлети, така че Jenkins обикновено работи самостоятелно. Линията 2.555.x LTS изисква Java 21.
Какво е непрекъсната интеграция?
Непрекъснато интегриране е процес на многократно интегриране на промени в кода от множество разработчици в един проект. Софтуерът се тества веднага след подаване на код. С всеки ангажимент на код, кодът се създава и тества. Ако тестът е преминат, компилацията се тества за внедряване. Ако внедряването е успешно, кодът се прехвърля към производство.
Това ангажиране, изграждане, тестване и внедряване е непрекъснат процес и оттам идва и името непрекъсната интеграция/разгръщане.
Как действа Jenkins работа?
Jenkins е сървърно приложение и изисква уеб сървър като Apache Tomcat, за да работи на различни платформи като Windows, Linux, macOS, Unix и др. За използване Jenkins, трябва да създадете тръбопроводи, които представляват поредица от стъпки, които Jenkins сървърът ще приеме. Jenkins Канвейерът за непрекъсната интеграция е мощен инструмент, който се състои от набор от инструменти, предназначени за хостване, наблюдение, компилиране и тестване на код или промени в кода, като например:
- Сървър за непрекъсната интеграция (Jenkins, Bamboo, CruiseControl, TeamCity, и други)
- Инструмент за контрол на изходния код (напр. CVS, SVN, GIT, Mercurial, Perforce, ClearCase и други)
- Инструмент за изграждане (Make, ANT, Maven, Ivy, Gradle, и други)
- Рамка за автоматизирано тестване (Selenium, Appium, TestComplete, UFT, и други)
В текущите версии тези стъпки се намират в Jenkinsфайлът е записан до кода. Jenkins Контролерът чете този файл и предава всеки етап на агент, който е машината, която всъщност изпълнява работата.
Jenkins История
- Косуке Кавагучи, а Java разработчик, работещ в SUN Microsystems, беше уморен от изграждането на кода и поправянето на грешки многократно. През 2004 г. създаде сървър за автоматизация, наречен Hudson, който автоматизира задачата за изграждане и тестване.
- В 2011, Oracle които притежаваха Sun Microsystems, имаха спор с общността с отворен код в Hudson, така че те направиха форк на Hudson и го преименуваха на Jenkins.
- И Хъдсън, и Jenkins продължи да действа независимо. Но за кратък период от време, Jenkins придоби много проекти и сътрудници, докато Хъдсън остана само с 32 проекта. С течение на времето, Jenkins стана по-популярен и Хъдсън вече не се поддържа.
Защо да използвате непрекъсната интеграция с Jenkins?
Някои хора може да си помислят, че старомодният начин на развитиеping Софтуерът е по-добрият начин. Нека разберем предимствата на CI с Jenkins със следния пример
Нека си представим, че има около 10 разработчици, които работят върху споделено хранилище. Някои разработчици завършват задачата си за 25 дни, докато други отнемат 30 дни.
| Преди Jenkins | След Jenkins |
|---|---|
|
След като всички разработчици изпълниха възложените им задачи за кодиране, те използваха да ангажират своя код едновременно. Later, Build е тестван и внедрен. Code commit изграден, а тестовият цикъл беше много рядък и еднократно изграждане беше направено след много дни. |
Кодът се изгражда и тества веднага щом разработчикът го зареди (commit). Jenkins ще изгражда и тества код много пъти през деня Ако изграждането е успешно, тогава Jenkins ще разположи изходния код на тестовия сървър и ще уведоми екипа по внедряването. Ако изграждането се провали, тогава Jenkins ще уведоми екипа от разработчици за грешките. |
| Тъй като кодът е изграден наведнъж, някои разработчици ще трябва да изчакат, докато други разработчици завършат кодирането, за да проверят своята компилация | Кодът се изгражда веднага след всяко от ангажиментите на Разработчика. |
| Не е лесна задача да се изолират, откриват и коригират грешки за множество ангажименти. | Тъй като кодът се изгражда след всеки commit на отделен разработчик, е лесно да се открие чий код е причинил неуспеха при изграждането. |
| Code изграждане и тестов процес са изцяло ръчни, така че има много шансове за повреда. | Автоматизиран процес на изграждане и тестване, спестяващ време и намаляващ дефектите. |
| Кодът се внедрява, след като всички грешки са коригирани и тествани. | Кодът се внедрява след всяко успешно изграждане и тестване. |
| Цикълът на развитие е бавен | Цикълът на развитие е бърз. Новите функции са по-лесно достъпни за потребителите. Увеличава печалбите. |
Казус от реалния свят за непрекъсната интеграция
Сигурен съм, че всички знаете за стария телефон Nokia. Nokia прилагаше процедура, наречена nightly build. След множество ангажименти от различни разработчици през деня, софтуерът се изграждаше всяка вечер. Тъй като софтуерът е създаден само веднъж на ден, е огромна болка да се изолират, идентифицират и поправят грешките в голяма кодова база.
Later, те възприеха подхода за непрекъсната интеграция, показан по-долу. Софтуерът беше изграден и тестван веднага щом разработчикът потвърди кода. Ако бъде открита грешка, съответният разработчик може бързо да я отстрани.
Jenkins Plugins
По подразбиране Jenkins предлага се с ограничен набор от функции. Ако искате да интегрирате вашия Jenkins инсталация с инструменти за контрол на версиите като Git, тогава трябва да инсталирате плъгини, свързани с Git. Всъщност, за интеграция с инструменти като Maven, Amazon EC2, трябва да инсталирате съответните плъгини във вашия Jenkins, както е показано в мениджъра на плъгини по-долу.
Предимства на използването Jenkins
- Jenkins се управлява от общността, която е много отворена. Всеки месец те провеждат публични срещи и приемат мнения от обществеността за развитието на Jenkins проект.
- Проектът поддържа предвидим ритъм на пускане на пазара: нова базова линия за дългосрочна поддръжка се избира на всеки дванадесет седмици и след това получава планирани пускания на корекции.
- С развитието на технологиите, така се развива и JenkinsБазата данни с плъгини вече съдържа над две хиляди плъгина. С плъгините, Jenkins става още по-мощен и богат на функции.
- Jenkins Инструментът също така поддържа облачна архитектура, така че можете да внедрите Jenkins в облачно-базирани платформи.
- Причината поради която Jenkins стана популярен, защото е създаден от разработчик за разработчици.
Недостатъци при използването Jenkins
Въпреки че Jenkins е много мощен инструмент, но има и своите недостатъци.
- Интерфейсът му е остарял и не е лесен за ползване в сравнение с настоящите тенденции в потребителския интерфейс, въпреки че последните издания модернизираха голяма част от дизайна на екрана.
- Въпреки че Jenkins е обичан от много разработчици, не е толкова лесно да се поддържа, защото Jenkins работи на сървър и изисква известни умения като сървърен администратор, за да наблюдава активността му.
- Една от причините, поради които много хора не прилагат Jenkins поради трудността му при инсталиране и конфигуриране Jenkins.
- Непрекъснатите интеграции редовно се прекъсват поради някои малки промени в настройките. Непрекъснатата интеграция ще бъде поставена на пауза и следователно изисква известно внимание от страна на разработчиците.
- Конфликтите на зависимостите на плъгините се появяват, когато много плъгини се обновяват по различно време, така че актуализациите на плъгините се нуждаят от собствен прозорец за поддръжка.
Ако тези компромиси са важни за вашия екип, сравнете най-доброто Jenkins Алтернативни инструменти и по-широкият списък с най-добрите инструменти за непрекъсната интеграция преди да се ангажирате със самостоятелно хостван сървър.


