Bitka medzi Jenkins a GitLab CI/CD

V poslednej dekáde boli dosiahnuté významné pokroky v oblasti vývoja nástrojov pre kontinuálnu integráciu (Continuous Integration, CI) a kontinuálne dodávanie (Continuous Delivery, CD). Rozvoj technológie DevOps viedol k rýchlemu nárastu dopytu po CI/CD nástrojoch. Existujúce riešenia sa neustále zlepšujú a snažia sa držať krok s dobou, vydávajú sa nové verzie a v oblasti kontroly kvality softvéru (Quality Assurance, QA) neustále vznikajú nové produkty. Pri tak bohatom výbere býva nájdenie vhodného nástroja náročnou úlohou.

Bitka medzi Jenkins a GitLab CI/CD

Medzi všetkými existujúcimi CI/CD nástrojmi sú dva projekty, na ktoré by sa mal určite zamerať každý, kto hľadá niečo v tejto oblasti. Ide o Jenkins a nástroj GitLab CI/CD, ktorý je súčasťou platformy GitLab. Jenkins má viac ako 16000 hviezd na GitHub. Repozitár GitLab na gitlab.com získal o niečo viac ako 2000 hviezd. Ak porovnáme popularitu repozitárov, uvidíme, že Jenkins získal 8-krát viac hviezd než platforma, ktorá obsahuje GitLab CI/CD. Ale pri výbere CI/CD nástroja to nie je jediný faktor, na ktorý by sme mali dbať. Existuje množstvo ďalších, a to vysvetľuje, prečo sa v mnohých porovnaniach Jenkins a GitLab CI/CD ocitajú veľmi blízko seba.

Vezmime si napríklad údaje z platformy G2, ktorá zhromažďuje recenzie na rôzne produkty a hodnotenia, ktoré im dávajú používatelia. Tu je priemerné hodnotenie Jenkins, vypočítané na základe 288 recenzií, 4,3 hviezdy. A o GitLab tu je 270 recenzií, priemerné hodnotenie tohto nástroja je 4,4 hviezdy. Nebudeme sa mýliť, ak povieme, že Jenkins a GitLab CI/CD sú si navzájom silnými konkurentmi. Zaujímavé je, že projekt Jenkins sa objavil v roku 2011 a od tej doby je obľúbeným nástrojom testerov. Napriek tomu projekt GitLab CI/CD, spustený v roku 2014, si získal veľmi vysoké postavenie vďaka pokrokovým možnostiam, ktoré táto platforma ponúka.

Ak hovoríme o popularite Jenkins v porovnaní s inými podobnými platformami, spomenieme, že sme zverejnili článok, v ktorom sme porovnávali platformy Travis CI a Jenkins, a usporiadali prieskum. Zúčastnilo sa ho 85 používateľov. Respondentom bolo navrhnuté vybrať CI/CD nástroj, ktorý sa im páči najviac. 79% vybralo Jenkins, 5% zvolilo Travis CI a 16% uviedlo, že preferujú iné nástroje.

Bitka medzi Jenkins a GitLab CI/CD
Výsledky prieskumu

Medzi inými CI/CD nástrojmi sa najčastejšie spomínal GitLab CI/CD.

Ak sa seriózne zaoberáte DevOps, musíte si starostlivo vyberať vhodné nástroje, pričom zohľadníte špecifiká projektu, jeho rozpočet a ďalšie požiadavky. Aby sme vám pomohli správne sa rozhodnúť, plánujeme vykonať analýzu Jenkins a GitLab CI/CD. Veríme, že to pomôže urobiť správne rozhodovanie.

Zoznámte sa s Jenkins

Bitka medzi Jenkins a GitLab CI/CD
Jenkins — je to široko známy, flexibilný CI/CD nástroj určený na automatizáciu mnohých úloh súvisiacich s programovými projektmi. Jenkins je plne napísaný v Jave a vydaný pod licenciou MIT. Má silnú sadu funkcií zameraných na automatizáciu úloh týkajúcich sa zostavovania, testovania, nasadenia, integrácie a vydávania softvéru. Tento nástroj je možné používať v rôznych operačných systémoch, medzi ktoré patrí macOS, Windows a množstvo distribúcií Linuxu, ako napríklad OpenSUSE, Ubuntu a Red Hat. Existujú inštalačné balíčky Jenkins určené pre rôzne OS, tento nástroj sa dá nainštalovať aj v Docker a v akejkoľvek sústave, kde je JRE (Java Runtime Environment).

Vývojári Jenkins vytvorili ďalší projekt, Jenkins X, ktorý je určený na prácu v prostredí Kubernetes. V Jenkins X sú integrované Helm, server Jenkins CI/CD, Kubernetes a ďalšie nástroje určené na vytváranie CI/CD pipeline zodpovedajúcich najlepším praktikám DevOps. Napríklad sa tu používa GitOps.

K výhodám Jenkins patrí aj to, že jeho skripty sú veľmi dobre štruktúrované, zrozumiteľné, ľahko sa čítajú. Tím Jenkins vytvoril asi 1000 pluginov, ktoré sú zamerané na organizáciu interakcie Jenkins s rôznymi technológiami. V skriptoch je možné využiť autentifikačné systémy, čo napríklad umožňuje pripojiť sa k rôznym uzavretým systémom.

Počas chodu Jenkins konveyor môžete sledovať, čo sa deje na každom jeho kroku, či už sa rôzne fázy práce úspešne ukončili alebo nie. Všetko toto je možné sledovať, hoci nie je potrebné používať grafické rozhranie, stačí využívať možnosti terminálu.

Zvláštnosti Jenkins

Medzi dobre známymi zvláštnosťami Jenkins možno spomenúť jednoduchosť nastavenia, vysokú úroveň automatizácie rôznych operácií a vynikajúcu dokumentáciu. Pokiaľ ide o riešenie DevOps úloh, Jenkins sa považuje za veľmi spoľahlivý nástroj, pri ktorom zvyčajne nie je potrebné dôkladne sledovať celý proces spracovania projektu. V prípade iných CI/CD nástrojov to nemusí platiť. Poďme sa porozprávať o niektorých najdôležitejších možnostiach Jenkins.

▍1. Bezplatnosť, otvorený zdroj, podpora mnohých platforiem

Jenkins môže fungovať na platformách macOS, Windows a Linux. Môže tiež pracovať v prostredí Docker, čo umožňuje jednotné a rýchle vykonávanie automatizovaných úloh. Tento nástroj môže byť navyše spustený ako servlet v kontajneroch, ktoré podporujú Java, ako sú Apache Tomcat a GlassFish. Inštalácia Jenkins je kvalitne dokumentovaná.

▍2. Rozvinutá ekosystém pluginov

Ekosystém pluginov Jenkins sa javí ako omnoho rozvinutejší v porovnaní s ekosystémami pripojiteľných modulov iných CI/CD nástrojov. V súčasnosti existuje viac ako 1500 pluginov pre Jenkins. Tieto pluginy sú zamerané na riešenie širokého spektra úloh, pomocou ktorých je možné automatizovať rôzne projekty. Bohatstvo voľby bezplatných pripojiteľných modulov znamená, že používateľ Jenkins nepotrebuje plytvať peniazmi na drahé platené pluginy. Existuje možnosť integrácie Jenkins s množstvom DevOps nástrojov.

▍3. Jednoduchá inštalácia a nastavenie

Jenkins je pomerne jednoduché nainštalovať a nastaviť. Proces aktualizácie systému je tiež veľmi pohodlný. Opäť je potrebné spomenúť kvalitu dokumentácie, ktorá poskytuje odpovede na rôzne otázky týkajúce sa inštalácie a nastavenia Jenkins.

▍4. Priaznivé spoločenstvo

Ako už bolo povedané, Jenkins je open-source projekt, ktorého ekosystém zahŕňa veľké množstvo pluginov. Okolo Jenkinsu sa vytvorilo veľké spoločenstvo používateľov a vývojárov, ktorí prispievajú k rozvoju projektu. Spoločenstvo je jedným z faktorov, ktoré prispievajú k rozvoju Jenkinsu.

▍5. Prítomnosť REST API

Pri práci s Jenkinsom je možné využiť REST API, ktoré rozširuje možnosti systému. API na vzdialený prístup k systému je dostupné v troch variantoch: XML, JSON s podporou JSONP a Python. Tu sú stránka dokumentácie, ktorá podrobne popisuje prácu s REST API Jenkinsu.

▍6. Podpora paralelného vykonávania úloh

Jenkins podporuje paralelizáciu DevOps úloh. Je ho možné jednoducho integrovať s príslušnými nástrojmi a dostávať upozornenia o výsledkoch vykonávania úloh. Vykonávanie testovania kódu je možné urýchliť organizovaním paralelného zostavenia projektu s využitím rôznych virtuálnych strojov.

▍7. Podpora práce v distribuovaných prostrediach

Jenkins umožňuje organizovať distribuované zostavenia s využitím viacerých počítačov. Táto možnosť je aplikovateľná na veľké projekty a využíva schému práce, v ktorej existuje jeden hlavný server Jenkins a niekoľko podriadených strojov. Podriadené stroje môžu byť použité aj v situáciách, kde je potrebné organizovať testovanie projektu v rôznych prostrediach. Tieto možnosti výhodne odlišujú Jenkins od iných podobných projektov.

Zoznámenie s GitLabom

Bitka medzi Jenkins a GitLab CI/CD
GitLab CI/CD je možné nazvať jedným z najnovších a najobľúbenejších nástrojov medzi DevOps inžiniermi. Tento bezplatný open-source nástroj je integrovaný do systému správy verzií GitLab. Platforma GitLab má community verziu, ktorá podporuje správu repozitárov, nástroje na sledovanie problémov, organizáciu code review a mechanizmy zamerané na vytváranie dokumentácie. Firmy môžu nainštalovať GitLab lokálne, prepojením tohto systému s Active Directory a LDAP servermi na organizáciu bezpečnej autorizácie a autentizácie používateľov.

Tu sú video návod, ktorý vám pomôže zistiť, ako vytvárať CI/CD pipeline s využitím možností GitLab CI/CD.

Na začiatku bol GitLab CI/CD vydaný ako samostatný projekt, ale v roku 2015 bol tento súbor nástrojov integrovaný do GitLab 8.0. Samostatný server GitLab CI/CD môže podporovať viac ako 25000 používateľov. Na základe takýchto serverov je možné vytvárať systémy s vysokou dostupnosťou.

GitLab CI/CD a hlavný projekt GitLab sú napísané v Ruby a Go. Sú vydané pod licenciou MIT. GitLab CI/CD, okrem bežných možností CI/CD nástrojov, podporuje aj ďalšie funkcie, ktoré sú napríklad spojené s plánovaním úloh.

Integrácia GitLab CI/CD do projektu je veľmi jednoduchá. Pri použití GitLab CI/CD je proces spracovania kódu projektu rozdelený na fázy, pričom každá z nich môže pozostávať z niekoľkých úloh vykonávaných v určenom poradí. Úlohy sú prispôsobiteľné.

Úlohy môžu byť vykonávané paralelne. Po nastavení poradia fáz a úloh je CI/CD potrubie pripravené na prácu. Sledovanie priebehu jeho vykonávania je možné pozorovaním stavu úloh. V dôsledku toho je používanie GitLab CI/CD veľmi pohodlné, azda pohodlnejšie ako pri iných podobných nástrojoch.

Vlastnosti GitLab CI/CD a GitLab

GitLab CI/CD je jedným z najpopulárnejších DevOps nástrojov. Projekt sa vyznačuje kvalitnou dokumentáciou, jeho možnosti sú ľahko a pohodlne použiteľné. Ak sa s GitLab CI/CD zatiaľ nezapoznali, nasledujúci zoznam funkcií tohto nástroja vám poskytne všeobecnú predstavu o tom, čo od neho môžete očakávať. Je potrebné poznamenať, že mnohé z týchto funkcií sa týkajú samotnej platformy GitLab, do ktorej je GitLab CI/CD integrovaný.

▍1. Popularita

GitLab CI/CD je relatívne nový nástroj, ktorý si našiel široké uplatnenie. GitLab CI/CD sa postupne stal mimoriadne populárnym CI/CD nástrojom používaným na automatizované testovanie a nasadzovanie softvéru. Je jednoducho nastaviteľný. Okrem toho je to bezplatný CI/CD nástroj zabudovaný do platformy GitLab.

▍2. Podpora GitLab Pages a Jekyll

Jekyll je generátor statických stránok, ktorý sa dá použiť v rámci systému GitLab Pages na vytváranie stránok založených na GitLab repozitároch. Systém berie pôvodné materiály a na ich základe generuje hotovú statickú stránku. Spravovať vzhľad a funkcie takýchto stránok možno editovaním súboru _config.yml, používaný Jekyll.

▍3. Možnosti plánovania projektov

Vďaka možnostiam plánovania fáz projektov sa zvyšuje komfort sledovania problémov a ich skupín. To umožňuje efektívne riadenie projektových prác a plánovanie ich vykonania na konkrétny termín.

▍4. Automatické škálovanie CI-runnerov

Automatické škálovanie runnerov, zodpovedných za vykonávanie konkrétnych úloh, môže výrazne znížiť náklady na prenájom serverových kapacít. To je obzvlášť dôležité, ak ide o prostredia, kde sa testovanie projektov vykonáva paralelne. Okrem toho je to dôležité pre veľké projekty, ktoré pozostávajú z niekoľkých repozitárov.

▍5. Nástroje na sledovanie problémov

Silné možnosti GitLab na sledovanie problémov spôsobili, že túto platformu využíva mnoho open-source projektov. GitLab CI/CD umožňuje paralelné testovanie rôznych vetiev kódu. Výsledky testovania sa pohodlne analyzujú v rozhraní systému. Toto je významná výhoda GitLab CI/CD oproti Jenkinsu.

▍6. Obmedzenie prístupu k repozitárom

Platforma GitLab podporuje obmedzenie prístupu k repozitárom. Napríklad tým, ktorí spoločne pracujú na projekte v istom repozitári, môžu byť pridelené práva zodpovedajúce ich rolám. To je obzvlášť aktuálne pre firemné projekty.

▍7. Aktívna podpora komunity

Okolo GitLab sa vytvorila aktívna komunita, ktorá podporuje rozvoj tejto platformy a jej nástrojov, predovšetkým GitLab CI/CD. Hlboká integrácia GitLab CI/CD s GitLabom, okrem iného, uľahčuje hľadanie odpovedí na otázky, ktoré vznikajú pri práci s GitLab CI/CD.

▍8. Podpora práce s rôznymi systémami riadenia verzií

GitLab CI/CD je systém, ktorý dokáže pracovať nielen so kódom umiestneným v repozitároch GitLab. Napríklad, kód môže byť uložený v GitHub repozitári a CI/CD pipeline môže byť organizovaná na báze GitLab s využitím GitLab CI/CD.

Porovnanie Jenkins a GitLab CI/CD

Jenkins a GitLab CI/CD sú veľmi dobré nástroje, z ktorých každý je schopný zabezpečiť bezproblémovú funkciu CI/CD pipeline. Avšak, ak ich porovnáme, zistíme, že aj keď sú si v mnohom podobné, predsa len sa v niečom od seba líšia.

Charakteristika
Jenkins
GitLab CI/CD

Otváraný alebo uzavretý kód
Otváraný kód
Otváraný kód

Inštalácia
Požaduje.
Nie je potrebné, keďže ide o vstavanú funkciu platformy GitLab.

Jedinečné vlastnosti
Podpora pluginov.
Hlboká integrácia do systému správy verzií.

Podpora
Chýba.
Je prítomná.

Inštalácia a nastavenie
Nespôsobujú žiadne ťažkosti
Nespôsobujú žiadne ťažkosti

Samostatné nasadenie systému
Toto je jediná možnosť využitia systému.
Podporované.

Vytváranie CI/CD potrubí
Podporované, využíva sa Jenkins Pipeline.
Podporované.

Monitorovanie výkonu aplikácií
Chýba.
Je prítomná.

Ekosystém
Existuje viac ako 1000 pluginov.
Systém sa vyvíja v rámci GitLab.

API
Podporuje vyspelý systém API.
Ponúka API pre hlbšiu integráciu do projektov.

Podpora JavaScriptu
Je prítomná.
Je prítomná.

Integrácia s inými nástrojmi
Podporuje integráciu s inými nástrojmi a platformami (Slack, GitHub).
Množstvo prostriedkov na integráciu so systémami tretích strán, najmä s GitHub a Kubernetes.

Kontrola kvality kódu
Podporované - pomocou pluginu SonarQube a iných pluginov.
Podporované.

Rozdiely medzi Jenkins a GitLab CI/CD

Po opise a porovnaní Jenkins a GitLab CI/CD sa sústreďme na rozdiely týchto DevOps nástrojov. Znalosť týchto rozdielov umožní pochopiť tých, ktorí preferujú jeden z týchto nástrojov pred druhým.

  • GitLab CI/CD môže plne ovládať Git repozitáre. Ide o správu vetiev repozitárov a o niektoré ďalšie možnosti. Na druhej strane, Jenkins, aj keď dokáže pracovať s repozitármi, neposkytuje rovnakú úroveň kontroly nad nimi ako GitLab CI/CD.
  • Jenkins je bezplatný open-source projekt. Ten, kto si ho vyberie, ho nasadzuje samostatne. GitLab CI/CD je súčasťou platformy GitLab, je to hotové riešenie.
  • GitLab CI/CD podporuje vyspelé prostriedky správy úloh, ktoré fungujú na úrovni projektov. Táto stránka Jenkins je menej rozvinutá.

Jenkins a GitLab CI/CD: silné a slabé stránky

Teraz máte istú predstavu o Jenkins a GitLab CI/CD. Teraz, aby ste sa ešte lepšie zoznámili s týmito nástrojmi, poďme sa zaoberať ich silnými a slabými stránkami. Dúfame, že ste už prijali rozhodnutie, ktorý konkrétny nástroj potrebujete. Dúfame, že táto časť vám umožní overiť sa.

▍Silné stránky Jenkins

  • Veľké množstvo pluginov.
  • Úplná kontrola nad inštaláciou nástroja.
  • Jednoduché ladenie runnerov.
  • Jednoduché nastavenie uzlov.
  • Jednoduché nasadenie kódu.
  • Veľmi dobrý systém správy údajov.
  • Flexibilita a univerzálnosť.
  • Podpora rôznych programovacích jazykov.
  • Systém je intuitívne zrozumiteľný.

▍Slabé stránky Jenkins

  • Pri používaní pluginov sa môžu vyskytnúť ťažkosti.
  • Pri používaní Jenkins v malých projektoch môžu byť časové náklady na jeho vlastnú konfiguráciu neospravedlniteľne vysoké.
  • Nedostatok všeobecných analytických informácií o CI/CD reťazcoch.

▍Silné stránky GitLab CI/CD

  • Dobrá integrácia s Dockerom.
  • Jednoduché škálovanie runnerov.
  • Paralelné vykonávanie úloh v rámci CI/CD pipeline.
  • Použitie modelu orientovaného acyklického grafu pri nastavovaní vzťahov medzi úlohami.
  • Vysoká úroveň škálovateľnosti vďaka možnosti paralelného vykonávania runnerov.
  • Jednoduchosť pridávania úloh.
  • Jednoduché riešenie konfliktov.
  • Spoľahlivý systém bezpečnosti.

▍Slabé stránky GitLab CI/CD

  • Pre každú úlohu je potrebné opisovať a nahrávať/vyťahovať artefakty.
  • Nie je možné otestovať výsledky zlúčenia vetiev pred ich skutočným zlúčením.
  • Pri popise fáz CI/CD pipeline zatiaľ nie je možné vyčleniť samostatné etapy.

Zhrnutie

Oba nástroje Jenkins aj GitLab CI/CD majú silné a slabé stránky. Odpoveď na otázku, čo si vybrať, závisí od potrieb a špecifík konkrétneho projektu. Každý z dnes diskutovaných CI/CD nástrojov sa líši určitými vlastnosťami, aj keď tieto nástroje boli vytvorené na riešenie tej istej úlohy. Jenkins je samostatný nástroj, zatiaľ čo GitLab CI/CD je súčasťou platformy určené na spoluprácu na kóde.

Pri výbere CI/CD systému stojí za to, okrem jeho možností, zvážiť aj náklady, ktoré s ním môžu súvisieť, a to, s čím sa už devops inžinieri, ktorí projekt podporujú, naučili pracovať.

Aké CI/CD nástroje používate?

Bitka medzi Jenkins a GitLab CI/CD

Bitka medzi Jenkins a GitLab CI/CD

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster