Na úvod je dobré říct, že Jenkins nejčastěji ovládají právě lidé z DevOpsu, developeři a automatizační testeři, manuální testeři se s ním spíše nesetkají. Taje Jenkinsu vám popíši ve dvou dílech. V prvním se na Jenkins podíváme obecně, zabrousíme do historie a zjistíme, k čemu se využívá a v druhém díle detailněji rozebereme další kroky(steps {} ) v Jenkins file jako je např. automatizované testování.
Jenkins je platforma pro vytváření Continuous Integration/Continuous Delivery aka CI/CD. Nejčastěji se setkáme se slovem „pipeline“ nebo „Jenkins pipeline“. Což je job, který automatizovaně spouští postupně několik věcí. Například přípravu prostředí, vytvoření podu (serveru), nasazení aplikace (deployment) a také testy, které ověří, že je nasazená aplikace v pořádku. I přesto, že Jenkis vyžaduje skriptování některých kroků celkové automatizace, tak poskytuje rychlý a robustní způsob, jak systematizovat celkový „life-cycle“ vývoje softwaru. A proč je vlastně dnes Jenkins jedním z předních nástrojů DevOps? K vysvětlení nám poslouží jednoduchá definice:
Jenkins je automatizační server napsaný v Javě, který pomáhá vytvářet, testovat a neustále nasazovat software. Open source systém je v současnosti jedním z předních automatizačních serverů.
Jenkins poskytuje podporu pro:
- různé nástroje pro správu verzí, jako je Git
- buildování projektu založených na ANT a Apache Maven
- pouštění Bash skriptu a dávkových souborů Windows
Něco málo z historie Jenkinsu
Projekt Jenkins začal v roce 2004 a to pod názvem Hudson (to si ještě pamatuju, sakra jsem starej :)). Možná znáte vývojáře Kohsuke Kawaguchiho, který pracoval v Sun Systems a chtěl vytvořit metodu pro provádění Continious integration/Nepřetržité integrace. Jeho hlavním záměrem bylo otestovat kód před potvrzením, aby nedošlo k porušení buildu.
Jeho nápad se ukázal jako úspěšný a velmi rychle se rozšířil i do celého týmu. A jak to dopadlo? Kohsuke Kawaguch vytvořil Open-Source projekt Jenkins, který se rozšířil po celém světě. Podle odhadu ho využívá 1.6 milionu uživatelů.
K čemu se Jenkins používá?
Primárně jako kontinuální integrační nástroj a zároveň pokrývá celý proces dodávání softwaru včetně nasazování. Spouští webové kontejnery a pluginy jako je například Apache Tomcat. Pomáhá spravovat požadavky a celkový životní cyklus i přístupová práva. Jenkins má přes 1 700 modulů, které pomáhají a obohacují softwarovou integraci, automatizaci a delivery procesy. V neposlední řadě poskytuje přizpůsobitelné prostředí.
Jenkins zahrnuje různorodou terminologii DevOps s různými možnostmi vytváření a správou pipeline. Níže se pokusím vysvětlit několik běžných termínů.
Jenkins pipeline je uživatelsky vytvořený model s kontinuálním procesem. Pipeline obsahuje různé moduly, které pomáhají definovat všechny kroky od správy až po uživatele. Všechny tyto kroky, které jsou definovány v rámci pipeline procházejí složitým procesem. Ten zahrnuje tři kroky:
- automatizovaný build
- vícestupňové testování
- postupy nasazování
Když chceme vytvořit pipeline existují dva způsoby jak na to. První způsob je přímo přes uživatelské prostředí Jenkins, druhý způsob je využití metodologie Pipeline as Code, tím vytvoříme Jenkins file. Jenkins file využívá pro definování pipeline syntaxy, které jsou kompatibilní s Groovy. Je důležité poznamenat, že syntaxe Jenkins file je buď deklarativní nebo skriptovaná.
Deklarativní zápis Jenkins file:
Zajímá vás oblast IT a hledáte pracovní pozice a pracovní příležitosti v IT oboru? Ať už jste programátor, developer, tester, analytik nebo software architekt, ozvěte se nám a my vám z naší nabídky IT práce najdeme IT projekt na míru. Podívejte se, jaká volná pracovní místa v IT oblasti momentálně nabízíme. Pomůžeme vám najít nové pracovní výzvy a příležitosti. Těšíme se na spolupráci s vámi!
Samotný kód má tyto prvky:
- Povinný blok “pipeline { }“ vyvolává plugin Jenkins Pipeline.
- Slovo „agent“ definuje, kde kanál běží a slovo „any“ označuje, že kanál poběží na libovolném a samozřejmě dostupném agentovi.
- Blok “stages { }“ má sekvenci, ve které poběží pipeline. Jsou tam tři “stage“ – Build, Test, Deploy. Každá z nich s příslušnými “steps { }“. Tyto “steps { }“ říkají Jenkinsu, co má vlastně dělat v daném kroku.
Skriptovatelný ekvivalent Jenkins file vypadá takto:
Když tým zařadí Jenkins file, umožní tak celému týmu upravovat, kontrolovat a přizpůsobovat kroky v procesu “delivery“. Například Continious Integration neboli Nepřetržitá integrace je postup vývoje softwaru, kde každá aplikovaná změna automaticky vyvolá test samotného buildu (sestavení). Tento proces zajišťuje intregraci kódu do funkční a spustitelné formy bez chyb.
Základní diagram Jenkinsu:
Continious Integration/Nepřetržitá integrace je opravdu nezbytným aspektem ve firmách s více vývojáři. A proč? Protože každý vývojář provádí změny v kódu a každá změna a to bez výjimky má potenciální problémy. A právě z toho důvodu nástroj pro nepřetržitou integraci jako je právě Jenkins, pomáhá testovat, indetifikovat a řešit problémy před použitím, nebo jak se říká mergnutim změn.
V druhém díle si detailněji rozebereme další kroky(steps {} ) v Jenkins file jako je např. automatizované testování.
🟡 Hledáte zajímavý projekt? Mrkněte, jak to u nás chodí a jaké kolegy aktuálně hledáme.
🟡 Máte kolegu nebo kamaráda, který se poohlíží po novém projektu? Zapojte se do našeho referral programu Doporuč a získejte finanční odměnu za doporučení.
🟡 Chtěli byste začít pracovat v IT? Stáhněte si náš ebook ZAČNĚTE PRACOVAT V IT: aneb od prvních krůčků po vysněnou práci, ve kterém vás provedeme krůček po krůčku informacemi, kurzy i praxí, které jsou tolik potřebné nejen pro ty, kteří chtějí změnit obor, ale i pro ty, kteří se chtějí pracovně posunout a dále se vzdělávat.
Nebo sdílejte tento článek, který třeba poslouží i vašim známým.