Неперервна інтеграція () — практика розробки програмного забезпечення, яка полягає у виконанні частих автоматизованих складань проєкту для якнайшвидшого виявлення та розв'язання інтеграційних проблем. У звичайному проєкті, де над різними частинами системи розробники працюють незалежно, стадія інтеграції є завершальною. Вона може непередбачувано затримати закінчення робіт. Перехід до неперервної (постійної) інтеграції дозволяє знизити трудомісткість інтеграції та зробити її передбачуванішою завдяки найранішому виявленню та усуненню помилок і суперечностей.
Вимоги до проєкту Початковий код і все, що необхідно для побудови та тестування проєкту, зберігається в репозиторії системи керування версіями; Операції копіювання з репозиторію, складання та тестування всього проєкту автоматизовані і легко викликаються із зовнішньої програми.
Організація На виділеному сервері організовується служба, до завдань якої входять: Отримання початкового коду з репозиторію; Складання проєкту; Виконання тестів; Розгортання готового проєкту; Відправлення звітів.
Локальне складання може здійснюватися: За зовнішнім запитом, За розкладом, За фактом оновлення репозиторію і за іншими критеріями.
Побудова за розкладом У разі складання за розкладом, вони, як правило, проводяться кожної ночі в автоматичному режимі - нічні складання (щоб до початку робочого дня були готові результати тестування). Для розрізнення додатково вводиться система нумерації складань — зазвичай, кожне складання нумерується натуральним числом, яке збільшується з кожним новим складанням. Початковий код та інші вихідні дані при взятті їх з репозиторію системи контролю версій позначаються номером складання. Завдяки цьому, точно таке ж складання може бути точно відтворене в майбутньому — досить взяти вихідні дані по потрібній мітці і знову запустити процес. Це дає можливість повторно випускати навіть дуже старі версії програми з невеликими виправленнями.
Переваги Проблеми інтеграції виявляються і виправляються швидше, що виявляється дешевше Негайний прогін модульних тестів для свіжих змін Постійна наявність поточної стабільної версії разом з продуктами складань — для тестування, демонстрації, тощо Негайний ефект від неповного або непрацюючого коду привчає розробників до роботи в ітеративному режимі з коротшим циклом.
Недоліки Витрати на підтримку роботи безперервної інтеграції Потенційна необхідність у виділеному сервері під потреби безперервної інтеграції Негайний ефект від неповного або непрацюючого коду відучує розробників від виконання періодичних резервних включень коду в репозиторій У разі використання системи управління версіями початкового коду з підтримкою розгалуження, ця проблема може вирішуватися створенням окремої «гілки» проєкту () для внесення великих змін (код, розробка якого до працездатного варіанту займе кілька днів, але бажано частіше резервне копіювання в репозиторій). Після закінчення розробки та індивідуального тестування такої гілки, вона може бути об'єднана () з основним кодом або «стовбуром» () проєкту.
Перелік засобів Bamboo (IT) Buddy (Buddy.Works) BuildBot (IT) Buildkite CircleCI Codefresh (IT) Codeship (IT) Concourse CI CruiseControl (IT) Drone.io CD Go CD (Snap CI tranforms to Go CD) Hydra Jenkins (стара назва: Hudson) Nevercode ProductionMap (N/A) Predix CI (стара назва: Solano CI) TeamCity (IT) Travis CI Scrutinizer (IT) Semaphore (IT) (стара назва: Semaphoreapp) Apache Gump AWS CodeBuild Azure DevOps (стара назва: Visual Studio Team Services) The Ultimate List of CI ToolsНепрерывная интеграция для PHP, используя TeamCity, Travis CI и Scrutinizer, 2015
Для мобільних розробок (Android, iOS): CIsimple Hosted-CI
+ Appthwack (appthwack.com) / + bitbar (old testdroid)
Див. також Екстремальне програмування DevOps
Примітки
Посилання Martin Fowler. Continuous Integration Непрерывная интеграция A Continuous Integration System. Malini Das