Hlavní navigace

Kontinuání integrace – nástroje Jenkins CI vs. Atlassian Bamboo

15. 11. 2016
Doba čtení: 4 minuty

Sdílet

Abyste byli vždy včas o všem informování, ať už tak, že vše proběhlo bez problémů, anebo že nastala chyba, je bezpodmínečně nutné využívat systém notifikací.

Zůstaňte v obraze aneb notifikační systém

Obecně si můžete nechat notifikace posílat na:

  • E-mail,
  • RSS feed,
  • HipChat, Slack,
  • Jabber – Google Talk, Instant messenger,
  • Google Cloud Messaging (GCM) service – Android zařízení,
  • Skype,
  • MSN Messenger,
  • vlastní službu ve formátu XML nebo JSON.

Takto kupříkladu vypadá ukázka notifikačních zpráv v Hipchat roomu (o úspěšných a neúspěšných nasazeních demo projektu):

Základní možností upozorňování je zasílání informací na e-mail, pro něj najdete podporu v každém CI nástroji. Do e-mailu je možné dostat velice podrobné informace. Na druhou stranu, chodí mi denně stovky e-mailů, snadno něco zapadne. Co s tím? Na kriticky důležité zprávy je možné navázat přeposílání v podobě SMS zprávy, a té si všimnete opravdu vždy.

Většina nástrojů umožňuje řadu komunikačních kanálů, můžete si vybrat z výše zmíněných, mezi kterými pravděpodobně naleznete svůj oblíbený chatovací nástroj. My využíváme Hipchat pro běžnější notifikace a doplňkově e-maily v kombinaci se SMS zprávami pro kritické projekty navíc stylem jako “inteligentní notifikace”.

Inteligentní notifikace

Na každém projektu probíhá sestavení prakticky po každém commitu. Při stovkách zpráv už přehlednost bere za své, proto vítáme “inteligentní notifikace”. Jak to funguje?

Nevyužíváme umělou inteligenci, ale relativně jednoduchou logiku. Když je výsledek aktuálního sestavení jiný než stav předchozího, pošle se notifikace.

Např. poslední build skončil chybou, přestože předchozí sestavení byla úspěšná. Měli bychom zjistit příčinu a následně sjednat nápravu, pokud je to v našich silách. Může se samozřejmě stát, že sestavení selhalo, protože je nedostupná nějaká cloudová služba. Pak sice nemůžeme situaci přímo ovlivnit, ale můžeme alespoň informovat zbytek týmu a klienta.

Nastavení notifikací v Jenkins CI je minimalistické, dostačující, správce nemá co pokazit. Nastavení pokrývá nastíněné “inteligentní notifikace”.

Bohatší možnosti nastavení v případě Atlassian Bamboo, které umožňují rozlišovat, komu se má poslat běžná zpráva a naopak výjimečná událost, tzn. “inteligentní notifikace”.

Výběr nástroje

Osobně vám mohu zevrubně porovnat Jenkins CI, s kterým aktivně pracuji několik let, a Atlassian Bamboo jako modernější nástroj a smělého adepta na integrace dalších systémů. Jenkins CI je zdarma včetně pluginů, nejsou zde žádné skryté platby.

Musíte mu sice obětovat nějaký čas a námahu při instalaci a konfiguraci nástroje. Ale Jenkins má historickou výhodu, jelikož navazuje na předchůdce jménem Hudson, díky této dlouholeté historii má bohatou dokumentaci a najdete nepřeberné množství pluginů na různé doplňkové funkce.

Správa “jobu” je přehledná, vše je na jedné stránce, člověk se prostě nemůže ztratit. Jako mínus můžeme zmínit uživatelské rozhraní, na první pohled není moc “cool” ale spíš “oldschool” a navíc v dnešní době flat designu nemůžeme očekávat, že budou do tak technického nástroje přidávány nějaké ozdobičky.

Ukázka dashboardu jobu v Jenkins CI, kde můžete vlevo vidět menu pro správce, historii buildů vč. jednoho právě probíhajícího, uprostřed pak rychlé odkazy a přehled posledních úspěšných/neúspěšných buildů včetně časů.

Pro porovnání předkládám Atlassian Bamboo. Je pěkný, klikací a zaměřený na méně technické uživatele. Pokud navíc využíváte Bitbucket jako SCM platformu a Atlassian JIRA na trackování požadavků, můžete pohodlně nastavit integraci a vytvořit si tak kompaktní automatizovaný ekosystém nástrojů, které spolu výborně spolupracují.

Jako celkem výrazné mínus vidím složitý rozpad deployment procesu na plan – stages – jobs – tasks. Systém snižuje redundanci nastavení, kdy si například nadefinujete v plánu globální proměnnou a využijete ji ve všech jobech, jeden task lze využít ve více jobech. Chybí mi celkový přehled na jedné obrazovce jako u Jenkins CI. Správa “plánu” v Bamboo má záložky s různými dílčími nastaveními, job se rozpadá na “tasky” a tím pádem vždy pracujete jen s určitými fragmenty a proto považuji Bamboo za nepřehledné a potenciálně podporující tvorbu chyb z nepozornosti. Stejně jako ostatní nástroje od Atlassian je Bamboo licencované a cena může být zvláště pro malou firmu také limitující faktor. Základ si můžete vyzkoušet za 10 dolarů, reálný provoz se pak pohybuje od 800 dolarů za rok.

Pro srovnání se můžete podívat, jak vypadá historie buildů v Atlassian Bamboo (náhled včetně podrobné dokumentace k jednotlivým částem obrazovky):

V silách běžného smrtelníka není porovnání všech dostupných alternativ. Zájemci mohou nalézt systematické porovnání 40 nástrojů pro kontinuální integraci na Comparison of continuous integration software. Zde naleznete různá kritéria od podporovaných buildovacích nástrojů přes notifikace až po možnosti integrací.

Na to asi zřejmě nikdo z vás nemá čas. Cílem je si zvolit ten správný nástroj, který bude vyhovovat vám a naučit se s ním správně zacházet. Mně se nejvíce osvědčil Jenkins CI, bez kterého si dnes kontinuální integraci nedokážu představit.

Bez vhodného nástroje se jen stěží obejdete

Jak jsme si ukázali, kontinuální integrace zahrnuje řadu činností. Pokud je má odbavovat člověk, prostor pro chyby je velký, časová náročnost a požadavky na znalosti také nejsou zanedbatelné.

CS24 tip temata

Navíc je u lidského zdroje potřeba nějak řešit zástupnost. U takové činnosti jako je kontinuální integrace jsou zdroje drahé a nepotkáte je na každém rohu. Je tedy vhodné, ne-li přímo nutné, zapojit do procesů nějaký automatizační nástroj. Jeho výběr mohou ovlivňovat různá kritéria, osobně navrhuji nebrat v potaz jenom cenu samotného nástroje, ale i to co umí a jak dobře se s ním pracuje – notifikace, možnost integrace na další služby, uživatelské rozhraní. Zvažte, co je nejdůležitější pro vás, a odpovídající nástroje vyzkoušejte. Pokud narazíte na problémy, zkuste najít někoho, kdo vám s tím pomůže. V obdobné situaci je řada firem na světě.

Určitě ale se zavedením a nastavením procesu kontinuální integrace neváhejte. Na začátku to sice vyžaduje určitou investici, ale dlouhodobě vám to ušetří čas, nervy (i reputaci). Jednou správně nastavený proces automatizovaného zpracování v rámci kontinuální integrace v budoucnu stačí “jen replikovat” pro nové a nové projekty.

Autor článku

IT konzultant společnosti Lundegaard se zaměřením na verzování, kontinuální integraci, správu nástrojů Jenkins CI, JIRA, Confluence a podpoře jejich provozu.