DevOps та хмари
Що таке CI/CD?
CI/CD — це автоматичний конвеєр, через який проходить кожна зміна в коді: збірка, запуск тестів і доставка нової версії на сервери. Розробник відправляє код у репозиторій, а все інше відбувається без ручної роботи.
Мета — знаходити помилки якомога раніше і випускати зміни без стресу. Помилка, яку конвеєр знайшов через п’ять хвилин після коміту, коштує значно дешевше, ніж та сама помилка, яку через тиждень знайшов користувач.
Типовий пайплайн: отримати код, зібрати проєкт, запустити тести, перевірити якість і безпеку, зібрати контейнер, розгорнути на тестовому середовищі і після перевірки випустити в продакшен. Налаштовують це в GitHub Actions, GitLab CI, Jenkins та подібних системах.
Де застосовується
Конвеєр будують навколо репозиторію: після кожної зміни запускаються лінтери, тести та збірка, а після злиття в основну гілку нова версія потрапляє на тестовий стенд або в продакшен. Інструмент зазвичай обирають за тим, де зберігається код: GitHub Actions, GitLab CI, Jenkins, Azure DevOps.
Це стосується не лише DevOps-інженера. QA-автоматизатор додає в конвеєр свої тести, розробник бачить результати перевірок прямо в запиті на злиття, а тимлід встановлює правило: без успішної збірки зміни не потрапляють в основну гілку. Тому знання CI/CD вимагають майже в кожній технічній вакансії.
Приклад
Розробник відправляє виправлення в репозиторій і йде на обід. Поки його немає, конвеєр збирає проєкт, запускає кілька сотень тестів, створює образ контейнера і розгортає його на тестовому сервері. Коли розробник повертається, у чаті вже є посилання на готову версію.
name: build
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
CI і CD — це різні речі
CI (Continuous Integration, безперервна інтеграція) — код усіх розробників регулярно об’єднується в спільну гілку, і кожна зміна автоматично збирається і тестується. CD означає або continuous delivery (версія завжди готова до випуску, але запускає його людина), або continuous deployment (випуск відбувається автоматично). CI відповідає за якість коду, CD — за його доставку.
Часті запитання
Чим CI відрізняється від CD?
CI — це автоматична збірка і перевірка тестами кожної зміни. CD — доставка або розгортання готової версії на тестовий стенд чи в продакшен. CI відповідає на питання «чи працює код?», а CD — «чи дійшла нова версія до користувачів?».
Чи потрібен CI/CD невеликій команді?
Так, і він швидко окупається. Навіть конвеєр із двох кроків — запуск тестів і збірка — економить час і прибирає проблеми на кшталт «а в мене на комп’ютері все працювало». Налаштувати простий пайплайн можна за кілька годин.
Який інструмент CI/CD обрати?
Найпростіше — той, що вбудований у сервіс, де зберігається код: GitHub Actions для GitHub, GitLab CI для GitLab. Jenkins обирають компанії зі складними процесами, яким треба тримати все на власних серверах. Принципи всюди однакові, різниться лише синтаксис.
Що робити, якщо збірка часто падає?
Спершу знайти причину: нестабільні тести, залежність від зовнішніх сервісів, відмінності між середовищами. Конвеєр, який постійно падає і який усі звикли ігнорувати, шкодить більше, ніж його відсутність: команда перестає довіряти результатам і випускає зміни в обхід процесу.
Навчання DevOps в OWU
Опануйте професію DevOps-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс