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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

[ред. | ред. код]

Організація

[ред. | ред. код]

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

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

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

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

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

[ред. | ред. код]

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

Переваги

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

Недоліки

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

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

[ред. | ред. код]

[1][2]

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

  • CIsimple
  • Hosted-CI

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

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. The Ultimate List of CI Tools
  2. (рос.)Непрерывная интеграция для PHP, используя TeamCity, Travis CI и Scrutinizer, 2015

Посилання

[ред. | ред. код]