Dnes se podíváme na historii termínu, projednáme obtíže implementace CI a představíme několik populárních nástrojů, které vám pomohou s jeho používáním.
/ Flickr / / / Фото изменено
Termín
Continuous Integration (nepřetržitá integrace) — přístup k vývoji aplikací, který zahrnuje časté provádění sestavení projektu a testování kódu.
Cílem je udělat proces integrace předvídatelným a odhalit potenciální chyby a závady v rané fázi, aby bylo více času na jejich opravu.
Poprvé se termín Continuous Integration objevil v roce 1991. Zavedl ho tvůrce jazyka UML (Grady Booch). Inženýr představil koncept CI jako součást své vlastní praxe vývoje — . Předpokládal inkrementální upřesnění architektury při návrhu objekto-orientovaných systémů. Grady nepopisoval žádné požadavky na nepřetržitou integraci. Ale později ve své knize „“ řekl, že úkolem této metodiky je urychlit vydávání „interních releasů.“
Historie
V roce 1996 přejali CI tvůrci metodologie (XP) — (Kent Beck) a (Ron Jeffries). Nepřetržitá integrace se stala jedním z dvanácti klíčových principů jejich přístupu. Zakladatelé XP upřesnili požadavky na metodologii CI a zdůraznili nutnost provádět sestavení projektu několikrát denně.
Na počátku 2000. let začal metodologii nepřetržité integrace propagovat jeden ze zakladatelů Agile Alliance (Martin Fowler). Jeho experimenty s CI vedly k vytvoření prvního softwarového nástroje v této oblasti — CruiseControl. Nástroj vytvořil Martinův kolega — Matthew Foemmel.
Sestavovací cyklus v nástroji je realizován jako démon, který pravidelně kontroluje systém správy verzí na změny v kódové základně. Řešení si můžete stáhnout i dnes — je pod licencí podobnou BSD.
S příchodem softwaru pro CI začalo tuto praxi přijímat čím dál více společností. Podle výzkumu Forrester [str. 5 ] v roce 2009 86 % ze 50 dotazovaných technologických společností používalo nebo implementovalo metody CI.
Dnes je praxe Continuous Integration využívána organizacemi z různých odvětví. V roce 2018 provedl velký cloudový poskytovatel průzkum mezi IT specialisty z oblastí služeb, vzdělávání a financí. Ze šesti tisíc respondentů 58 % uvedlo, že používají při práci nástroje a principy CI.
Jak to funguje
Základem kontinuální integrace jsou dva nástroje — systém správy verzí a CI server. Ten může být fyzické zařízení nebo virtuální stroj v cloudovém prostředí. Vývojáři nahrávají nový kód jednou nebo několikrát denně. CI server ho automaticky zkopíruje se všemi závislostmi a provede sestavení. Poté spouští integrační a unit testy. Pokud testy proběhnou úspěšně, CI systém nasadí kód.
Celkovou schéma procesu si lze představit takto:

Metodologie CI klade na vývojáře řadu požadavků:
- Okamžitě opravovat problémy. Tento princip přišel do CI z extrémního programování. Oprava chyb je nejprioritnější úkol vývojářů.
- Automatizovat procesy. Vývojáři a manažeři by měli neustále hledat "úzká místa" v integračním procesu a odstraňovat je. Například často bývá "úzkým místem" integrace testování.
- Provádět sestavení co nejčastěji. Jednou denně, aby se synchronizovala práce týmu.
Obtíže při zavádění
Prvním problémem jsou vysoké provozní náklady. I když společnost používá open-source CI nástroje (o kterých si povíme dále), stále musí investovat peníze do udržování infrastruktury. Řešením však mohou být cloudové technologie.
Ty usnadňují sestavování různorodých počítačových konfigurací. Plus, společnosti jen za využívané zdroje, což pomáhá ušetřit na infrastruktuře.
Podle průzkumů [str.14 ], kontinuální integrace zvyšuje zátěž zaměstnanců společnosti (alespoň na začátku). Musí se naučit nové nástroje a kolegové ne vždy pomáhají s učením. Proto se musí vyrovnat s novými frameworky a službami "za běhu".
Třetí obtížností jsou problémy s automatizací. S těmito problémy se potýkají organizace s velkým množstvím legacy kódu, který není pokryt automatizovanými testy. To vede k tomu, že kód je před plným zavedením CI jednoduše přepisován.

/ Flickr / /
Kdo používá
Jedni z prvních, kdo ocenili výhody této metodiky, byli IT giganti. Google zavedl nepřetržitou integraci v polovině 2000. let. CI bylo zavedeno, aby se řešil problém s prodlevami v práci vyhledávače. Nepřetržitá integrace pomohla rychle odhalovat a odstraňovat problémy. Nyní CI používají všechny divize IT giganta.
Nepřetržitá integrace pomáhá i malým firmám, a nástroje CI využívají finance a zdravotnické organizace. Například ve společnosti Morningstar služby nepřetržité integrace pomohly opravit zranitelnosti o 70% rychleji. Zdravotnická platforma Philips Healthcare dokázala dvakrát urychlit testování aktualizací.
Nástroje
Zde je několik populárních nástrojů pro CI:
- — jeden z nejpopulárnějších CI systémů. Podporuje více než tisíc pluginů pro integraci s různými VCS, cloudovými platformami a dalšími službami. Jenkins používáme také v 1cloud: tento nástroj . Pravidelně kontroluje Git větev určenou pro testování.
- — python framework pro psaní vlastních procesů nepřetržité integrace. Počáteční nastavení nástroje je poměrně složité, nicméně to je vyváženo širokými možnostmi přizpůsobení. Mezi výhody frameworku uživatelé uvádějí jeho nízkou náročnost na zdroje.
- — server od Pivotal, který používá kontejnery Docker. Concourse CI se integruje s jakýmikoli nástroji a systémy správy verzí. Vývojáři poznamenávají, že systém je vhodný pro práci v firmách jakéhokoli velikosti.
- — nástroj integrován do systému správy verzí GitLab. Služba funguje v cloudu a pro konfiguraci využívá YAML soubory. Stejně jako Concourse, Gitlab CI Docker kontejnery, které pomáhají izolovat různé procesy od sebe navzájem.
- — cloudový CI server, který pracuje s GitHub, GitLab a BitBucket. Platforma nevyžaduje dlouhou počáteční konfiguraci — v Codeship jsou k dispozici standardní předinstalované CI procesy. Pro malé (do 100 sestavení za měsíc) a open source projekty je Codeship dostupný zdarma.
Materiály z našeho firemního blogu:
Zdroj: habr.com
