CI/CD
CI/CD⚑
Що таке CI та CD⚑
CI - Continuous integration - Неперервна інтеграція Неперервна інтеграція - це практика автоматичної збірки та тестування програми після кожної зміни в коді. Це дозволяє раніше виявляти помилки і конфлікти між різними частинами додатка. Вона полягає в тому, що всі зміни, внесені в код, об'єднуються в центральному репозиторії (ця операція називається "злиття"). Злиття відбувається кілька разів на день, і після кожного злиття в конкретному проекті спрацьовує автоматична збірка та тестування.
Буває, що перед збіркою та тестуванням програму потрібно компілювати (це залежить від мови, на якій вона написана). Сьогодні все частіше виникає необхідність упакувати додаток в контейнер Docker. Потім автоматичні тести перевіряють конкретні модулі коду, роботу користувацького інтерфейсу, продуктивність додатка, надійність API та інше. Всі ці етапи разом зазвичай називають "збіркою".
CI - це своєрідна страхова сітка, яка дозволяє розробникам уникнути багатьох проблем перед здачею проекту.
CD - Continuous delivery - Неперервна доставка Неперервна доставка - це практика автоматичної доставки програми у виробниче середовище після успішного проходження всіх тестів. Ідея полягає в тому, щоб виконувати CI, а також автоматично готувати та вести реліз до продакшену. При цьому бажано досягти наступного: будь-хто, хто має достатні привілеї для розгортання нового релізу, може виконати розгортання в будь-який момент, і це можна зробити за кілька кліків. Це дозволяє скоротити час між розробкою та запуском програми у виробничому середовищі.
Як правило, в процесі неперервної доставки потрібно вручну виконувати як мінімум один етап: схвалити розгортання в продакшен та запустити його. У складних системах з багатьма залежностями конвеєр неперервної доставки може включати додаткові етапи, які виконуються вручну або автоматично.
CD - Continuous deployment - Неперервне розгортання Неперервне розгортання розташовується "на рівень вище" ніж неперервна доставка. В цьому випадку всі зміни, внесені в вихідний код, автоматично розгортаються в продакшен, без явного дозволу від розробника. Зазвичай завдання розробника зводиться до перевірки запиту на включення (pull request) від колеги та повідомлення команди про результати всіх важливих подій.
Неперервне розгортання потребує, щоб в команді існувала відладжена культура моніторингу, всі вміли тримати руку на пульсі та швидко відновлювати систему.
Розробники, які практикують CI і хочуть перейти до неперервного розгортання, спочатку автоматизують розгортання в тестовому середовищі, а розгортання в продакшен продовжують робити вручну - одним кліком.
Links