Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Jenkins: особливості архітектури та використання

Автоматизація є ключовим елементом для пришвидшення циклів доставки продукту та покращення якості коду. Серед інструментів автоматизації багато спеціалістів надають перевагу Jenkins. Розберімо, що таке Jenkins, як його компоненти працюють разом і навіщо його використовувати DevOps-інженеру.

Що таке Jenkins

Jenkins — один з ключових інструментів CI/CD, який дозволяє автоматизувати різні етапи життєвого циклу розробки. Він працює як центральний хаб і керує такими завданнями, як створення, тестування та розгортання програми. Цей безоплатний open-source інструмент може інтегруватися з багатьма інструментами DevOps і має понад тисячу плагінів для розширення можливостей та кастомізації.

Jenkins має такі переваги:

Для чого айтівці використовують Jenkins

Популярність інструмента Jenkins пов’язана з тим, що він здатен відстежувати та контролювати повторювані дії, які необхідні протягом розробки проєкту. Наприклад, Jenkins може постійно тестувати білди та попереджати про будь-які помилки на ранній стадії. Основні варіанти використання Jenkins — це:

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

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

Замість цього у Jenkins можна прописати всі кроки, необхідні для завершення процесу. Це дія, яку необхідно зробити лише один раз, отже вона займе менше часу, і ти зможеш завершити інсталяцію або оновлення без помилок. 

Перш ніж зарелізити зміни до ПЗ, вони повинні пройти через низку складних процесів. Пайплайн Jenkins забезпечує послідовність та зв’язок багатьох подій і завдань для забезпечення безперервної інтеграції. Цей інструмент має набір плагінів, які спрощують інтеграцію та впровадження CI/CD-конвеєрів. Головною особливістю пайплайну Jenkins є те, що кожне завдання або робота залежить від іншого завдання.

Коли Jenkins виконує певні завдання, він виводить дані з консолі з параметрів stdout і stderr. Це робить пошук та усунення ймовірних несправностей за допомогою Jenkins надзвичайно простим та швидким.

Архітектура Jenkins

Jenkins працює наступним чином.

Крок 1. Розробники вносять зміни у вихідний код, який знаходиться в репозиторії, далі сервер Jenkins CI перевіряє репозиторій через регулярні проміжки часу та витягує будь-який новий доступний код. 

Крок 2. Сервер збирає код у файл, що буде виконуватися. У разі виникнення проблем розробникам надсилається сповіщення.

Крок 3. Jenkins розгортає білд на тестовому сервері. Якщо тест неуспішний, розробники отримують сповіщення.

Крок 4. Якщо у коді немає помилок, перевірена програма розгортається на продакшені.

Файли можуть містити різний код і бути дуже великими, тому з’являється потреба у кількох білдах. Однак один сервер Jenkins не може обробляти декілька файлів і білдів одночасно, тому для таких проєктів необхідна розподілена архітектура Jenkins.

Ключові компоненти Jenkins — це Master Node та Agent Nodes/Clouds.

Загальна архітектура Jenkins виглядає так:

Розгляньмо ці компоненти окремо.

Jenkins Master Node

Сервер Jenkins (головний вузол) містить усі ключові конфігурації. Майстер-нода Jenkins схожа на керівний сервер, який організовує весь робочий процес, визначений у конвеєрах, як планування завдань, моніторинг завдань тощо.

Ключові компоненти Jenkins Master Node:

Jenkins Agent

Агенти Jenkins — це робочі вузли, які фактично виконують всі кроки, вказані у завданні. Під час створення завдання для Jenkins, необхідно призначити йому агента. Кожен агент має певну мітку, що є унікальним ідентифікатором.

Коли ти запускаєш завдання Jenkins з майстер-ноди, фактичне виконання відбувається на ноді агента, який налаштований у завданні. Можна мати будь-яку кількість агентів Jenkins, приєднаних до головного агента з комбінацією серверів Windows, Linux і навіть контейнерів, що слугують агентами білда.

Є 2 типи Jenkins-агентів:

Післяслово

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

Jenkins — один з кращих CI/CD-інструментів, отже він є необхідним у роботі DevOps-інженера. Якщо ти тільки плануєш освоїти цю професію, рекомендуємо пройти курс «DevOps з нуля». Протягом 9 місяців ти не тільки засвоїш теорію, що необхідна для роботи, але й отримаєш практичний досвід використання багатьох DevOps-інструментів.

Exit mobile version