Co je Jenkins?
Jenkins je open source server pro kontinuální integraci schopný organizovat řetězec akcí, které pomáhají dosáhnout procesu kontinuální integrace (nejen) automatizovaným způsobem.
Jenkins je zdarma a je celý napsán v Javě. Jenkins je široce používaná aplikace po celém světě, která má kolem 300 000 instalací a každým dnem roste.
Jedná se o serverovou aplikaci a vyžaduje webový server, jako je Apache Tomcat. Důvodem, proč se Jenkins stal tak populárním, je sledování opakovaných úkolů, které vznikají během vývoje projektu. Například pokud váš tým vyvíjí projekt, Jenkins bude průběžně testovat vaše sestavení projektu a ukázat vám chyby v raných fázích vašeho vývoje.
Použitím Jenkins mohou softwarové společnosti urychlit proces vývoje softwaru, protože Jenkins může automatizovat vytváření a testování rychlou rychlostí. Jenkins podporuje celý životní cyklus vývoje softwaru od budování, testování, dokumentace softwaru, nasazení a dalších fází životního cyklu vývoje softwaru.
V tomto výukovém programu se naučíte
- Co je Jenkins?
- Co je to kontinuální integrace?
- Jenkinova historie
- Proč používat kontinuální integraci s Jenkinsem?
- Skutečná případová studie kontinuální integrace
- Výhody použití Jenkins
- Nevýhody používání Jenkins
Co je to kontinuální integrace?
V kontinuální integraci po potvrzení kódu je software okamžitě vytvořen a otestován. Ve velkém projektu s mnoha vývojáři jsou závazky prováděny mnohokrát během dne. S každým potvrzením je vytvořen a testován kód. Pokud je test předán, je testováno sestavení pro nasazení. Pokud je nasazení úspěšné, je kód odeslán do produkce. Toto potvrzení, sestavení, testování a nasazení je nepřetržitý proces, a proto název kontinuální integrace / nasazení.
Continuous Integration Pipeline je výkonný nástroj, který se skládá ze sady nástrojů určených k hostování , monitorování , kompilaci a testování kódu nebo změn kódu, například:
- Server pro nepřetržitou integraci (Jenkins, Bamboo, CruiseControl, TeamCity a další)
- Nástroj pro ovládání zdroje (např. CVS, SVN, GIT, Mercurial, Perforce, ClearCase a další)
- Nástroj pro sestavení (Make, ANT, Maven, Ivy, Gradle a další)
- Rámec pro automatizaci testování (Selenium, Appium, TestComplete, UFT a další)
Jenkinova historie
- Kohsuke Kawaguchi, vývojář Java, 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 vytváření a testování úkolů.
- V roce 2011 měla společnost Oracle, která vlastnila společnost Sun Microsystems, spor s komunitou open source Hudson, a tak rozdělili Hudsona a přejmenovali jej na Jenkins.
- Hudson i Jenkins pokračovali v samostatném provozu. Ale v krátkém čase získala Jenkins 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 již není udržován.
Proč používat kontinuální integraci s Jenkinsem?
Někteří lidé by si mohli myslet, že staromódní způsob vývoje softwaru je tím lepším způsobem. Pojďme pochopit výhody CI s Jenkinsem v následujícím příkladu
Představme si, že na sdíleném úložišti pracuje asi 10 vývojářů. 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 přidělené úlohy kódování, použili k odevzdání svého kódu všechny najednou. Později je Build testován a nasazen. Vytvoření kódu se zavázalo a testovací cyklus byl velmi neobvyklý a po několika dnech bylo provedeno jediné sestavení. | Kód je vytvořen a otestujte jej, jakmile jej vývojář potvrdí. Jenkin sestaví a otestuje kód mnohokrát během dne Pokud je sestavení úspěšné, Jenkins nasadí zdroj na testovací server a upozorní tým nasazení. Pokud se sestavení nezdaří, Jenkins upozorní chyby na tým vývojářů. |
Vzhledem k tomu, že kód byl vytvořen najednou, někteří vývojáři by museli čekat, 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é izolovat, detekovat a opravit chyby u více revizí. | Vzhledem k tomu, že kód je vytvořen po každém potvrzení jednoho vývojáře, je snadné zjistit, jehož kód způsobil selhání zabudovaného |
Proces sestavování a testování kódu je zcela manuální, takže existuje spousta šancí na selhání. | Automatizovaný proces sestavování a testování, který šetří načasování 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. |
Skutečná případová studie kontinuální integrace
Jsem si jistý, že všichni víte o starém telefonu Nokia. Nokia zavedla postup zvaný noční sestavení. Po několika závazcích od různých vývojářů během dne se software vytvářel každou noc. Vzhledem k tomu, že software byl vytvořen pouze jednou denně, je velkým problémem izolovat, identifikovat a opravit chyby ve velké kódové základně.
Později přijali přístup kontinuální integrace. Software byl sestaven a otestován, jakmile vývojář spáchal kód. Pokud je zjištěna jakákoli chyba, může příslušný vývojář 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 si nainstalovat pluginy související s Gitem. Ve skutečnosti je pro integraci s nástroji jako Maven, Amazon EC2 nutné do příslušných modulů Jenkins nainstalovat příslušné doplňky.
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í příspěvky od veřejnosti k vývoji projektu Jenkins.
- Zatím je uzavřeno přibližně 280 lístků a projekt vydává stabilní vydání každé tři měsíce.
- Jak technologie roste, roste i Jenkins. Doposud má Jenkins ve své databázi pluginů publikováno přibližně 320 pluginů. S pluginy se Jenkins stává ještě výkonnějším a bohatým na funkce.
- Jenkins také podporuje cloudovou architekturu, takže můžete nasadit Jenkins na cloudové platformy.
- Důvodem, proč se Jenkins stal populárním, je to, že jej vytvořil vývojář pro vývojáře.
Nevýhody používání Jenkins
Ačkoli Jenkins je velmi silný 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í.
- Ačkoli 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 k monitorování jeho činnosti.
- Jedním z důvodů, proč mnoho lidí neimplementuje Jenkins, je jeho obtížnost s instalací a konfigurací Jenkins.
- Kontinuální integrace se pravidelně přerušují kvůli malým změnám nastavení. Kontinuální integrace bude pozastavena, a proto vyžaduje určitou pozornost vývojáře.
Závěr:
- V kontinuální integraci je po potvrzení kódu software okamžitě vytvořen a otestován
- Jenkins je open source server pro kontinuální integraci schopný organizovat řetězec akcí
- Před Jenkinsem, kdy všichni vývojáři dokončili své přiřazené úkoly kódování, použili ke spáchání svého kódu všechny najednou. Později je Build testován a nasazen.
- Po Jenkins je kód vytvořen a otestujte, jakmile vývojář potvrdí kód. Jenkin vytvoří a otestuje 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 si nainstalovat pluginy související s Gitem
- Největší klady Jenkinse spočívají v tom, že je řízen komunitou, která pořádá veřejná setkání a přijímá od veřejnosti vstupy pro vývoj projektů Jenkins
- Největší výhodou Jenkin 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í.