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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Технологія розробки програмного забезпечення
Цикл розробки програмного забезпечення
Coding Shots Annual Plan high res-5.jpg
Програміст за роботою
Діяльність та кроки
Вимоги • Специфікація • Архітектура • Дизайн • Реалізація • Тестування • Розгортання (Реліз) • Супровід
Методології • Процес
Гнучка • Чистого приміщення • DSDM • Ітеративна • RAD • RUP • Спіраль • Водоспад • XP • Scrum • Lean • V-Model • FDD • TDD • BDD
Допоміжні дисципліни
Керування конфігурацією • Документування • Якість ПЗ • Управління проектами • Досвід користування
Практики
Неперервна інтеграція • Керована поведінкою розробка
Інструменти
Компілятор • Зневаджувач • Профілювальник • GUI designer • IDE

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

Вимоги до проекту[ред. | ред. код]

Організація[ред. | ред. код]

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

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

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

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

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

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

Переваги[ред. | ред. код]

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

Недоліки[ред. | ред. код]

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

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

[1][2]

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

  • CIsimple
  • Hosted-CI

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

Примітки[ред. | ред. код]

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

Посилання[ред. | ред. код]