Prog Academy
RU UA
DevOps та хмари

Що таке CI/CD?

CI/CD — автоматичний конвеєр, через який проходить кожна зміна коду: збірка, запуск тестів і доставка готової версії на сервери. Розробник надсилає код у репозиторій, а все інше відбувається без ручних дій.

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

Типовий пайплайн: отримати код → зібрати → прогнати тести → перевірити якість і безпеку → зібрати контейнер → розгорнути на тестовому оточенні → після перевірки викотити в продакшен. Налаштовують усе це в GitHub Actions, GitLab CI, Jenkins та подібних системах.

CI і CD — різні речі

CI (Continuous Integration) — безперервна інтеграція: код усіх розробників регулярно вливається у спільну гілку, і кожна така порція автоматично збирається й тестується. CD — це або continuous delivery (версія завжди готова до випуску, але кнопку натискає людина), або continuous deployment (викочування відбувається автоматично). CI відповідає за якість коду, CD — за його доставку.

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

DevOps

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

Git

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

Docker

Docker — інструмент, який пакує застосунок разом з усім оточенням — кодом, залежностями, налаштуваннями — у контейнер. Такий контейнер запускається однаково на компʼютері розробника, на тестовому стенді та на сервері.

Test Automation

Автоматизація тестування — написання програм, які самі виконують перевірки й порівнюють результат з очікуваним. Такі тести запускають за кожної зміни коду, щоб швидко помічати поломки у вже працюючій функціональності.

Infrastructure as Code

Infrastructure as Code — підхід, за якого сервери, мережі, бази та права доступу описуються в конфігураційних файлах і створюються автоматично за цим описом, замість ручного налаштування через вебінтерфейс хмари.