Co je Jenkins? Proč používat nástroj Continuous Integration (CI)?
Co je Jenkins?
Jenkins je open-source server pro nepřetržitou integraci napsaný v Java pro organizování řetězce akcí k dosažení procesu kontinuální integrace automatizovaným způsobem. Jenkins podporuje celý životní cyklus vývoje softwaru od vytváření, testování, dokumentace softwaru, nasazení a dalších fází životního cyklu vývoje softwaru.
Jenkins je široce používaná aplikace po celém světě, která má kolem 300 XNUMX instalací a každým dnem roste. Použitím Jenkins mohou softwarové společnosti urychlit proces vývoje softwaru, protože Jenkins může automatizovat sestavování a testování rychlým tempem.
Je to serverová aplikace a vyžaduje webový server, jako je Apache Tomcat. Důvodem, proč se software Jenkins stal tak populární, je sledování opakovaných úkolů, které se objevují během vývoje projektu. Pokud například váš tým vyvíjí projekt, Jenkins bude průběžně testovat vaše sestavení projektu a ukáže vám chyby v raných fázích vašeho vývoje.
Co je kontinuální integrace?
Kontinuální integrace je proces mnohonásobné integrace změn kódu od více vývojářů do jednoho projektu. Software je testován ihned po potvrzení kódu. S každým odevzdáním kódu je kód vytvořen a testován. Pokud test projde, sestavení se otestuje pro nasazení. Pokud je nasazení úspěšné, kód je odeslán do produkce.
Toto potvrzení, sestavení, testování a nasazení je nepřetržitý proces, a proto se nazývá nepřetržitá integrace/nasazování.
Jak Jenkins působí?
Jenkins je serverová aplikace a vyžaduje webový server, jako je Apache Tomcat, aby běžel na různých platformách, jako je Windows, Linux, macOS, Unix atd. Chcete-li používat Jenkins, musíte vytvořit potrubí, což je řada kroků, které server Jenkins provede. Jenkins Continuous Integration Pipeline je výkonný nástroj, který se skládá ze sady nástrojů určených k tomu hostitel, monitorovat, sestavit si test kód nebo změny kódu, například:
- Server pro kontinuální integraci (Jenkins, Bamboo, CruiseControl, TeamCity, a další)
- Source Control Tool (např. CVS, SVN, GIT, Mercurial, Perforce, ClearCase a další)
- Nástroj pro sestavení (Make, ANT, Maven, Ivy, Gradle, a další)
- Automatizační testovací rámec (Selenium, Appium, TestComplete, UFT a další)
Jenkin historie
- Kohsuke Kawaguchi, a Java vývojář pracující ve společnosti SUN Microsystems byl unavený vytvářením kódu a opakovaným opravováním chyb. V roce 2004 vytvořil automatizační server s názvem Hudson, který automatizuje sestavovací a testovací úlohy.
- V 2011, Oracle který vlastnil Sun Microsystems, měl spor s Hudsonovou open source komunitou, takže Hudson forkovali a přejmenovali ji na Jenkins.
- Hudson i Jenkins nadále fungovali nezávisle. Ale v krátkém čase Jenkins získal spoustu projektů a přispěvatelů, zatímco Hudson zůstal pouze s 32 projekty. Postupem času se Jenkins stal populárnějším a Hudson už není udržován.
Proč používat kontinuální integraci s Jenkinsem?
Někteří lidé si mohou myslet, že staromódní způsob vývoje softwaru je lepší. Pojďme pochopit výhody CI s Jenkinsem na následujícím příkladu
Představme si, že existuje asi 10 vývojářů, kteří pracují na a sdílené úložiště. Někteří vývojáři dokončí svůj úkol za 25 dní, zatímco jiným to trvá 30 dní.
Před Jenkinsem | Po Jenkinsovi |
---|---|
Jakmile všichni vývojáři dokončili své přiřazené úkoly kódování, použili k odevzdání svého kódu všichni ve stejnou dobu. Later, Build je testován a nasazen.
Potvrzení kódu bylo vytvořeno a testovací cyklus byl velmi vzácný a jediné sestavení bylo provedeno po mnoha dnech. |
Kód je vytvořen a otestován, jakmile vývojář potvrdí kód. Jenkin bude vytvářet a testovat kód mnohokrát během dne
Pokud je sestavení úspěšné, Jenkins nasadí zdroj na testovací server a upozorní tým pro nasazení. Pokud sestavení selže, Jenkins oznámí chyby vývojářskému týmu. |
Vzhledem k tomu, že kód byl vytvořen najednou, někteří vývojáři budou muset počkat, až ostatní vývojáři dokončí kódování, aby zkontrolovali své sestavení | Kód je vytvořen okamžitě poté, co se kterýkoli z vývojářů zaváže. |
Není snadný úkol izolovat, detekovat a opravovat chyby pro více odevzdání. | Vzhledem k tomu, že kód je sestavován po každém odevzdání jednoho vývojáře, je snadné zjistit, čí kód způsobil selhání sestavy |
Sestavení kódu a zkušební proces jsou zcela manuální, takže existuje mnoho šancí na selhání. | Automatizovaný proces sestavení a testování šetří čas a snižuje vady. |
Kód je nasazen, jakmile jsou všechny chyby opraveny a otestovány. | Kód je nasazen po každém úspěšném sestavení a testování. |
Vývojový cyklus je pomalý | Vývojový cyklus je rychlý. Nové funkce jsou uživatelům snadněji dostupné. Zvyšuje zisky. |
Případová studie kontinuální integrace v reálném světě
Jsem si jistý, že všichni znáte starý telefon Nokia. Nokia dříve implementovala proceduru zvanou nightly build. Po několika potvrzeních od různých vývojářů během dne byl software vytvořen každou noc. Vzhledem k tomu, že software byl sestavován pouze jednou za den, je velmi obtížné izolovat, identifikovat a opravit chyby v rozsáhlé kódové základně.
Later, přijali přístup kontinuální integrace. Software byl vytvořen a otestován, jakmile vývojář svěřil kód. V případě zjištění jakékoli chyby může příslušný vývojář závadu rychle opravit.
Jenkins pluginy
Ve výchozím nastavení přichází Jenkins s omezenou sadou funkcí. Pokud chcete integrovat svou instalaci Jenkins s nástroji pro správu verzí, jako je Git, musíte nainstalovat pluginy související s Git. Pro integraci s nástroji, jako je Maven, Amazon EC2, musíte do Jenkins nainstalovat příslušné pluginy.
Výhody použití Jenkins
- Jenkins je řízen komunitou, která je velmi otevřená. Každý měsíc pořádají veřejná setkání a přijímají podněty od veřejnosti pro rozvoj projektu Jenkins.
- Zatím je uzavřeno kolem 280 vstupenek a projekt vydává stabilní verzi každé tři měsíce.
- Jak roste technologie, roste i Jenkins. Jenkins má zatím ve své databázi pluginů zveřejněno kolem 320 pluginů. S pluginy je Jenkins ještě výkonnější a bohatší na funkce.
- Nástroj Jenkins také podporuje cloudovou architekturu, takže můžete nasadit Jenkins na cloudových platformách.
- Důvod, proč se Jenkins stal populárním, je ten, že jej vytvořil vývojář pro vývojáře.
Nevýhody použití Jenkins
Přestože je Jenkins velmi výkonný nástroj, má své nedostatky.
- Jeho rozhraní je zastaralé a není uživatelsky přívětivé ve srovnání se současnými trendy uživatelského rozhraní.
- Přestože Jenkins je milován mnoha vývojáři, není tak snadné jej udržovat, protože Jenkins běží na serveru a vyžaduje určité dovednosti jako správce serveru, aby mohl sledovat jeho aktivitu.
- Jedním z důvodů, proč mnoho lidí Jenkins neimplementuje, je jeho obtížnost při instalaci a konfiguraci Jenkins.
- Nepřetržité integrace pravidelně přerušují kvůli některým malým změnám nastavení. Průběžná integrace bude pozastavena, a proto vyžaduje určitou pozornost vývojáře.
Proč investovat do čističky vzduchu?
- V kontinuální integraci je po potvrzení kódu software okamžitě vytvořen a testován
- Jenkins se používá pro orchestraci řetězce akcí pro kontinuální integraci v softwarovém projektu
- Před Jenkinsem, když všichni vývojáři dokončili své přiřazené úkoly kódování, používali svůj kód všechny ve stejnou dobu. Later, Build je testován a nasazen.
- Po Jenkinsovi je kód vytvořen a otestován, jakmile vývojář potvrdí kód. Jenkin bude vytvářet a testovat kód mnohokrát během dne
- Ve výchozím nastavení přichází Jenkins s omezenou sadou funkcí. Pokud chcete integrovat svou instalaci Jenkins s nástroji pro správu verzí, jako je Git, musíte nainstalovat pluginy související s Git. Také zkontrolujte Nejlepší Jenkins Alternativní nástroje
- Největší výhodou Jenkinse je, že je spravován komunitou, která pořádá veřejná setkání a přijímá podněty od veřejnosti pro rozvoj Jenkinsových projektů.
- Největší nevýhodou Jenkins je, že jeho rozhraní je zastaralé a není uživatelsky přívětivé ve srovnání se současnými trendy uživatelského rozhraní. Pokud zvažujete další možnosti, které by mohly nabídnout modernější uživatelské prostředí, možná budete chtít prozkoumat některé z nich špičkové nástroje pro kontinuální integraci k dispozici.