Dnes sa pozrieme na históriu tohto pojmu, prediskutujeme ťažkosti implementácie CI a uvedieme niekoľko populárnych nástrojov, ktoré pomôžu pri práci s ním.
/ Flickr / / / Фото изменено
Termín
Continuous Integration (nepretržitá integrácia) — prístup k vývoju aplikácií, ktorý predpokladá časté vykonávanie zostavení projektu a testovanie kódu.
Cieľom je urobiť proces integrácie predvídateľným a odhaliť potenciálne chyby a závady v raných fázach, aby bolo viac času na ich opravu.
Termín Continuous Integration sa prvýkrát objavil v roku 1991. Zaviedol ho tvorca jazyka UML (Grady Booch). Inžinier predstavil koncept CI ako súčasť svojej vlastnej praxe vývoja — . Nezaznamenal žiadne požiadavky na nepretržitú integráciu. Ale neskôr vo svojej knihe „“ povedal, že cieľom metódy je urýchliť vydávanie „interných vydaní“.
História
V roku 1996 si CI osvojili zakladatelia metodológie (XP) — (Kent Beck) a (Ron Jeffries). Nepretržitá integrácia sa stala jedným z dvanástich kľúčových princípov ich prístupu. Zakladatelia XP vyjasnili požiadavky na metodológiu CI a zdôraznili potrebnosť vykonávať zostavenie projektu niekoľkokrát denne.
Na začiatku 2000-tych rokov začal metodológiu nepretržitej integrácie propagovať jeden zo zakladateľov Agile Alliance (Martin Fowler). Jeho experimenty s CI viedli k vzniku prvého softvéri v tejto oblasti — CruiseControl. Nástroj vytvoril Martinov kolega — Matthew Foemmel.
Cykel zostavenia v nástroji je realizovaný vo forme démona, ktorý periodicky kontroluje systém správy verzií na zmeny v základni kódu. Riešenie si môžete dnes stiahnuť — je pod BSD podobnou licenciou.
S príchodom softvéru pre CI začali túto prax prijímať čoraz viac spoločností. Podľa štúdie Forrester [str.5 ] v roku 2009 86% z päťdesiatich respondentov technologických spoločností používalo alebo implementovalo metódy CI.
Dnes sa praktika Continuous Integration uplatňuje v organizáciách z rôznych odvetví. V roku 2018 veľký cloudový poskytovateľ uskutočnil prieskum medzi IT odborníkmi firiem v oblasti služieb, vzdelávania a financií. Z šiestich tisíc respondentov 58 % odpovedalo, že používajú v práci nástroje a princípy CI.
Ako to funguje
Základom kontinuálnej integrácie sú dva nástroje — systém správy verzií a CI server. Ten môže byť fyzické zariadenie alebo virtuálny stroj v cloudovom prostredí. Vývojári nahrávajú nový kód jeden alebo niekoľkokrát denne. CI server automaticky kopíruje kód so všetkými závislosťami a vykonáva zostavenie. Potom spúšťa integračné a jednotkové testy. Ak testy prejdú úspešne, CI systém nasadí kód.
Celkovú schému procesu možno predstaviť nasledovne:

Metodológia CI stanovuje rad požiadaviek na vývojárov:
- Ihneď opravovať problémy. Tento princíp prišiel do CI z extrémneho programovania. Oprava chýb je najprioritnejšia úloha pre vývojárov.
- Automatizovať procesy. Vývojári a manažéri by mali neustále hľadať "úzke miesta" v procese integrácie a odstrániť ich. Napríklad, častým "úzkym hrdlom" integrácie je testovanie.
- Vykonávať zostavenia čo najčastejšie. Aspoň raz denne, aby sa synchronizovala práca tímu.
Problémy s implementáciou
Prvý problém — vysoké prevádzkové náklady. Aj keď spoločnosť používa otvorené CI nástroje (o ktorých sa budeme baviť neskôr), aj tak musí investovať peniaze do podpory infraštruktúry. Riešením však môžu byť cloudové technológie.
Uľahčujú zostavenie rôznych počítačových konfigurácií. Navyše firmy platia iba za používané zdroje, čo pomáha ušetriť na infraštruktúre.
Podľa prieskumov [str.14 ], kontinuálna integrácia zvyšuje záťaž zamestnancov spoločnosti (aspoň spočiatku). Musia sa naučiť nové nástroje a kolegovia im nie vždy pomáhajú s učením. Preto sa musia vyznať v nových rámcoch a službách "za pochodu".
Tretia úroveň obtiažnosti – problémy s automatizáciou. Týmto sa stretávajú organizácie s veľkým objemom legacy kódu, ktorý nie je pokrytý automatizovanými testami. To vedie k tomu, že kód sa jednoducho prepíše pred plnohodnotným zavedením CI.

/ Flickr / /
Kto používa
Jedným z prvých, ktorí ocenili výhody tejto metodiky, boli IT giganti. Google implementoval nepretržitú integráciu od polovice 2000-tych rokov. CI bol zavedený na riešenie problémov so oneskoreniami vo fungovaní vyhľadávacieho systému. Nepretržitá integrácia pomohla rýchlo odhaľovať a odstraňovať problémy. Teraz CI využívajú všetky oddelenia IT giganta.
Nepretržitá integrácia pomáha aj malým firmám, a nástroje CI používajú aj finančné a zdravotnícke organizácie. Napríklad, v Morningstar služba nepretržitej integrácie pomohla rýchlejšie opraviť zraniteľnosti o 70 %. A zdravotná platforma Philips Healthcare dokázala dvakrát urýchliť testovanie aktualizácií.
Nástroje
Tu je niekoľko populárnych nástrojov pre CI:
- — jeden z najpopulárnejších CI systémov. Podporuje viac než tisíc pluginov na integráciu s rôznymi VCS, cloudovými platformami a inými službami. Jenkins používame aj my v 1cloud: nástroj . Pravidelne kontroluje Git vetvu určenú na testovanie.
- — python framework na písanie vlastných procesov nepretržitej integrácie. Počiatočná konfigurácia nástroja je pomerne zložitá, avšak kompenzuje to široké možnosti prispôsobenia. Medzi výhody frameworku používatelia zvyknú uvádzať jeho nízku spotrebu zdrojov.
- — server od Pivotal, ktorý využíva kontajnery Docker. Concourse CI sa integrova s akýmikoľvek nástrojmi a systémami správy verzií. Vývojári poznamenávajú, že systém je vhodný pre firmy všetkých veľkostí.
- — nástroj zabudovaný v systéme správy verzií GitLab. Služba funguje v cloude a využíva na konfiguráciu YAML súbory. Rovnako ako Concourse, Gitlab CI Docker kontajnery, ktoré pomáhajú izolovať rôzne procesy od seba.
- — cloudový CI server, ktorý pracuje s GitHub, GitLab a BitBucket. Platforma nevyžaduje dlhú počiatočnú konfiguráciu — v Codeship sú dostupné štandardné predinštalované CI procesy. Pre malé (do 100 zostavení mesačne) a open source projekty je Codeship dostupný zadarmo.
Materiály z nášho firemného blogu:
Zdroj: habr.com
