Що таке Дженкінс? Навіщо використовувати інструмент постійної інтеграції (CI)?

Що таке Дженкінс?

Дженкінс це сервер безперервної інтеграції з відкритим кодом, написаний на Java для організації ланцюга дій для досягнення процесу безперервної інтеграції в автоматизований спосіб. Дженкінс підтримує повний життєвий цикл розробки програмного забезпечення від створення, тестування, документування програмного забезпечення, розгортання та інших етапів життєвого циклу розробки програмного забезпечення.

Jenkins — широко використовувана програма в усьому світі, яка має близько 300 тисяч установок і зростає з кожним днем. Використовуючи Jenkins, компанії-розробники програмного забезпечення можуть прискорити процес розробки програмного забезпечення, оскільки Jenkins може швидко автоматизувати створення та тестування.

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

Що таке безперервна інтеграція?

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

Ця фіксація, збірка, тестування та розгортання є безперервним процесом, і тому назва безперервної інтеграції/розгортання.

Як працює Дженкінс?

Jenkins — це серверна програма, яка потребує веб-сервера, наприклад Apache Tomcat, для роботи на різних платформах, наприклад Windows, Linux macOS, Unix тощо. Щоб використовувати 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?

Деякі люди можуть подумати, що старомодний спосіб розробки програмного забезпечення є кращим. Давайте зрозуміємо переваги CI з Jenkins на наступному прикладі

Уявімо, що близько 10 розробників працюють над a спільний репозиторій. Деякі розробники виконують своє завдання за 25 днів, а іншим потрібно 30 днів.

Перед Дженкінсом Після Дженкінса
Після того, як усі розробники виконали призначені їм завдання кодування, вони використовували для фіксації свого коду всі одночасно. Later, Build протестовано та розгорнуто.

Було створено фіксацію коду, і цикл тестування був дуже рідкісним, і одна збірка була виконана через багато днів.

Код створюється та тестується, щойно розробник зафіксує код. Дженкін збиратиме та тестуватиме код багато разів протягом дня

Якщо збірка пройшла успішно, Дженкінс розгорне джерело на тестовому сервері та повідомить команду розгортання.

Якщо збірка зазнає невдачі, Дженкінс повідомить про помилки команду розробників.

Оскільки код було створено одразу, деяким розробникам довелося чекати, доки інші розробники завершать кодування, щоб перевірити свою збірку Код створюється відразу після будь-якого з комітів розробника.
Ізолювати, виявляти та виправляти помилки для кількох комітів – непросте завдання. Оскільки код створюється після кожного коміту одного розробника, легко визначити, чий код спричинив помилку збірки
Побудова коду і процес тестування повністю вручну, тому є багато шансів на невдачу. Автоматизований процес збірки та тестування, що заощаджує час і зменшує кількість дефектів.
Код розгортається, коли всі помилки виправлено та протестовано. Код розгортається після кожного успішного збирання та тестування.
Цикл розвитку повільний Цикл розвитку швидкий. Нові функції стали більш доступними для користувачів. Збільшує прибуток.

Практичний приклад безперервної інтеграції

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

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

Реальне прикладне дослідження безперервної інтеграції

Плагіни Jenkins

За замовчуванням Jenkins має обмежений набір функцій. Якщо ви хочете інтегрувати свою установку Jenkins із інструментами контролю версій, такими як Git, вам потрібно встановити плагіни, пов’язані з Git. Фактично, для інтеграції з такими інструментами, як Maven, Amazon EC2, вам потрібно встановити відповідні плагіни в Jenkins.

Плагіни Jenkins
Інтеграція плагінів у Jenkins

Переваги використання Jenkins

  • Дженкінсом керує спільнота, яка є дуже відкритою. Щомісяця вони проводять публічні зустрічі та беруть участь у розвитку проекту Jenkins від громадськості.
  • Наразі закрито близько 280 квитків, і проект видає стабільний випуск кожні три місяці.
  • З розвитком технологій зростає і Дженкінс. Наразі Jenkins опублікував близько 320 плагінів у своїй базі даних плагінів. З плагінами Jenkins стає ще потужнішим і багатшим на функції.
  • Інструмент Jenkins також підтримує хмарну архітектуру, тому ви можете розгортати Jenkins на хмарних платформах.
  • Причина, чому Дженкінс став популярним, полягає в тому, що він був створений розробником для розробників.

Недоліки використання Jenkins

Хоча Дженкінс є дуже потужним інструментом, він має свої недоліки.

  • Його інтерфейс застарів і незручний у порівнянні з поточними тенденціями інтерфейсу користувача.
  • Хоча Jenkins люблять багато розробників, підтримувати його не так просто, оскільки Jenkins працює на сервері та вимагає певних навичок адміністратора сервера, щоб контролювати його діяльність.
  • Однією з причин, чому багато людей не впроваджують Jenkins, є складність встановлення та налаштування Jenkins.
  • Безперервна інтеграція регулярно переривається через незначні зміни налаштувань. Постійну інтеграцію буде призупинено, тому розробник потребує певної уваги.

Висновок

  • У безперервній інтеграції після фіксації коду програмне забезпечення створюється та тестується негайно
  • Дженкінс використовується для організації ланцюга дій для безперервної інтеграції в програмному проекті
  • До Дженкінса, коли всі розробники виконували призначені завдання кодування, вони фіксували свій код одночасно. Later, Build протестовано та розгорнуто.
  • Після Дженкінса код створюється та тестується, щойно розробник фіксує код. Дженкін збиратиме та тестуватиме код багато разів протягом дня
  • За замовчуванням Jenkins має обмежений набір функцій. Якщо ви хочете інтегрувати свою установку Jenkins із інструментами контролю версій, такими як Git, вам потрібно встановити плагіни, пов’язані з Git. Також перевірте Найкращі альтернативні інструменти Дженкінса
  • Найбільша перевага Jenkins полягає в тому, що ним керує спільнота, яка проводить публічні зустрічі та отримує внески від громадськості для розробки проектів Jenkins.
  • Найбільшим недоліком Jenkins є те, що його інтерфейс застарів і незручний у порівнянні з поточними тенденціями інтерфейсу користувача. Якщо ви розглядаєте інші варіанти, які можуть запропонувати сучаснішу взаємодію з користувачем, ви можете вивчити деякі з них найкращі інструменти безперервної інтеграції в наявності.