Конвеєр як код, пояснений найпростішим можливим способом

У розробці програмного забезпечення конвеєри 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, перейдіть до веб-інтерфейсу користувача у своєму браузері. Можливо, вам доведеться ввійти. Далі ви потрапите на головну сторінку інформаційної панелі. Ви збираєтеся почати звідси і створити свій конвеєр.

  • На лівій панелі ви знайдете кнопку «Новий елемент».
  • Натисніть на нього, щоб перейти до наступної сторінки.
  • Коли ви перейдете на нову сторінку, ви побачите підказку створити елемент.
  • Введіть назву в поле Введіть назву елемента. Це обов’язково.
  • Майте на увазі, що каталог буде створено з такою ж назвою. Тому краще уникати пробілів, оскільки це може призвести до небажаних побічних ефектів.
  • Після цього виберіть параметр Pipeline і натисніть кнопку OK у нижній частині екрана.
  • Відкриється вікно конфігурації.
  • Клацніть опцію «Конвеєр» на лівій панелі або прокрутіть униз до розділу «Конвеєр».
  • Почнемо з простого конвеєра, який можна налаштувати безпосередньо з інтерфейсу користувача.

    Створіть конвеєр як код безпосередньо в 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 і збережете його тут.

  • Іди до свого GitHub профіль. Ви можете створити безкоштовний обліковий запис, якщо у вас його немає.
  • Створіть нове сховище. Назвіть це customJenkins.
  • Переконайтеся, що на вашій локальній машині встановлено Git.
  • Створіть каталог у вибраному вами місці.
  • Перейдіть у каталог і відкрийте термінал.
  • Ініціалізуйте порожнє сховище Git за допомогою команди git init.
  • Тепер створіть новий файл, який буде вашим Jenkinsfile. Давайте назвемо його customJenkinsfile.
  • Напишіть свій конвеєр як код у цьому файлі. Як приклад скористайтеся згаданим нижче:
  • 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...'
                }
            }
        }
    }
  • Додайте щойно створений файл до Git за допомогою команди git add –all у вашому терміналі.
  • Закріпіть файл у Git за допомогою команди git commit -m «Створено власний файл jenkins».
  • Пов’яжіть свій локальний репозиторій Git із віддаленим сховищем за допомогою git remote add origin [email protected]:<ваше ім'я користувача>/customJenkins.git.
  • Потім завантажте файл на віддалений (GitHub) за допомогою git push –set-upstream origin master.
  • Тепер ви створили віддалене сховище на GitHub, яке містить спеціальний файл Jenkins. Давайте налаштуємо Jenkins для використання цього.

    Налаштуйте Jenkins на використання Jenkinsfile з GitHub

  • Відкрийте інформаційну панель Jenkins.
  • Створіть новий конвеєр або клацніть «Налаштувати» на лівій панелі в існуючому конвеєрі.
  • Прокрутіть униз до розділу Трубопровід.
  • У розкривному меню «Визначення» виберіть параметр «Сценарій конвеєра з SCM».
  • Виберіть Git у опції SCM.
  • Надайте посилання на репозиторій GitHub у URL-адресі сховища в розділі «Сховища».
  • Переконайтеся, що специфікатор гілки встановлено як */master у розділі «Гілки для створення».
  • Прокрутіть униз до пункту Шлях сценарію. Тут укажіть назву файлу Jenkins як customJenkinsfile. Натисніть Зберегти.
  • Після цього запустіть свій конвеєр. Дженкінс спочатку отримає ваш код із віддаленого сховища. Потім він створить конвеєр за допомогою спеціального 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.