Prog Academy
RU UA
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
Конвеєр GitHub Actions: при кожному пуші проєкт збирається і проганяє тести.

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 обирають компанії зі складними процесами і вимогою тримати все на своїх серверах. Принципи скрізь однакові, відрізняється синтаксис.

Що робити, якщо збірка падає часто?

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

Повʼязані терміни