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.
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
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
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.
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
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
▍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
▍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.
▍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
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?
Forrás: will.com