Що таке CI/CD?
CI/CD (Continuous Integration / Continuous Deployment або Delivery) — це набір практик та методологій у розробці програмного забезпечення. Вони автоматизують процеси впровадження коду на середовище, а також тестування та розгортання цього коду.
Історія появи CI/CD
Термін «безперервна інтеграція» (CI) вперше використав Грейді Буч ще у 1991 році, а потім зробив це повторно в 1994 році. І хоч термін вже існував, але це був лише перший етап пошуку такого рішення. Він значно відрізнявся від того CI, який ми знаємо зараз.
Але вже у 1997 році Кент Бек чітко сформулював концепцію безперервної інтеграції. Це був практичний підхід, який передбачає регулярне злиття змін в основну гілку коду.
Ідею CI охопив розвиток в наступні роки. У 2000-х роках почали з’являтись перші інструменти, такі як CruiseControl чи Hudson (пізніше Jenkins). Це ще більше привернуло увагу до нової концепції.
Коли Continuous Integration стало стандартом, наступним кроком у розвитку процесу розробки було розгортання оновлень. Принцип безперервного постачання (CD) вперше було описано Девідом Фарлі та Джезом Хамблом у книзі «Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation» у 2010 році. Після цього CI та CD стали двома компонентами одної концепції. Вони продовжують розвиватись та набирати популярність, особливо в часи популяризації DevOps.
Основні принципи CI/CD
- Зниження ризиків у процесі.
- Організація середовища для всіх, хто в ньому працює.
- Швидкий зворотний зв’язок через автоматизацію процесів та мінімізацію посередників.
- Рівномірний розподіл відповідальності між працівниками.
Основні процеси в CI/CD
- Розробники пишуть код або вносять зміни у функціонал.
- Новий код об’єднується з основною кодовою базою (безперервна інтеграція). Це допомагає виявляти помилки на ранніх етапах.
- Виконуються різні типи тестів для перевірки працездатності змін. Якщо тести не пройдені, код повертається на доопрацювання.
- Далі код збирається в контейнер. В цей момент перевіряються залежності, коректність конфігурацій та сумісність з іншими компонентами системи.
- Протестований код автоматично, або з мінімальним втручанням розробників, розгортається у тестовому середовищі. Якщо все стабільно працює, то далі код направляється на продакшн та автоматично оновлюється до останніх версій (безперервне розгортання)
- Після розгортання ведеться спостереження за роботою системи, аналіз логів, продуктивності та виправлення багів.
CI/CD в DevOps
Головна мета DevOps — це допомогти створювати й оновлювати ПЗ. Саме це і пропонує методологія CI/CD. Завдяки автоматизації та безперервним процесам, вона усуває розрив між розробкою (Dev) та операційними частинами (Ops).
Переваги CI/CD
CI/CD забезпечує швидке й стабільне впровадження змін у ПЗ. Автоматизація дозволяє розгортати оновлення без затримок, що скорочує час виведення продукту на ринок.
Постійне тестування зменшує кількість ризиків і допомагає виявляти помилки ще до моменту випуску. Крім того, автоматизація оптимізує витрати й знижує потребу у ручному втручанні. В результаті код виходить у програму передбачуваним, контрольованим та безпечним.
Інструменти CI/CD
Корисні посилання
- 6 причин, чому CI/CD важлива для DevOps
- GitLab CI/CD
- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
- 20 найкращих інструментів для CI/CD
- Як впровадити конвеєри CI/CD на основі Kubernetes
- Курс від ITEDU, де навчають працювати з CI/CD інструментами