Čo je Jenkins?
Jenkins je server kontinuálnej integrácie s otvoreným zdrojovým kódom schopný organizovať reťazec akcií, ktoré pomáhajú dosiahnuť proces kontinuálnej integrácie (nielen) automatizovaným spôsobom.
Jenkins je zadarmo a je celý napísaný v jazyku Java. Jenkins je široko používaná aplikácia na celom svete, ktorá má okolo 300 000 inštalácií a rastie každým dňom.
Je to serverová aplikácia a vyžaduje webový server, ako je Apache Tomcat. Dôvod, prečo sa Jenkins stal tak populárnym, spočíva v monitorovaní opakovaných úloh, ktoré vzniknú počas vývoja projektu. Napríklad, ak váš tím vyvíja projekt, Jenkins bude neustále testovať vaše zostavenia projektu a ukáže vám chyby v počiatočných fázach vášho vývoja.
Používaním Jenkinsa môžu softvérové spoločnosti urýchliť proces vývoja softvéru, pretože Jenkins dokáže automatizovať zostavovanie a testovanie rýchlym tempom. Spoločnosť Jenkins podporuje celý životný cyklus vývoja softvéru od výroby, testovania, dokumentovania softvéru, nasadenia a ďalších fáz životného cyklu vývoja softvéru.
V tomto návode sa naučíte
- Čo je Jenkins?
- Čo je to nepretržitá integrácia?
- Jenkinova história
- Prečo používať nepretržitú integráciu s Jenkinsom?
- Prípadová štúdia kontinuálnej integrácie v reálnom svete
- Výhody použitia Jenkins
- Nevýhody používania Jenkins
Čo je to nepretržitá integrácia?
V rámci kontinuálnej integrácie po potvrdení kódu je softvér zostavený a testovaný okamžite. Vo veľkom projekte s mnohými vývojármi sa záväzky viackrát uskutočňujú počas dňa. S každým potvrdením je kód zostavený a testovaný. Ak je test úspešný, zostavenie sa otestuje na nasadenie. Ak je nasadenie úspešné, kód sa presunie do výroby. Toto odovzdanie, zostavenie, testovanie a nasadenie je nepretržitý proces, a preto sa nazýva nepretržitá integrácia / nasadenie.
Kontinuálna integrácia je výkonný nástroj, ktorý sa skladá zo sady nástrojov určených na hosťovanie , monitorovanie , kompiláciu a testovanie kódu alebo jeho zmeny, ako napríklad:
- Server pre nepretržitú integráciu (Jenkins, Bamboo, CruiseControl, TeamCity a ďalšie)
- Nástroj na kontrolu zdrojov (napr. CVS, SVN, GIT, Mercurial, Perforce, ClearCase a ďalšie)
- Nástroj na tvorbu (Make, ANT, Maven, Ivy, Gradle a ďalšie)
- Rámec automatizačného testovania (selén, Appium, TestComplete, UFT a ďalšie)
Jenkinova história
- Kohsuke Kawaguchi, vývojára Java, pracujúceho v spoločnosti SUN Microsystems, bol unavený z vytvárania kódu a opakovaného opravovania chýb. V roku 2004 bol vytvorený automatizačný server s názvom Hudson, ktorý automatizuje vytváranie a testovanie úloh.
- V roku 2011 mala spoločnosť Oracle, ktorá vlastní spoločnosť Sun Microsystems, spor s open source komunitou Hudson, a tak rozdelili spoločnosť Hudson a premenovali ju na Jenkins.
- Hudson aj Jenkins pokračovali v samostatnej činnosti. Ale v krátkom čase získal Jenkins veľa projektov a prispievateľov, zatiaľ čo Hudson zostal iba pri 32 projektoch. Postupom času sa Jenkins stal populárnejším a Hudson už nie je udržiavaný.
Prečo používať nepretržitú integráciu s Jenkinsom?
Niektorí ľudia si môžu myslieť, že staromódny spôsob vývoja softvéru je ten lepší spôsob. Poďme pochopiť výhody CI s Jenkinsom na nasledujúcom príklade
Predstavme si, že existuje asi 10 vývojárov, ktorí pracujú na zdieľanom úložisku. Niektorí vývojári dokončia svoju úlohu za 25 dní, zatiaľ čo iným to trvá 30 dní.
Pred Jenkinsom | Po Jenkinsovi |
---|---|
Keď všetci vývojári dokončili svoje pridelené úlohy kódovania, zvykli zadávať svoj kód naraz. Neskôr je Build testovaný a nasadený. Bol zostavený program Commit a testovací cyklus bol veľmi zriedkavý a po niekoľkých dňoch bolo hotové jediné zostavenie. | Kód je zostavený a otestujte ho, hneď ako vývojár kód zadá. Jenkin zostaví a otestuje kód mnohokrát počas dňa. Ak je zostavenie úspešné, Jenkins nasadí zdroj na testovací server a upozorní tím nasadenia. Ak zostavenie zlyhá, Jenkins upozorní chyby na tím vývojárov. |
Pretože bol kód zostavený naraz, niektorí vývojári by museli počkať, kým ostatní vývojári nedokončia kódovanie, aby skontrolovali svoje zostavenie | Kód je zostavený okamžite po spáchaní ktoréhokoľvek z vývojárov. |
Nie je ľahká úloha izolovať, zistiť a opraviť chyby pri viacerých spáchaniach. | Pretože je kód zostavený po každom potvrdení jedným vývojárom, je ľahké zistiť, ktorého kód spôsobil zlyhanie zabudovaného produktu |
Proces zostavovania a testovania kódu je úplne manuálny, takže existuje veľa šancí na zlyhanie. | Automatizovaný proces zostavovania a testovania, ktorý šetrí načasovanie a znižuje chyby. |
Kód sa nasadí, keď sa opravia a otestujú všetky chyby. | Kód sa nasadzuje po každom úspešnom zostavení a testovaní. |
Vývojový cyklus je pomalý | Vývojový cyklus je rýchly. Nové funkcie sú používateľom ľahšie dostupné. Zvyšuje zisky. |
Prípadová štúdia kontinuálnej integrácie v reálnom svete
Som si istý, že všetci viete o starom telefóne Nokia. Nokia používala na implementáciu procedúry s názvom nightly build. Po niekoľkých záväzkoch od rôznych vývojárov počas dňa sa softvér vyrábal každú noc. Pretože bol softvér zostavený iba raz za deň, je veľmi náročné izolovať, identifikovať a opraviť chyby vo veľkej kódovej základni.
Neskôr prijali prístup kontinuálnej integrácie. Softvér bol zostrojený a otestovaný hneď po podpísaní kódu vývojárom. Ak sa zistí akákoľvek chyba, príslušný vývojár môže chybu rýchlo opraviť.
Jenkins Pluginy
V predvolenom nastavení je Jenkins dodávaný s obmedzenou sadou funkcií. Ak chcete integrovať svoju inštaláciu Jenkins s nástrojmi na správu verzií, ako je Git, musíte si nainštalovať doplnky súvisiace s Gitom. V skutočnosti je pre integráciu s nástrojmi ako Maven, Amazon EC2 potrebné nainštalovať príslušné doplnky do vášho Jenkins.

Výhody použitia Jenkins
- Jenkins je riadený komunitou, ktorá je veľmi otvorená. Každý mesiac usporadúvajú verejné stretnutia a prijímajú príspevky od verejnosti týkajúce sa vývoja projektu Jenkins.
- Zatiaľ je uzavretých okolo 280 lístkov a projekt zverejňuje stabilné vydanie každé tri mesiace.
- S pribúdajúcimi technológiami rastie aj Jenkins. Zatiaľ má Jenkins vo svojej databáze doplnkov zverejnených okolo 320 doplnkov. Vďaka doplnkom sa Jenkins stáva ešte výkonnejším a bohatým na funkcie.
- Jenkins tiež podporuje cloudovú architektúru, aby ste mohli nasadiť Jenkins na cloudových platformách.
- Dôvod, prečo sa Jenkins stal populárnym, je ten, že ho vytvoril vývojár pre vývojárov.
Nevýhody používania Jenkins
Aj keď je Jenkins veľmi mocný nástroj, má svoje chyby.
- Jeho rozhranie je zastarané a nie je užívateľsky prívetivé v porovnaní so súčasnými trendmi používateľského rozhrania.
- Aj keď je Jenkins milovaný mnohými vývojármi, jeho údržba nie je taká ľahká, pretože Jenkins beží na serveri a na sledovanie jeho činnosti vyžaduje určité zručnosti správcu servera.
- Jedným z dôvodov, prečo mnoho ľudí neimplementuje Jenkins, je jeho problém s inštaláciou a konfiguráciou Jenkinsa.
- Nepretržité integrácie sa pravidelne prerušujú kvôli malým zmenám nastavenia. Nepretržitá integrácia bude pozastavená, a preto si vyžaduje určitú pozornosť vývojárov.
Záver:
- V kontinuálnej integrácii je softvér po vytvorení kódu okamžite zostavený a otestovaný
- Jenkins je open source server kontinuálnej integrácie schopný organizovať reťazec akcií
- Pred Jenkinsom, keď všetci vývojári dokončili svoje pridelené úlohy kódovania, zvykli zadávať svoj kód naraz. Neskôr je Build testovaný a nasadený.
- Po Jenkinsovi je kód zostavený a otestujte ho, akonáhle ho vývojár zadá. Jenkin zostaví a otestuje kód mnohokrát počas dňa
- V predvolenom nastavení je Jenkins dodávaný s obmedzenou sadou funkcií. Ak chcete integrovať svoju inštaláciu Jenkins s nástrojmi na správu verzií, ako je Git, musíte si nainštalovať doplnky súvisiace s Gitom
- Najväčšími výhodami Jenkinsa je, že je riadený komunitou, ktorá organizuje verejné stretnutia a prijíma podnety od verejnosti pre vývoj Jenkinsových projektov.
- Najväčšou výhodou Jenkin je, že jeho rozhranie je zastarané a nie je užívateľsky prívetivé v porovnaní so súčasnými trendmi používateľského rozhrania.