Неперервна інтеграція

термін у галузі розробки програмного забезпечення
(Перенаправлено з Безперервна інтеграція)

Неперервна інтеграція (англ. Continuous Integration) — практика розробки програмного забезпечення, яка полягає у виконанні частих автоматизованих складань проєкту для якнайшвидшого виявлення та розв'язання інтеграційних проблем. У звичайному проєкті, де над різними частинами системи розробники працюють незалежно, стадія інтеграції є завершальною. Вона може непередбачувано затримати закінчення робіт. Перехід до неперервної (постійної) інтеграції дозволяє знизити трудомісткість інтеграції та зробити її передбачуванішою завдяки найранішому виявленню та усуненню помилок і суперечностей.

Вимоги до проєкту ред.

Організація ред.

На виділеному сервері організовується служба, до завдань якої входять:

  • Отримання початкового коду з репозиторію;
  • Складання проєкту;
  • Виконання тестів;
  • Розгортання готового проєкту;
  • Відправлення звітів.

Локальне складання може здійснюватися:

  • За зовнішнім запитом,
  • За розкладом,
  • За фактом оновлення репозиторію і за іншими критеріями.

Побудова за розкладом ред.

У разі складання за розкладом, вони, як правило, проводяться кожної ночі в автоматичному режимі - нічні складання (щоб до початку робочого дня були готові результати тестування). Для розрізнення додатково вводиться система нумерації складань — зазвичай, кожне складання нумерується натуральним числом, яке збільшується з кожним новим складанням. Початковий код та інші вихідні дані при взятті їх з репозиторію системи контролю версій позначаються номером складання. Завдяки цьому, точно таке ж складання може бути точно відтворене в майбутньому — досить взяти вихідні дані по потрібній мітці і знову запустити процес. Це дає можливість повторно випускати навіть дуже старі версії програми з невеликими виправленнями.

Переваги ред.

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

Недоліки ред.

  • Витрати на підтримку роботи безперервної інтеграції
  • Потенційна необхідність у виділеному сервері під потреби безперервної інтеграції
  • Негайний ефект від неповного або непрацюючого коду відучує розробників від виконання періодичних резервних включень коду в репозиторій
    • У разі використання системи управління версіями початкового коду з підтримкою розгалуження, ця проблема може вирішуватися створенням окремої «гілки» проєкту (англ. branch) для внесення великих змін (код, розробка якого до працездатного варіанту займе кілька днів, але бажано частіше резервне копіювання в репозиторій). Після закінчення розробки та індивідуального тестування такої гілки, вона може бути об'єднана (англ. merge) з основним кодом або «стовбуром» (англ. trunk) проєкту.

Перелік засобів ред.

[1][2]

Для мобільних розробок (Android, iOS):

  • CIsimple
  • Hosted-CI

+ Appthwack (appthwack.com) / + bitbar (old testdroid)

Див. також ред.

Примітки ред.

Посилання ред.