У розробці програмного забезпечення конвеєри CI/CD або Continuous Integration/Continuous Delivery допомагають створювати та розгортати ваш код у різних середовищах за допомогою автоматизованого процесу.
Однак створення та підтримка цього трубопроводу саме по собі може стати складним завданням. Введіть конвеєр як код – підхід, за якого ви створюєте весь конвеєр CI/CD у форматі коду. Замість того, щоб покладатися на веб-інтерфейси користувача та інструменти перетягування, ви використовуєте конфігураційні файли, щоб визначити, як ваш код програми буде створено, перевірено та розгорнуто.
Але перш ніж переходити до деталей Pipeline як коду та того, як ви можете створити свій, давайте спочатку зрозуміємо, що таке конвеєр.
Що таке конвеєр у розробці програмного забезпечення?
Конвеєр у розробці програмного забезпечення — це серія автоматизованих кроків, які вносять ваші останні зміни в код, запускають у ньому певні процеси та розгортають його у вибраному середовищі. Давайте зрозуміємо це краще на прикладі.
Уявіть, що у вас є три мікросервіси, і ви додали нові функції до одного з них. Тепер ви хочете запустити модульні тести на рівні коду. Коли вони пройдуть, ви також захочете перевірити наявність проблем із форматуванням коду. Далі ви хочете створити свій код. Після цього ви хочете розгорнути його в двох різних середовищах з кількома машинами в кожному середовищі. Нарешті, ви захочете запустити інтеграційні тести, щоб переконатися, що ваші зміни синхронізовані з іншими службами.
Ви можете виконати всі описані вище дії вручну. Але це займе у вас багато часу, і ви будете схильні до помилок. Отже, чи є спосіб їх автоматизувати? Так! Ви можете створити конвеєр і визначити всі кроки. Після цього щоразу, коли ви вносите зміни у свій код, ви можете запускати конвеєр і не хвилюватися про будь-які дії вручну.
Переваги Pipeline як коду
Якщо ви використовуєте такі інструменти, як перетягування, вам стає важко відстежувати зміни, підтримувати стандартизацію або сприяти співпраці. Конвеєр як код — це кращий спосіб визначити конвеєр розробки програмного забезпечення.
Це допомагає підтримувати послідовність. Сприяючи автоматизації, ви отримуєте повторюваність і використовуєте той самий конвеєр для інших систем. І так само, як код програми, код, який використовується для визначення вашого конвеєра, сприяє співпраці.
#1. Послідовність
Визначення в текстовому форматі гарантує, що нічого не станеться неправильно. Застосовуючи стандартний робочий процес для всіх збірок і розгортань ваших програм, ви отримуєте послідовність і зменшуєте ризик неочікуваних проблем.
А завдяки послідовності ви також отримуєте перевірки відповідності та безпеку. Забезпечення узгодженого конвеєра дає змогу визначати сканування безпеки та перевірки вразливостей, щоб нічого не пройшло повз вас.
#2. Повторюваність
Створіть свій конвеєр і налаштуйте автоматизацію. Окрім узгодженості, ваш автоматизований конвеєр гарантує, що кожен код програми проходить однакові етапи та перевірки.
Ваш код проходитиме через той самий процес збірки та розгортання кожного разу, коли ви запускатимете конвеєр. Ви підтримуєте повторюваність під час усіх ваших прогонів.
#3. Співпраця
Оскільки код є засобом, за допомогою якого ви створюєте свій конвеєр, ви сприяєте співпраці. Кілька людей у вашій команді можуть брати участь у тому самому коді, як ви робите для коду програми.
Конвеєр як код також дозволяє підтримувати контроль версій і дозволяти перевірку коду. Це гарантує дотримання найкращих практик і своєчасне виявлення потенційних проблем.
Тепер давайте поглибимося в те, як ви можете створити власний конвеєр, використовуючи Pipeline як код.
Конвеєр як код у Jenkins
Що стосується систем безперервної інтеграції та безперервного розгортання (CI/CD), Дженкінс є провідним сервером автоматизації з відкритим кодом. За допомогою Jenkins ви можете легко інтегрувати зміни коду, автоматизувати тестування та створення, а також розгортати програмне забезпечення. І ви можете зробити все це надійно та ефективно.
Незалежно від того, чи є ви любителем, який намагається дізнатися більше про конвеєри автоматизації, чи створюєте складні корпоративні системи, Jenkins відповідає всім унікальним вимогам вашого проекту. Його велика кількість плагінів і постійно зростаюча спільнота можуть допомогти вам отримати максимальну віддачу від автоматизації.
У Jenkins конвеєр — це набір різних плагінів, визначених у певному порядку, які створюють вашу систему CI/CD. Будь то прості чи складні випадки використання, ви можете створити свій конвеєр за допомогою коду з Синтаксис конвеєрної доменно-залежної мови (DSL).. DSL побудований поверх Apache Groovy.
Основою Pipeline як коду в Jenkins є Jenkinsfile – текстовий файл, який містить код, що описує всі різні етапи та дії. Давайте дізнаємося, як створити ваш конвеєр як код за допомогою Jenkinsfile.
Як створити свій конвеєр як код?
Після того, як ви встановили та запустили Jenkins, перейдіть до веб-інтерфейсу користувача у своєму браузері. Можливо, вам доведеться ввійти. Далі ви потрапите на головну сторінку інформаційної панелі. Ви збираєтеся почати звідси і створити свій конвеєр.
Почнемо з простого конвеєра, який можна налаштувати безпосередньо з інтерфейсу користувача.
Створіть конвеєр як код безпосередньо в Jenkins
У розділі Pipeline ви готові створити свій перший Pipeline як код.
У розкривному меню «Визначення» виберіть параметр «Сценарій конвеєра». Під нею ви знайдете область сценаріїв, де можна закодувати свій конвеєр. Дженкінс підтримує створений тут сценарій.
Дженкінс дозволяє вибирати між двома стилями кодування або синтаксисом – декларативним синтаксисом і сценарійним синтаксисом. У той час як Declarative простий у використанні та ідеально підходить для простих конвеєрів, Scripted Syntax призначений для досвідчених користувачів і проектування складних потоків.
Використовуючи декларативний синтаксис, створіть 3 прості етапи – складання коду, тестування коду та розгортання коду за допомогою наступного фрагмента коду:
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build...' } } stage('Test Code') { steps { echo 'This is the step to test...' } } stage('Deploy Code') { steps { echo 'This step deploys the code...' } } } }
Ви також можете використовувати скриптовий синтаксис, як показано нижче:
node { stage('Build Code') { echo 'This is the step for build...' } stage('Test Code') { echo 'This is the step to test...' } stage('Deploy Code') { echo 'This step deploys the code...' } }
Натисніть Зберегти. Тепер натисніть кнопку «Створити зараз» на лівій панелі. Це запустить конвеєр, який ви щойно створили.
Після завершення роботи конвеєра ви можете перевірити його в історії збірок. Якщо це ваш перший запуск, клацніть на присутній номер збірки №1. Далі клацніть «Вивід консолі» на лівій панелі. Ви знайдете 3 оператори echo, які є у вашому конвеєрному коді на кожному етапі.
Створення конвеєра як коду за допомогою зовнішнього файлу
Стає складно підтримувати конвеєр безпосередньо в Jenkins, коли він починає ставати складним. У цьому випадку ви хочете створити зовнішній файл і використовувати його.
Перш ніж створити конвеєр Jenkins, вам потрібен зовнішній репозиторій і система контролю версій. Давайте створимо репозиторій Git і віддалено розмістимо його на GitHub. Ви створите свій Jenkinsfile і збережете його тут.
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build defined in custom file...' } } stage('Test Code') { steps { echo 'This is the step to test defined in custom file...' } } stage('Deploy Code') { steps { echo 'This step defined in custom file deploys the code...' } } } }
Тепер ви створили віддалене сховище на GitHub, яке містить спеціальний файл Jenkins. Давайте налаштуємо Jenkins для використання цього.
Налаштуйте Jenkins на використання Jenkinsfile з GitHub
Після цього запустіть свій конвеєр. Дженкінс спочатку отримає ваш код із віддаленого сховища. Потім він створить конвеєр за допомогою спеціального Jenkinsfile і запустить усі етапи.
Тепер ви успішно створили власний конвеєр розробки програмного забезпечення, використовуючи Pipeline як код. Крім того, ви ввімкнули контроль версій у своєму конвеєрному сценарії. Будь-які зміни, які ви вносите в код конвеєра, тепер можна відстежувати з кожним комітом Git. Далі настав час переглянути найкращі практики.
Найкращі практики для написання ефективного конвеєра як коду
Давайте розглянемо найкращі практики, яких слід дотримуватися під час написання конвеєра як коду.
- Тримайте свій конвеєр чистим і уникайте написання надто складних умов.
- Якщо ви виконуєте забагато команд у конвеєрі, розбийте їх на різні етапи.
- Використовуйте зовнішні файли з керуванням версіями для вашого конвеєра як сценарії коду.
- Використовуйте функції мови кодування, як-от Groovy, щоб інтегрувати різні етапи.
- Уникайте викликів Jenkins.getInstance або його засобів доступу, щоб зменшити проблеми безпеки та продуктивності.
- Не перезаписуйте вбудовані команди конвеєра, такі як sh і timeout.
- Створюйте зовнішні інструменти або сценарії для складних завдань із інтенсивним використанням процесора та підключайте їх до конвеєра.
- Використовуйте широкий спектр існуючих плагінів, доступних для Jenkins, щоб вирішити ваш сценарій використання.
- Переконайтеся, що ви включили обробку винятків і помилок, оскільки все може піти не так.
- Не робіть ваш конвеєр як код тісно пов’язаним із великою кількістю бізнес-логіки всередині нього.
- Використовуйте параметризовані аргументи, де це можливо, щоб зробити ваш конвеєр придатним для повторного використання.
Конвеєр як код: простий підхід до складних процесів
Таким чином, Pipeline as Code спрощує автоматизацію вашого конвеєра CI/CD, представляючи весь процес у вигляді коду. Хоча конвеєри CI/CD автоматизують створення, тестування та розгортання змін вашого коду, використання Pipeline як коду робить це ще далі. Це дозволяє вам визначати свій робочий процес у тексті, а не покладатися на графічні інтерфейси.
З Pipeline як кодом ви гарантуєте, що кожен крок у вашому робочому процесі відбувається в правильному порядку. Ви зменшуєте ризик зіткнутися з небажаними проблемами. Крім того, ви отримуєте кілька переваг, зокрема послідовність, повторюваність і сприяння співпраці.
Використовуючи цей посібник, ви тепер знаєте, як створити власні конвеєри за допомогою Jenkins, широко використовуваного інструменту CI/CD. Jenkins пропонує потужну та гнучку платформу для реалізації Pipeline як коду через Jenkinsfile. Дотримуйтеся найкращих практик і створюйте робочі процеси, які відповідають усім вашим сценаріям використання конвеєра.
Якщо ви хочете дізнатися більше про Jenkins, ви можете перевірити, як створити власний конвеєр Jenkins.