Bitka o Jenkins a GitLab CI/CD

V poslednom desaťročí došlo k výraznému pokroku vo vývoji nástrojov pre nepretržitú integráciu (Continuous Integration, CI) a nepretržité nasadzovanie (Continuous Delivery, CD). Vývoj technológií na integráciu vývoja a prevádzky softvéru (Development Operations, DevOps) viedol k rýchlemu nárastu dopytu po nástrojoch CI/CD. Existujúce riešenia sa neustále zdokonaľujú, snažia sa držať krok s dobou, vychádzajú ich nové verzie, vo svete softvéru na zabezpečenie kvality (Quality Assurance, QA) sa neustále objavuje množstvo nových produktov. Pri takom bohatom výbere nie je výber správneho nástroja jednoduchou úlohou.

Bitka o Jenkins a GitLab CI/CD

Medzi všetkými existujúcimi nástrojmi CI / CD sú dva projekty, ktoré určite stoja za pozornosť niekomu, kto hľadá niečo z tejto oblasti. Hovoríme o Jenkinsovi a nástroji GitLab CI / CD, ktorý je súčasťou platformy GitLab. Jenkins má viac ako 16000 hviezdy na GitHub. Úložisko GitLab na gitlab.com zabodovalo o niečo viac 2000 hviezdy. Ak porovnáme popularitu repozitárov, ukáže sa, že Jenkins získal 8-krát viac hviezdičiek ako platforma, ktorá zahŕňa GitLab CI / CD. Pri výbere nástroja CI / CD to však zďaleka nie je jediný ukazovateľ, ktorému by ste mali venovať pozornosť. Existuje mnoho ďalších, a to vysvetľuje, prečo v mnohých porovnaniach majú Jenkins a GitLab CI / CD veľmi blízko k sebe.

Vezmime si napríklad údaje z platformy G2, ktorá zhromažďuje recenzie na širokú škálu produktov a hodnotenia, ktoré im používatelia dávajú. Tu je priemerné hodnotenie Jenkins, na základe 288 recenzií, má 4,3 hviezdičiek. Oh, oh GitLab existuje 270 recenzií, priemerné hodnotenie tohto nástroja je 4,4 hviezdičiek. Nebudeme sa mýliť, keď povieme, že Jenkins a GitLab CI / CD si navzájom konkurujú za rovnakých podmienok. Zaujímavosťou je, že projekt Jenkins sa objavil v roku 2011 a odvtedy je obľúbeným nástrojom testerov. Zároveň však projekt GitLab CI / CD, ktorý bol spustený v roku 2014, zaujal svoju pozíciu, veľmi vysokú, vďaka pokročilým funkciám, ktoré táto platforma ponúka.

Ak hovoríme o popularite Jenkins v porovnaní s inými podobnými platformami, poznamenávame, že sme po uverejnení článku porovnávajúceho platformy Travis CI a Jenkins zorganizovali prieskum. Zúčastnilo sa ho 85 užívateľov. Respondenti mali vybrať nástroj CI/CD, ktorý sa im páči najviac. 79 % si vybralo Jenkins, 5 % si vybralo Travis CI a 16 % uviedlo, že uprednostňuje iné nástroje.

Bitka o Jenkins a GitLab CI/CD
Výsledky ankety

Spomedzi ostatných CI/CD nástrojov sa najčastejšie spomínal GitLab CI/CD.

Ak to s DevOps myslíte vážne, potom musíte starostlivo vybrať vhodné nástroje, berúc do úvahy špecifiká projektu, jeho rozpočet a ďalšie požiadavky. Aby sme vám pomohli urobiť správnu voľbu, preskúmame Jenkins a GitLab CI/CD. Dúfame, že vám to pomôže urobiť správnu voľbu.

Úvod do Jenkinsa

Bitka o Jenkins a GitLab CI/CD
Jenkins je známy flexibilný nástroj CI/CD určený na automatizáciu mnohých úloh súvisiacich so softvérovými projektmi. Jenkins je napísaný výlučne v jazyku Java a je vydaný pod licenciou MIT. Má výkonnú sadu funkcií zameraných na automatizáciu úloh spojených s vytváraním, testovaním, nasadzovaním, integráciou a uvoľňovaním softvéru. Tento nástroj je možné použiť v rôznych operačných systémoch. Patria sem macOS, Windows a mnohé distribúcie Linuxu, ako napríklad OpenSUSE, Ubuntu a Red Hat. Existujú inštalačné balíčky pre Jenkins určené pre rôzne OS, tento nástroj je možné nainštalovať na Docker a na akýkoľvek systém, ktorý má JRE (Java Runtime Environment).

Vývojári Jenkins vytvorili ďalší projekt, Jenkins X, ktorý je navrhnutý pre prácu v prostredí Kubernetes. Jenkins X integruje Helm, Jenkins CI/CD Server, Kubernetes a ďalšie nástroje na vytváranie kanálov CI/CD, ktoré sa riadia osvedčenými postupmi DevOps. Používa sa tu napríklad GitOps.

Do pokladnice výhod Jenkinsa možno pridať aj fakt, že jeho skriptá sú veľmi dobre štruktúrované, zrozumiteľné a ľahko čitateľné. Tím Jenkins vytvoril asi 1000 doplnkov, ktoré sú zamerané na organizáciu interakcie Jenkins so širokou škálou technológií. Skripty môžu využívať autentifikačné systémy, čo vám napríklad umožňuje pripojiť sa k rôznym uzavretým systémom.

Počas prevádzky ropovodu Jenkins môžete sledovať, čo sa deje na každom kroku, či boli určité etapy práce dokončené úspešne alebo nie. To všetko však môžete sledovať bez použitia určitého grafického rozhrania, ale s využitím možností terminálu.

Vlastnosti Jenkinsa

Medzi dobre známe funkcie Jenkins patrí jednoduché nastavenie, vysoká úroveň automatizácie rôznych operácií a vynikajúca dokumentácia. Ak hovoríme o riešení úloh DevOps, potom je Jenkins považovaný za veľmi spoľahlivý nástroj, pomocou ktorého spravidla nemá zmysel pozorne sledovať celý proces spracovania projektu. Toto nie je prípad iných nástrojov CI/CD. Poďme sa porozprávať o niektorých najdôležitejších funkciách Jenkinsa.

▍1. Bezplatná, open source, multiplatformová podpora

Jenkins môže bežať na platformách MacOS, Windows a Linux. Môže fungovať aj v prostredí Docker, ktoré vám umožňuje organizovať jednotné a rýchle vykonávanie automatizovaných úloh. Tento nástroj môže bežať aj ako servlet v kontajneroch s podporou Java, ako sú Apache Tomcat a GlassFish. Kvalitatívne inštalácia Jenkins zdokumentované.

▍2. Vyvinutý ekosystém doplnkov

Ekosystém doplnkov Jenkins sa zdá byť oveľa vyspelejší ako ekosystémy doplnkov iných nástrojov CI/CD. V súčasnosti existuje viac ako 1500 doplnkov pre Jenkins. Tieto pluginy sú zamerané na riešenie širokého spektra úloh, s ich pomocou môžete automatizovať rôzne projekty. Množstvo bezplatných doplnkov, z ktorých si môžete vybrať, znamená, že ak používate Jenkins, nemusíte kupovať drahé platené doplnky. Existuje možnosť integrácia Jenkins s mnohými nástrojmi DevOps.

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

Jenkins sa pomerne ľahko inštaluje a konfiguruje. Zároveň je proces aktualizácie systému tiež veľmi pohodlný. Tu opäť stojí za zmienku kvalita dokumentácie, pretože v nej môžete nájsť odpovede na rôzne otázky týkajúce sa inštalácie a konfigurácie Jenkins.

▍4. Priateľská komunita

Ako už bolo spomenuté, Jenkins je open source projekt, ktorého ekosystém zahŕňa obrovské množstvo pluginov. Okolo Jenkinsa sa vytvorila veľká komunita používateľov a vývojárov, ktorí pomáhajú pri vývoji projektu. Komunita je jedným z faktorov, ktoré poháňajú vývoj Jenkinsa.

▍5. Dostupnosť REST API

Pri práci s Jenkinsom môžete využiť REST API, ktoré rozširuje možnosti systému. API pre vzdialený prístup do systému je prezentované v troch verziách: XML, JSON s podporou JSONP, Python. Tu Stránka dokumentácie s podrobnosťami o práci s Jenkins REST API.

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

Jenkins podporuje paralelizáciu úloh DevOps. Dá sa jednoducho integrovať s príslušnými nástrojmi a dostávať upozornenia o výsledkoch úloh. Testovanie kódu je možné urýchliť zorganizovaním paralelného zostavenia projektu pomocou rôznych virtuálnych strojov.

▍7. Podpora pre prácu v distribuovaných prostrediach

Jenkins vám umožňuje organizovať distribuované zostavy pomocou viacerých počítačov. Táto funkcia je použiteľná vo veľkých projektoch a využíva schému práce, podľa ktorej existuje jeden hlavný server Jenkins a niekoľko podriadených strojov. Slave stroje sa dajú využiť aj v situáciách, kedy je potrebné organizovať testovanie projektu v rôznych prostrediach. Tieto vlastnosti odlišujú Jenkinsa od iných podobných projektov.

Úvod do GitLab

Bitka o Jenkins a GitLab CI/CD
GitLab CI/CD možno nazvať jedným z najnovších a najobľúbenejších nástrojov DevOps. Tento bezplatný open source nástroj je zabudovaný do systému správy verzií GitLab. Platforma GitLab má komunitnú verziu, podporuje správu úložísk, nástroje na sledovanie problémov, organizáciu kontroly kódu, mechanizmy orientované na dokumentáciu. Spoločnosti môžu inštalovať GitLab lokálne a prepojiť ho so servermi Active Directory a LDAP pre bezpečnú autorizáciu a autentifikáciu používateľov.

Tu Video tutoriál, ktorý vám pomôže naučiť sa vytvárať kanály CI/CD pomocou funkcií GitLab CI/CD.

GitLab CI/CD bol pôvodne vydaný ako samostatný projekt, ale v roku 2015 bola táto sada nástrojov integrovaná do GitLab 8.0. Jediný server GitLab CI/CD môže podporovať viac ako 25000 XNUMX používateľov. Na základe takýchto serverov môžete vytvárať systémy, ktoré sú vysoko dostupné.

GitLab CI/CD a hlavný projekt GitLab sú napísané v Ruby and Go. Sú uvoľnené pod licenciou MIT. GitLab CI/CD okrem bežných funkcií nástrojov CI/CD podporuje aj ďalšie funkcie súvisiace napríklad s plánovaním práce.

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 etapy, z ktorých každá môže pozostávať z niekoľkých úloh vykonávaných v určitom poradí. Úlohy sa dajú doladiť.

Úlohy môžu prebiehať paralelne. Po nastavení postupnosti etáp a úloh je potrubie CI/CD pripravené na spustenie. Jeho priebeh môžete sledovať sledovaním stavu úloh. V dôsledku toho je používanie GitLab CI / CD veľmi pohodlné, možno pohodlnejšie ako iné podobné nástroje.

Funkcie GitLab CI/CD a GitLab

GitLab CI/CD je jedným z najpopulárnejších nástrojov DevOps. Projekt sa vyznačuje vysoko kvalitnou dokumentáciou, jeho funkcie sú jednoduché a pohodlné na používanie. Ak ešte nie ste oboznámení s GitLab CI/CD, 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í súvisia so samotnou platformou GitLab, v ktorej je GitLab CI / CD integrovaný.

▍1. Popularita

GitLab CI/CD je relatívne nový nástroj, ktorý našiel široké využitie. GitLab CI/CD sa pomaly stal veľmi populárnym nástrojom CI/CD používaným na automatizované testovanie a nasadzovanie softvéru. Jeho nastavenie je jednoduché. Je to tiež bezplatný nástroj CI/CD zabudovaný do platformy GitLab.

▍2. Podpora pre stránky GitLab a Jekyll

Jekyll je generátor statických stránok, ktorý možno použiť v rámci systému stránok GitLab na vytváranie stránok založených na úložiskách GitLab. Systém vezme zdrojové materiály a na ich základe vygeneruje hotovú statickú stránku. Úpravou súboru môžete ovládať vzhľad a funkcie takýchto stránok _config.yml, ktorú používa Jekyll.

▍3. Možnosti plánovania projektu

Vďaka schopnosti plánovať fázy projektov sa zvyšuje pohodlie sledovania problémov a ich skupín. To vám umožňuje riadiť organizáciu práce na projektoch, plánovať ich realizáciu na konkrétny dátum.

▍4. Automatické škálovanie CI bežcov

Vďaka automatickému škálovaniu bežcov zodpovedných za vykonávanie konkrétnych úloh môžete výrazne ušetriť na nákladoch na prenájom kapacít servera. Je to veľmi dôležité, najmä pokiaľ ide o prostredia, kde sa projekty testujú paralelne. Okrem toho je to dôležité pre veľké projekty pozostávajúce z niekoľkých úložísk.

▍5. Nástroje na sledovanie problémov

Výkonné funkcie GitLab na sledovanie problémov viedli k používaniu platformy mnoho open source projektov. GitLab CI/CD umožňuje paralelné testovanie rôznych vetiev kódu. Výsledky testov sú pohodlne analyzované v rozhraní systému. To odlišuje GitLab CI/CD od Jenkinsa.

▍6. Obmedzenie prístupu k úložiskám

Platforma GitLab podporuje obmedzenie prístupu k úložiskám. Napríklad tým, ktorí spolupracujú na projekte v úložisku, môžu byť priradené povolenia zodpovedajúce ich rolám. To platí najmä pre firemné projekty.

▍7. Aktívna podpora komunity

Okolo GitLabu sa rozvinula aktívna komunita, ktorá prispieva k rozvoju tejto platformy a jej nástrojov, najmä GitLab CI/CD. Hlboká integrácia GitLab CI/CD a GitLab okrem iného uľahčuje hľadanie odpovedí na otázky, ktoré vznikajú pri práci s GitLab CI/CD.

▍8. Podpora rôznych systémov na správu verzií

GitLab CI/CD je systém, ktorý dokáže pracovať s viac než len kódom hosteným v repozitároch GitLab. Napríklad kód môže byť uložený v úložisku GitHub a kanál CI / CD môže byť organizovaný na základe GitLab pomocou GitLab CI / CD.

Porovnanie Jenkins a GitLab CI/CD

Jenkins a GitLab CI/CD sú veľmi dobré nástroje, ktoré oba dokážu zabezpečiť hladký chod potrubia CI/CD. No ak ich porovnáme, ukáže sa, že hoci sú si v mnohom podobné, v niečom sa od seba líšia.

Charakterizácia
Jenkins
GitLab CI/CD

Otvorený zdroj alebo uzavretý zdroj
open source
open source

Inštalácia
Požadovaný.
Nevyžaduje sa, pretože ide o vstavanú funkciu platformy GitLab.

Unikátne vlastnosti
Podpora pluginov.
Hlboká integrácia do systému správy verzií.

Podpora
Chýba.
Dostupné.

Inštalácia a konfigurácia
Ťažkosti nespôsobujú
Ťažkosti nespôsobujú

Samonasadenie systému
Toto je jediný spôsob použitia systému.
Podporované.

Vytváranie CI/CD potrubí
Podporované pomocou Jenkins Pipeline.
Podporované.

Monitorovanie výkonu aplikácie
Chýba.
Dostupné.

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

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

podpora JavaScriptu
Dostupné.
Dostupné.

Integrácia s inými nástrojmi
Podporovaná je integrácia s inými nástrojmi a platformami (Slack, GitHub).
Mnoho nástrojov na integráciu so systémami tretích strán, najmä s GitHub a Kubernetes.

Kontrola kvality kódu
Podporované – pomocou doplnku SonarQube a ďalších doplnkov.
Podporované.

Rozdiely medzi Jenkinsom a GitLab CI/CD

Po opísaní a porovnaní Jenkinsa a GitLab CI/CD sa zamerajme na rozdiely medzi týmito nástrojmi DevOps. Poznanie týchto rozdielov vám pomôže pochopiť tých, ktorí uprednostňujú jeden z týchto nástrojov pred druhým.

  • GitLab CI/CD dokáže plne ovládať úložiská Git. Hovoríme o správe vetiev úložiska a niektorých ďalších funkciách. Ale Jenkins, hoci dokáže pracovať s repozitármi, neposkytuje nad nimi rovnakú úroveň kontroly ako GitLab CI / CD.
  • Jenkins je bezplatný open source projekt. Ten, kto si ho vyberie, ho nasadí samostatne. A GitLab CI / CD je súčasťou platformy GitLab, ide o riešenie na kľúč.
  • GitLab CI/CD podporuje pokročilé nástroje na správu úloh, ktoré fungujú na úrovni projektu. Táto stránka Jenkinsa je menej rozvinutá.

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

Teraz máte nejakú predstavu o Jenkinsovi a GitLab CI/CD. Aby ste sa s týmito nástrojmi ešte lepšie zoznámili, poďme sa pozrieť na ich silné a slabé stránky. Predpokladáme, že ste sa už rozhodli, ktorý nástroj potrebujete. Dúfajme, že táto časť vám umožní otestovať sa.

▍ Silné stránky Jenkinsa

  • Veľké množstvo pluginov.
  • Plná kontrola nad inštaláciou nástroja.
  • Jednoduché ladenie bežcov.
  • Jednoduché nastavenie uzla.
  • Jednoduché nasadenie kódu.
  • Veľmi dobrý systém správy poverení.
  • Flexibilita a všestrannosť.
  • Podpora rôznych programovacích jazykov.
  • Systém je zrozumiteľný na intuitívnej úrovni.

▍ Slabé stránky Jenkinsa

  • Používanie doplnkov môže byť zložité.
  • Pri používaní Jenkins v malých projektoch môže byť čas potrebný na jeho vlastnú konfiguráciu neprimerane dlhý.
  • Nedostatok všeobecných analytických informácií o reťazcoch CI/CD.

▍Silné stránky GitLab CI/CD

  • Dobrá integrácia s Dockerom.
  • Jednoduché škálovanie bežcov.
  • Paralelné vykonávanie úloh, ktoré sú súčasťou etáp CI/CD pipeline.
  • Použitie modelu orientovaného acyklického grafu pri nastavovaní vzťahov úloh.
  • Vysoká úroveň škálovateľnosti vďaka možnosti paralelného vykonávania bežcov.
  • Jednoduché pridávanie úloh.
  • Jednoduché riešenie konfliktov.
  • Spoľahlivý bezpečnostný systém.

▍ Slabé stránky GitLab CI/CD

  • Pre každú úlohu musíte popísať a nahrať / stiahnuť artefakty.
  • Nemôžete testovať výsledky zlučovania vetiev skôr, ako sa skutočne zlúčia.
  • Pri popise etáp potrubia CI / CD zatiaľ nie je možné v nich vyčleniť jednotlivé stupne.

Výsledky

Jenkins aj GitLab CI/CD majú silné a slabé stránky. Odpoveď na otázku, čo si vybrať, závisí od potrieb a vlastností konkrétneho projektu. Každý z dnes recenzovaných nástrojov CI/CD má určité funkcie, hoci tieto nástroje boli vytvorené na riešenie rovnakého problému. Zároveň je Jenkins samostatný nástroj a GitLab CI / CD je súčasťou platformy určenej na spoluprácu na kóde.

Pri výbere systému CI / CD sa okrem jeho možností oplatí vziať do úvahy aj náklady, ktoré s ním môžu byť spojené, a s čím presne zvyknú pracovať inžinieri DevOps, ktorí projekt podporujú.

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

Bitka o Jenkins a GitLab CI/CD

Bitka o Jenkins a GitLab CI/CD

Zdroj: hab.com

Pridať komentár