Battle of Jenkins és a GitLab CI/CD

Az elmúlt évtizedben jelentős előrelépések történtek a folyamatos integrációt (Continuous Integration, CI) és a folyamatos telepítést (Continuous Delivery, CD) szolgáló eszközök fejlesztésében. A szoftverfejlesztést és -üzemeltetést integráló technológiák (Development Operations, DevOps) fejlődése a CI/CD eszközök iránti kereslet gyors növekedéséhez vezetett. A meglévő megoldásokat folyamatosan fejlesztik, igyekeznek lépést tartani a korral, megjelennek új verzióik, a minőségbiztosítási szoftverek (Quality Assurance, QA) világában folyamatosan sok új termék jelenik meg. Ilyen bőséges választék mellett a megfelelő eszköz kiválasztása nem könnyű feladat.

Battle of Jenkins és a GitLab CI/CD

Az összes létező CI / CD eszköz között van két olyan projekt, amelyre mindenképpen érdemes odafigyelni, aki ezen a területen keres valamit. Jenkinsről és a GitLab CI / CD eszközről beszélünk, amely a GitLab platform része. Jenkinsnek több mint 16000 csillagok a GitHubon. A gitlab.com-on található GitLab adattár egy kicsit többet ért el 2000 csillagok. Ha összehasonlítjuk a tárolók népszerűségét, kiderül, hogy Jenkins 8-szor több csillagot ért el, mint a GitLab CI / CD-t tartalmazó platform. A CI / CD eszköz kiválasztásakor azonban ez messze nem az egyetlen mutató, amelyre figyelnie kell. Rengeteg más is létezik, és ez megmagyarázza, hogy sok összehasonlításban a Jenkins és a GitLab CI / CD nagyon közel áll egymáshoz.

Vegyük például a G2 platform adatait, amely számos termékről és a felhasználók által adott értékelésekről gyűjti össze a véleményeket. Itt az átlagos értékelés Jenkins, 288 értékelés alapján 4,3 csillagos. Ó, oh GitLab 270 vélemény van, az eszköz átlagos értékelése 4,4 csillag. Nem tévedünk, ha azt mondjuk, hogy a Jenkins és a GitLab CI / CD egyenlő feltételekkel versenyez egymással. Érdekes megjegyezni, hogy a Jenkins projekt 2011-ben jelent meg, és azóta a tesztelők kedvenc eszköze. Ugyanakkor a 2014-ben elindított GitLab CI / CD projekt nagyon magas pozícióba került, köszönhetően a platform által kínált fejlett funkcióknak.

Ha a Jenkins népszerűségéről beszélünk más hasonló platformokhoz képest, akkor megjegyezzük, hogy miután megjelent egy cikk a Travis CI és a Jenkins platformok összehasonlításáról, felmérést készítettünk. 85 felhasználó vett részt benne. A válaszadókat arra kértük, hogy válasszák ki a számukra leginkább tetsző CI/CD eszközt. A válaszadók 79%-a a Jenkinst, 5%-a a Travis CI-t választotta, és 16%-uk jelezte, hogy más eszközöket részesít előnyben.

Battle of Jenkins és a GitLab CI/CD
Szavazás eredménye

Az egyéb CI/CD eszközök közül a GitLab CI/CD-t említették leggyakrabban.

Ha komolyan gondolja a DevOps-ot, akkor gondosan ki kell választania a megfelelő eszközöket, figyelembe véve a projekt sajátosságait, költségvetését és egyéb követelményeket. A helyes választás érdekében áttekintjük a Jenkins és a GitLab CI/CD-t. Remélhetőleg ez segít a helyes választásban.

Jenkins bemutatása

Battle of Jenkins és a GitLab CI/CD
Jenkins egy jól ismert, rugalmas CI/CD eszköz, amely számos szoftverprojekttel kapcsolatos feladat automatizálására szolgál. A Jenkins teljes egészében Java nyelven íródott, és az MIT licence alatt adták ki. Hatékony funkciókészlettel rendelkezik, amelyek célja a szoftverek építésével, tesztelésével, telepítésével, integrálásával és kiadásával kapcsolatos feladatok automatizálása. Ez az eszköz különféle operációs rendszereken használható. Ide tartozik a macOS, a Windows és számos Linux disztribúció, például az OpenSUSE, az Ubuntu és a Red Hat. A Jenkins számára különféle operációs rendszerekhez vannak telepítőcsomagok, ez az eszköz telepíthető a Dockerre és minden olyan rendszerre, amely rendelkezik JRE-vel (Java Runtime Environment).

A Jenkins fejlesztői létrehoztak egy másik projektet, a Jenkins X-et, amelyet úgy terveztek, hogy Kubernetes környezetben működjön. A Jenkins X integrálja a Helmet, a Jenkins CI/CD-kiszolgálót, a Kubernetes-t és más eszközöket a DevOps bevált gyakorlatait követő CI/CD-folyamatok létrehozásához. Itt például a GitOps használatos.

A Jenkins előnyeinek kincstárát hozzátehetjük, hogy forgatókönyvei nagyon jól felépítettek, érthetőek és könnyen olvashatóak. A Jenkins csapata körülbelül 1000 plugint hozott létre, amelyek célja a Jenkins interakciójának megszervezése a legkülönbözőbb technológiákkal. A szkriptek használhatnak hitelesítési rendszereket, amelyek például lehetővé teszik a különféle zárt rendszerekhez való csatlakozást.

A Jenkins pipeline működése során megfigyelhető, hogy az egyes lépéseknél mi történik, sikeresen befejeződtek-e a munka egyes szakaszai vagy sem. Mindezt azonban megtekintheti egy bizonyos grafikus felület használata nélkül, hanem a terminál lehetőségeit kihasználva.

A Jenkins jellemzői

A Jenkins jól ismert jellemzői közé tartozik a könnyű beállítás, a különféle műveletek magas szintű automatizálása és a kiváló dokumentáció. Ha a DevOps feladatok megoldásáról beszélünk, akkor itt a Jenkins nagyon megbízható eszköznek tekinthető, amelynek használatával általában nincs értelme a projektfeldolgozás teljes folyamatának szoros figyelemmel kísérése. Más CI/CD eszközök esetében ez nem így van. Beszéljünk a Jenkins néhány legfontosabb funkciójáról.

▍1. Ingyenes, nyílt forráskódú, többplatformos támogatás

A Jenkins futhat macOS, Windows és Linux platformokon. Docker környezetben is működhet, amely lehetővé teszi az automatizált feladatok egységes és gyors végrehajtását. Ez az eszköz servletként is futhat Java-kompatibilis tárolókban, például az Apache Tomcatban és a GlassFishben. A Jenkins minőségi telepítése dokumentált.

▍2. Fejlett plugin ökoszisztéma

A Jenkins plugin ökoszisztéma sokkal érettebbnek tűnik, mint a többi CI/CD eszköz plugin ökoszisztémája. Jelenleg több mint 1500 plugin létezik a Jenkinshez. Ezek a bővítmények sokféle feladat megoldására szolgálnak, segítségükkel számos projektet automatizálhat. A rengeteg ingyenes bővítmény azt jelenti, hogy ha Jenkinst használsz, akkor nem kell drága fizetős bővítményeket vásárolnod. Van rá lehetőség integráció Jenkins sok DevOps eszközzel.

▍3. Könnyű telepítés és beállítás

A Jenkins meglehetősen könnyen telepíthető és konfigurálható. Ugyanakkor a rendszer frissítésének folyamata is nagyon kényelmes. Itt is érdemes megemlíteni a dokumentáció minőségét, hiszen abban számos, a Jenkins telepítésével és konfigurálásával kapcsolatos kérdésre találhatunk választ.

▍4. Barátságos közösség

Mint már említettük, a Jenkins egy nyílt forráskódú projekt, amelynek ökoszisztémája hatalmas számú bővítményt tartalmaz. A Jenkins körül nagy felhasználói és fejlesztői közösség alakult ki, hogy segítse a projekt fejlesztését. A közösség az egyik olyan tényező, amely Jenkins fejlődését mozgatja.

▍5. A REST API elérhetősége

A Jenkins-szel való munka során használhatja a REST API-t, amely kibővíti a rendszer képességeit. A rendszer távoli eléréséhez szükséges API három változatban érhető el: XML, JSON JSONP támogatással, Python. Itt A Jenkins REST API-val való munka részleteit bemutató dokumentációs oldal.

▍6. Feladatok párhuzamos végrehajtásának támogatása

A Jenkins támogatja a DevOps feladatok párhuzamosítását. Könnyen integrálható a megfelelő eszközökkel, és értesítéseket kaphat a feladatok eredményéről. A kódtesztelés felgyorsítható a projekt párhuzamos felépítésének megszervezésével különböző virtuális gépek használatával.

▍7. Elosztott környezetben végzett munka támogatása

A Jenkins lehetővé teszi az elosztott buildek megszervezését több számítógép használatával. Ez a funkció nagy projektekben alkalmazható, és egy munkasémát használ, amely szerint van egy mester Jenkins szerver és több szolgagép. A szolgagépek olyan helyzetekben is használhatók, amikor egy projekt tesztelését különböző környezetekben kell megszervezni. Ezek a funkciók megkülönböztetik a Jenkinst a többi hasonló projekttől.

Bevezetés a GitLabba

Battle of Jenkins és a GitLab CI/CD
GitLab CI/CD az egyik legújabb és legkedveltebb DevOps eszköznek nevezhető. Ez az ingyenes nyílt forráskódú eszköz a GitLab verziókezelő rendszerébe van beépítve. A GitLab platform közösségi verzióval rendelkezik, támogatja a repository-kezelést, a problémakövető eszközöket, a kódellenőrzés szervezését, a dokumentáció-orientált mechanizmusokat. A cégek telepíthetik a GitLabot helyileg, összekapcsolva az Active Directory-val és az LDAP-kiszolgálókkal a biztonságos felhasználói engedélyezés és hitelesítés érdekében.

Itt Egy oktatóvideó, amely segít megtanulni, hogyan hozhat létre CI/CD-folyamatokat a GitLab CI/CD-képességeivel.

A GitLab CI/CD eredetileg önálló projektként jelent meg, de 2015-ben ezt az eszközkészletet integrálták a GitLab 8.0-ba. Egyetlen GitLab CI/CD szerver több mint 25000 XNUMX felhasználót tud támogatni. Az ilyen szerverek alapján magas rendelkezésre állású rendszereket hozhat létre.

A GitLab CI/CD és a fő GitLab projekt Ruby and Go nyelven íródott. Ezeket az MIT licence alapján adják ki. A GitLab CI/CD a CI/CD eszközök szokásos szolgáltatásai mellett további funkciókat is támogat, például a munkaütemezéssel kapcsolatban.

A GitLab CI/CD integrálása egy projektbe nagyon egyszerű. A GitLab CI/CD használatakor a projektkód-feldolgozási folyamat szakaszokra oszlik, amelyek mindegyike több, meghatározott sorrendben végrehajtott feladatból állhat. A feladatok finomhangolhatók.

A feladatok párhuzamosan futhatnak. A szakaszok és feladatok sorrendjének beállítása után a CI/CD folyamat készen áll a használatra. A feladatok állapotának nyomon követésével nyomon követheti annak előrehaladását. Ennek eredményeként a GitLab CI / CD használata nagyon kényelmes, talán kényelmesebb, mint más hasonló eszközök.

A GitLab CI/CD és a GitLab jellemzői

A GitLab CI/CD az egyik legnépszerűbb DevOps-eszköz. A projektet kiváló minőségű dokumentáció jellemzi, funkciói könnyen és kényelmesen használhatók. Ha még nem ismeri a GitLab CI/CD-t, az eszköz funkcióinak alábbi listája általános képet ad arról, hogy mit várhat el tőle. Meg kell jegyezni, hogy ezen szolgáltatások közül sok magához a GitLab platformhoz kapcsolódik, amelybe a GitLab CI / CD integrálva van.

▍1. Népszerűség

A GitLab CI/CD egy viszonylag új eszköz, amely széles körben elterjedt. A GitLab CI/CD lassan egy rendkívül népszerű CI/CD eszközzé vált, amelyet automatizált tesztelésre és szoftvertelepítésre használnak. Beállítása egyszerű. Ez egy ingyenes, a GitLab platformba épített CI/CD eszköz is.

▍2. A GitLab Pages és a Jekyll támogatása

A Jekyll egy statikus webhely-generátor, amely a GitLab Pages rendszeren belül használható webhelyek létrehozására GitLab-tárhelyeken. A rendszer veszi a forrásanyagokat, és ezek alapján kész statikus oldalt generál. Az ilyen webhelyek megjelenését és funkcióit a fájl szerkesztésével szabályozhatja _config.yml, amelyet Jekyll használ.

▍3. Projekttervezési képességek

A projektek szakaszainak tervezési képességének köszönhetően a problémák és csoportjaik nyomon követésének kényelme nő. Ez lehetővé teszi a projektek megszervezésének irányítását, a megvalósításuk megtervezését egy adott időpontra.

▍4. A CI-futók automatikus skálázása

Az egyes feladatok elvégzéséért felelős futók automatikus skálázásának köszönhetően sokat spórolhat a szerverkapacitások bérlésének költségein. Ez nagyon fontos, különösen, ha olyan környezetekről van szó, ahol a projekteket párhuzamosan tesztelik. Ezenkívül ez fontos a több tárolóból álló nagy projekteknél.

▍5. Problémakövető eszközök

A GitLab hatékony problémakövetési képességei számos nyílt forráskódú projektet késztetett a platform használatára. A GitLab CI/CD lehetővé teszi a különböző kódágak párhuzamos tesztelését. A teszteredmények kényelmesen elemezhetők a rendszerfelületen. Ez megkülönbözteti a GitLab CI/CD-t Jenkinstől.

▍6. A tárolókhoz való hozzáférés korlátozása

A GitLab platform támogatja a tárolókhoz való hozzáférés korlátozását. Például azok, akik egy lerakatban együttműködnek egy projekten, a szerepkörüknek megfelelő engedélyeket kaphatnak. Ez különösen igaz a vállalati projektekre.

▍7. Aktív közösségi támogatás

A GitLab körül aktív közösség alakult ki, amely hozzájárul a platform és eszközei, különösen a GitLab CI / CD fejlesztéséhez. A GitLab CI/CD és a GitLab mély integrációja többek között megkönnyíti a válaszok megtalálását a GitLab CI/CD-vel való munka során felmerülő kérdésekre.

▍8. Különféle verziókezelő rendszerek támogatása

A GitLab CI/CD egy olyan rendszer, amely nem csak a GitLab-tárolókban tárolt kóddal tud működni. Például a kód tárolható egy GitHub tárolóban, és a CI / CD csővezeték GitLab alapján szervezhető a GitLab CI / CD segítségével.

A Jenkins és a GitLab CI/CD összehasonlítása

A Jenkins és a GitLab CI/CD nagyon jó eszközök, mindkettő képes a CI/CD folyamat zökkenőmentes működésére. De ha összehasonlítjuk őket, akkor kiderül, hogy bár sok mindenben hasonlóak, bizonyos tekintetben eltérnek egymástól.

Jellemzés
Jenkins
GitLab CI/CD

Nyílt vagy zárt forráskódú
nyílt forráskód
nyílt forráskód

Telepítés
Kívánt.
Nem szükséges, mivel ez a GitLab platform beépített funkciója.

Egyedi tulajdonságok
Plugin támogatás.
Mély integráció a verziókezelő rendszerbe.

támogatás
Hiányzik.
Elérhető.

Telepítés és konfigurálás
A nehézségek nem okoznak
A nehézségek nem okoznak

A rendszer önálló telepítése
Ez az egyetlen módja a rendszer használatának.
Támogatott.

CI/CD csővezetékek létrehozása
Támogatott, Jenkins Pipeline használatával.
Támogatott.

Alkalmazás teljesítményének figyelése
Hiányzik.
Elérhető.

Az ökoszisztéma
Több mint 1000 plugin létezik.
A rendszer fejlesztése a GitLabon belül zajlik.

API
Támogatja a fejlett API rendszert.
API-t kínál a projektekbe való mélyebb integrációhoz.

JavaScript támogatás
Elérhető.
Elérhető.

Integráció más eszközökkel
Más eszközökkel és platformokkal való integráció támogatott (Slack, GitHub).
Számos eszköz a harmadik féltől származó rendszerekkel való integrációhoz, különösen - a GitHub és a Kubernetes.

Kódminőség-ellenőrzés
Támogatott – a SonarQube beépülő modul és más bővítmények használatával.
Támogatott.

A Jenkins és a GitLab CI/CD közötti különbségek

A Jenkins és a GitLab CI/CD leírása és összehasonlítása után koncentráljunk a DevOps eszközök közötti különbségekre. E különbségek ismerete segít megérteni azokat, akik előnyben részesítik az egyik eszközt a másikkal szemben.

  • A GitLab CI/CD teljes mértékben képes vezérelni a Git adattárakat. A lerakatágak kezeléséről és néhány egyéb szolgáltatásról beszélünk. De a Jenkins, bár tud működni tárolókkal, nem biztosít olyan szintű irányítást felettük, mint a GitLab CI / CD.
  • A Jenkins egy ingyenes nyílt forráskódú projekt. Aki választja, az önállóan telepíti. És a GitLab CI / CD benne van a GitLab platformban, ez egy kulcsrakész megoldás.
  • A GitLab CI/CD támogatja a projektszinten működő fejlett feladatkezelő eszközöket. Jenkinsnek ez az oldala kevésbé fejlett.

Jenkins és GitLab CI/CD: erősségek és gyengeségek

Most már van néhány ötleted a Jenkinsről és a GitLab CI/CD-ről. Most, hogy még jobban megismerje ezeket az eszközöket, vessünk egy pillantást erősségeikre és gyengeségeikre. Feltételezzük, hogy már eldöntötte, melyik eszközre van szüksége. Remélhetőleg ez a rész lehetővé teszi, hogy tesztelje magát.

▍Jenkins erősségei

  • Nagyszámú plugin.
  • Teljes ellenőrzés a szerszámok beszerelése felett.
  • A futók egyszerű hibakeresése.
  • Könnyű csomópont beállítás.
  • Könnyű kódtelepítés.
  • Nagyon jó bizonyítványkezelő rendszer.
  • Rugalmasság és sokoldalúság.
  • Különféle programozási nyelvek támogatása.
  • A rendszer intuitív szinten érthető.

▍Jenkins gyengeségei

  • A beépülő modulok használata bonyolult lehet.
  • Ha a Jenkinst kis projektekben használja, a saját konfiguráláshoz szükséges idő indokolatlanul sok lehet.
  • A CI/CD láncokra vonatkozó általános analitikai információk hiánya.

▍A GitLab CI/CD erősségei

  • Jó integráció a Dockerrel.
  • A futók egyszerű méretezése.
  • A CI/CD folyamat szakaszainak részét képező feladatok párhuzamos végrehajtása.
  • Az irányított aciklikus gráfmodell használata feladatkapcsolatok felállításakor.
  • Magas szintű skálázhatóság a futók párhuzamos végrehajtásának lehetőségének köszönhetően.
  • Könnyű feladatok hozzáadása.
  • Egyszerű konfliktusmegoldás.
  • Megbízható biztonsági rendszer.

▍A GitLab CI/CD gyengeségei

  • Minden feladathoz le kell írnia és fel kell töltenie/le kell töltenie a műtermékeket.
  • Nem tesztelheti az ágak egyesítésének eredményeit, mielőtt azok ténylegesen összevonásra kerülnek.
  • A CI / CD folyamat szakaszainak leírásakor még nem lehet külön szakaszokat különíteni bennük.

Eredményei

A Jenkinsnek és a GitLab CI/CD-nek is vannak erősségei és gyengeségei. A válasz arra a kérdésre, hogy mit válasszunk, az adott projekt igényeitől és jellemzőitől függ. A ma áttekintett CI/CD eszközök mindegyike rendelkezik bizonyos funkciókkal, bár ezeket az eszközöket ugyanazon probléma megoldására hozták létre. Ugyanakkor a Jenkins egy önálló eszköz, a GitLab CI / CD pedig egy kóddal való együttműködésre tervezett platform része.

A CI / CD rendszer kiválasztásakor a képességei mellett érdemes figyelembe venni, hogy milyen költségekkel járhat, illetve hogy pontosan mivel szoktak dolgozni a projektet támogató DevOps mérnökök.

Milyen CI/CD eszközöket használ?

Battle of Jenkins és a GitLab CI/CD

Battle of Jenkins és a GitLab CI/CD

Forrás: will.com

Hozzászólás