Неперервна інтеграція Зміст Вимоги до проекту |...


Безперервна інтеграціяЕкстремальне програмування


англ.розробки програмного забезпеченнявиділеному серверінатуральним числомПочатковий код




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




Зміст






  • 1 Вимоги до проекту


  • 2 Організація


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




  • 3 Переваги


  • 4 Недоліки


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


  • 6 Примітки


  • 7 Див. також


  • 8 Посилання





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




  • Початковий код і все, що необхідно для побудови та тестування проекту, зберігається в репозиторії системи керування версіями;

  • Операції копіювання з репозиторію, складання та тестування всього проекту автоматизовані і легко викликаються із зовнішньої програми.



Організація |


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



  • Отримання початкового коду з репозиторію;

  • Складання проекту;

  • Виконання тестів;

  • Розгортання готового проекту;

  • Відправлення звітів.


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



  • За зовнішнім запитом,

  • За розкладом,

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



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


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



Переваги |



  • Проблеми інтеграції виявляються і виправляються швидше, що виявляється дешевше

  • Негайний прогін модульних тестів для свіжих змін

  • Постійна наявність поточної стабільної версії разом з продуктами складань — для тестування, демонстрації, тощо

  • Негайний ефект від неповного або непрацюючого коду привчає розробників до роботи в ітеративному режимі з коротшим циклом.



Недоліки |



  • Витрати на підтримку роботи безперервної інтеграції

  • Потенційна необхідність у виділеному сервері під потреби безперервної інтеграції

  • Негайний ефект від неповного або непрацюючого коду відучує розробників від виконання періодичних резервних включень коду в репозиторій
    • У разі використання системи управління версіями початкового коду з підтримкою розгалуження, ця проблема може вирішуватися створенням окремої «гілки» проекту (англ. 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)



Примітки |





  1. The Ultimate List of CI Tools


  2. (рос.)Непрерывная интеграция для PHP, используя TeamCity, Travis CI и Scrutinizer, 2015




Див. також |



  • Екстремальне програмування

  • DevOps



Посилання |




  • (англ.)Martin Fowler. Continuous Integration


  • (рос.)Непрерывная интеграция


  • (англ.)A Continuous Integration System. Malini Das







П:  Портал «Програмування»






Popular posts from this blog

As a Security Precaution, the user account has been locked The Next CEO of Stack OverflowMS...

Список ссавців Італії Природоохоронні статуси | Список |...

Українські прізвища Зміст Історичні відомості |...