Що таке 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 обирають компанії зі складними процесами і вимогою тримати все на своїх серверах. Принципи скрізь однакові, відрізняється синтаксис.
Що робити, якщо збірка падає часто?
Спочатку розбирають причину: нестабільні тести, залежність від зовнішніх сервісів, різне оточення. Падаючий конвеєр, який усі звикли ігнорувати, шкідливіший за його відсутність — команда перестає довіряти результату і починає викочувати зміни повз процес.