Неперервна інтеграція (англ. Continuous Integration) — практика розробки програмного забезпечення, яка полягає у виконанні частих автоматизованих складань проєкту для якнайшвидшого виявлення та розв'язання інтеграційних проблем. У звичайному проєкті, де над різними частинами системи розробники працюють незалежно, стадія інтеграції є завершальною. Вона може непередбачувано затримати закінчення робіт. Перехід до неперервної (постійної) інтеграції дозволяє знизити трудомісткість інтеграції та зробити її передбачуванішою завдяки найранішому виявленню та усуненню помилок і суперечностей.
Вимоги до проєкту
- Початковий код і все, що необхідно для побудови та тестування проєкту, зберігається в репозиторії системи керування версіями;
- Операції копіювання з репозиторію, складання та тестування всього проєкту автоматизовані і легко викликаються із зовнішньої програми.
Організація
На виділеному сервері організовується служба, до завдань якої входять:
- Отримання початкового коду з репозиторію;
- Складання проєкту;
- Виконання тестів;
- Розгортання готового проєкту;
- Відправлення звітів.
Локальне складання може здійснюватися:
- За зовнішнім запитом,
- За розкладом,
- За фактом оновлення репозиторію і за іншими критеріями.
Побудова за розкладом
У разі складання за розкладом, вони, як правило, проводяться кожної ночі в автоматичному режимі - нічні складання (щоб до початку робочого дня були готові результати тестування). Для розрізнення додатково вводиться система нумерації складань — зазвичай, кожне складання нумерується натуральним числом, яке збільшується з кожним новим складанням. Початковий код та інші вихідні дані при взятті їх з репозиторію системи контролю версій позначаються номером складання. Завдяки цьому, точно таке ж складання може бути точно відтворене в майбутньому — досить взяти вихідні дані по потрібній мітці і знову запустити процес. Це дає можливість повторно випускати навіть дуже старі версії програми з невеликими виправленнями.
Переваги
- Проблеми інтеграції виявляються і виправляються швидше, що виявляється дешевше
- Негайний прогін модульних тестів для свіжих змін
- Постійна наявність поточної стабільної версії разом з продуктами складань — для тестування, демонстрації, тощо
- Негайний ефект від неповного або непрацюючого коду привчає розробників до роботи в ітеративному режимі з коротшим циклом.
Недоліки
- Витрати на підтримку роботи безперервної інтеграції
- Потенційна необхідність у виділеному сервері під потреби безперервної інтеграції
- Негайний ефект від неповного або непрацюючого коду відучує розробників від виконання періодичних резервних включень коду в репозиторій
- У разі використання системи управління версіями початкового коду з підтримкою розгалуження, ця проблема може вирішуватися створенням окремої «гілки» проєкту (англ. branch) для внесення великих змін (код, розробка якого до працездатного варіанту займе кілька днів, але бажано частіше резервне копіювання в репозиторій). Після закінчення розробки та індивідуального тестування такої гілки, вона може бути об'єднана (англ. merge) з основним кодом або «стовбуром» (англ. trunk) проєкту.
Перелік засобів
- Buddy (Buddy.Works)
- Buildkite
- Concourse CI
- 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
- (стара назва: Semaphoreapp)
- Apache Gump
- AWS CodeBuild
- Azure DevOps (стара назва: Visual Studio Team Services)
Для мобільних розробок (Android, iOS):
- CIsimple
- Hosted-CI
+ Appthwack (appthwack.com) / + bitbar (old testdroid)
Див. також
Примітки
- The Ultimate List of CI Tools
- (рос.)Непрерывная интеграция для PHP, используя TeamCity, Travis CI и Scrutinizer, 2015
Посилання
- (англ.)Martin Fowler. Continuous Integration
- (рос.)Непрерывная интеграция
- (англ.)A Continuous Integration System. Malini Das
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Neperervna integraciya angl Continuous Integration praktika rozrobki programnogo zabezpechennya yaka polyagaye u vikonanni chastih avtomatizovanih skladan proyektu dlya yaknajshvidshogo viyavlennya ta rozv yazannya integracijnih problem U zvichajnomu proyekti de nad riznimi chastinami sistemi rozrobniki pracyuyut nezalezhno stadiya integraciyi ye zavershalnoyu Vona mozhe neperedbachuvano zatrimati zakinchennya robit Perehid do neperervnoyi postijnoyi integraciyi dozvolyaye zniziti trudomistkist integraciyi ta zrobiti yiyi peredbachuvanishoyu zavdyaki najranishomu viyavlennyu ta usunennyu pomilok i superechnostej Vimogi do proyektuPochatkovij kod i vse sho neobhidno dlya pobudovi ta testuvannya proyektu zberigayetsya v repozitoriyi sistemi keruvannya versiyami Operaciyi kopiyuvannya z repozitoriyu skladannya ta testuvannya vsogo proyektu avtomatizovani i legko viklikayutsya iz zovnishnoyi programi OrganizaciyaNa vidilenomu serveri organizovuyetsya sluzhba do zavdan yakoyi vhodyat Otrimannya pochatkovogo kodu z repozitoriyu Skladannya proyektu Vikonannya testiv Rozgortannya gotovogo proyektu Vidpravlennya zvitiv Lokalne skladannya mozhe zdijsnyuvatisya Za zovnishnim zapitom Za rozkladom Za faktom onovlennya repozitoriyu i za inshimi kriteriyami Pobudova za rozkladom U razi skladannya za rozkladom voni yak pravilo provodyatsya kozhnoyi nochi v avtomatichnomu rezhimi nichni skladannya shob do pochatku robochogo dnya buli gotovi rezultati testuvannya Dlya rozriznennya dodatkovo vvoditsya sistema numeraciyi skladan zazvichaj kozhne skladannya numeruyetsya naturalnim chislom yake zbilshuyetsya z kozhnim novim skladannyam Pochatkovij kod ta inshi vihidni dani pri vzyatti yih z repozitoriyu sistemi kontrolyu versij poznachayutsya nomerom skladannya Zavdyaki comu tochno take zh skladannya mozhe buti tochno vidtvorene v majbutnomu dosit vzyati vihidni dani po potribnij mitci i znovu zapustiti proces Ce daye mozhlivist povtorno vipuskati navit duzhe stari versiyi programi z nevelikimi vipravlennyami PerevagiProblemi integraciyi viyavlyayutsya i vipravlyayutsya shvidshe sho viyavlyayetsya deshevshe Negajnij progin modulnih testiv dlya svizhih zmin Postijna nayavnist potochnoyi stabilnoyi versiyi razom z produktami skladan dlya testuvannya demonstraciyi tosho Negajnij efekt vid nepovnogo abo nepracyuyuchogo kodu privchaye rozrobnikiv do roboti v iterativnomu rezhimi z korotshim ciklom NedolikiVitrati na pidtrimku roboti bezperervnoyi integraciyi Potencijna neobhidnist u vidilenomu serveri pid potrebi bezperervnoyi integraciyi Negajnij efekt vid nepovnogo abo nepracyuyuchogo kodu viduchuye rozrobnikiv vid vikonannya periodichnih rezervnih vklyuchen kodu v repozitorij U razi vikoristannya sistemi upravlinnya versiyami pochatkovogo kodu z pidtrimkoyu rozgaluzhennya cya problema mozhe virishuvatisya stvorennyam okremoyi gilki proyektu angl branch dlya vnesennya velikih zmin kod rozrobka yakogo do pracezdatnogo variantu zajme kilka dniv ale bazhano chastishe rezervne kopiyuvannya v repozitorij Pislya zakinchennya rozrobki ta individualnogo testuvannya takoyi gilki vona mozhe buti ob yednana angl merge z osnovnim kodom abo stovburom angl trunk proyektu Perelik zasobivBuddy Buddy Works Buildkite Concourse CI Drone io CD Go CD Snap CI tranforms to Go CD Hydra Jenkins stara nazva Hudson Nevercode ProductionMap N A Predix CI stara nazva Solano CI TeamCity IT Travis CI stara nazva Semaphoreapp Apache Gump AWS CodeBuild Azure DevOps stara nazva Visual Studio Team Services Dlya mobilnih rozrobok Android iOS CIsimple Hosted CI Appthwack appthwack com bitbar old testdroid Div takozhEkstremalne programuvannya DevOpsPrimitkiThe Ultimate List of CI Tools ros Nepreryvnaya integraciya dlya PHP ispolzuya TeamCity Travis CI i Scrutinizer 2015Posilannya angl Martin Fowler Continuous Integration ros Nepreryvnaya integraciya angl A Continuous Integration System Malini Das