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

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

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

Організація

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

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

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

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

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

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

Переваги

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

Недоліки

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

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

  • 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)

[1][2]

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

  • CIsimple
  • Hosted-CI

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

Примітки

Див. також

Посилання


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.