Az utolsó évtizedben jelentős előrelépések történtek a folyamatos integráció (Continuous Integration, CI) és a folyamatos telepítés (Continuous Delivery, CD) eszközeinek fejlesztésében. A fejlesztés és üzemeltetés (Development Operations, DevOps) technológiáinak fejlődése gyors növekedést hozott a CI/CD eszközök iránti keresletben. A meglévő megoldásokat folyamatosan javítják, igyekezve lépést tartani az idővel, új verziók jelennek meg, a szoftverminőség-ellenőrzés (Quality Assurance, QA) világában folyamatosan számos új termék jelenik meg. Ilyen gazdag választék mellett a megfelelő eszköz kiválasztása nem könnyű feladat.
A létező CI/CD eszközök közül két projekt van, amelyre mindenképpen érdemes figyelmet fordítani, ha valaki valami ilyesmit keres. A Jenkins és a GitLab CI/CD eszközéről van szó, amely a GitLab platform részét képezi. A Jenkinsnek több mint csillag van a GitHub-on. A GitLab tárolója a gitlab.com-on alig több mint csillagot kapott. Ha összehasonlítjuk a tárolók népszerűségét, kiderül, hogy a Jenkins nyolcszor annyi csillagot gyűjtött, mint a GitLab CI/CD-t tartalmazó platform. De a CI/CD eszköz kiválasztásánál ez messze nem az egyetlen mutató, amire figyelni érdemes. Számos egyéb tényező is létezik, és ez magyarázza, hogy sok összehasonlításban a Jenkins és a GitLab CI/CD nagyon közel állnak egymáshoz.
Vegyük például a G2 platform adatait, amely a legkülönfélébb termékekről összegyűjti a felhasználók véleményeit és értékeléseit. Itt az átlagos értékelés , 288 vélemény alapján, 4,3 csillag. A másik eszköz esetében pedig, ahol 270 vélemény van, az átlagos értékelés 4,4 csillag. Nem tévedünk, ha azt állítjuk, hogy a Jenkins és a GitLab CI/CD egyenlő feltételek mellett versenyeznek egymással. Érdekes megjegyezni, hogy a Jenkins projekt 2011-ben indult, és azóta a tesztelők kedvenc eszközévé vált. Ugyanakkor a GitLab CI/CD projekt, amelyet 2014-ben indítottak, nagyon magas pozíciókat szerzett a platform által kínált korszerű lehetőségeknek köszönhetően. tett
Ha a Jenkins népszerűségét más hasonló platformokkal összehasonlítjuk, meg kell említenünk, hogy amikor publikáltuk a Travis CI és Jenkins közötti összehasonlító cikket, szavazást indítottunk. A felmérésben 85 felhasználó vett részt. A válaszadóknak azt a CI/CD eszközt kellett kiválasztaniuk, amelyik a legjobban tetszik nekik. A válaszadók 79%-a a Jenkins-t, 5%-a a Travis CI-t, 16%-a pedig más eszközöket választott.

A felmérés eredményei
A többi CI/CD eszköz közül leggyakrabban a GitLab CI/CD-t emelték ki.
Ha komolyan foglalkozik a DevOps-szal, akkor alaposan el kell döntenie, hogy mely eszközöket választja, figyelembe véve a projekt sajátosságait, költségvetését és más követelményeket. Annak érdekében, hogy segítsünk Önnek a helyes döntés meghozatalában, elemezni fogjuk a Jenkins és a GitLab CI/CD előnyeit és hátrányait. Reméljük, hogy ez segíteni fog Önnek az optimális választásban.
Ismerkedés a Jenkinnel

— egy széleskörűen elismert, rugalmas CI/CD eszköz, amely a szoftverprojektekhez kapcsolódó feladatok automatizálására készült. A Jenkins teljes egészében Java nyelven készült, MIT licenc alatt érhető el. Erős képességekkel rendelkezik a buildelés, tesztelés, telepítés, integráció és szoftverkiadás automatizálására. Ez az eszköz különböző operációs rendszerekben használható, mint például a macOS, Windows és számos Linux disztribúció, például — OpenSUSE, Ubuntu és Red Hat. A Jenkinshez különböző operációs rendszerekhez készült telepítőcsomagok állnak rendelkezésre, az eszköz a Dockerben is telepíthető, valamint bármely olyan rendszeren, ahol JRE (Java Runtime Environment) elérhető.
A Jenkins fejlesztői létrehoztak egy másik projektet is, a Jenkins X-et, amely Kubernetes környezetben való működésre van optimalizálva. A Jenkins X integrálja a Helm-et, a Jenkins CI/CD szervert, a Kubernetes-t, valamint más eszközöket, amelyek a DevOps legjobb gyakorlatait követő CI/CD pipeline-ok létrehozására szolgálnak. Például itt GitOps-t használnak.
A Jenkins előnyei között említhetjük, hogy a szkriptek nagyon jól strukturáltak, érthetőek és könnyen olvashatók. A Jenkins csapata körülbelül 1000 plugint hozott létre, amelyek a Jenkins különböző technológiákkal való összekapcsolására szolgálnak. A szkriptekben használhatók az autentikációs rendszerek is, ami például lehetővé teszi a különböző zárt rendszerekhez való csatlakozást.
A Jenkins folyamata során figyelemmel kísérhetjük, mi történik minden egyes lépésnél, és hogy sikeresen befejeződtek-e a munkafázisok. Mindezt figyelemmel kísérhetjük, anélkül, hogy grafikus felületet kellene használnunk, hanem a terminál lehetőségeit kihasználva.
A Jenkins jellemzői
A Jenkins széles körben ismert jellemzői közé tartozik a könnyű beállítás, a különböző műveletek magas szintű automatizálása és a kiváló dokumentáció. A DevOps feladatok megoldása szempontjából a Jenkins megbízható eszköznek számít, amelynek használata során általában nincs szükség arra, hogy közelről figyeljük a projekt feldolgozásának teljes folyamatát. Más CI/CD eszközök esetében ez nem így van. Beszéljünk néhány fontos Jenkins lehetőségről.
▍1. Ingyenes, nyílt forráskód, sok platform támogatása
A Jenkins működhet a macOS, Windows és Linux platformokon. Docker környezetben is képes futni, ami lehetővé teszi az automatizált feladatok egységes és gyors végrehajtását. Ez az eszköz szervletként is futtatható Java támogató tárolókban, mint például az Apache Tomcat és a GlassFish. A Jenkins telepítése kiválóan .
▍2. Fejlett bővítmény ökoszisztéma
A Jenkins bővítmény ökoszisztémája sokkal fejlettebb a többi CI/CD eszköz bővítőmodul ökoszisztémáinál. Jelenleg több mint 1500 bővítmény érhető el Jenkinshez. Ezek a bővítmények széles spektrumú feladatok megoldására irányulnak, lehetővé téve a különböző projektek automatizálását. A szabadon elérhető bővítmények gazdag választéka azt jelenti, hogy a Jenkins felhasználói számára nincs sürgető szükség drága, fizetős bővítmények vásárlására. Lehetőség van a Jenkins számos DevOps eszközzel való integrálására.
▍3. Könnyű telepítés és beállítás
A Jenkins meglehetősen egyszerűen telepíthető és beállítható. A rendszerefrissítési folyamat is nagyon kényelmesen van megoldva. Említést érdemel a dokumentáció minősége, mivel sokféle kérdésre választ találhatunk a Jenkins telepítésével és beállításával kapcsolatban.
▍4. Barátságos közösség
Ahogy már említettük, a Jenkins egy nyílt forráskódú projekt, amelynek ökoszisztémája hatalmas számú plugint tartalmaz. A Jenkins körül egy nagy felhasználói és fejlesztői közösség alakult ki, amely segíti a projekt fejlődését. A közösség az egyik tényező, amely hozzájárul a Jenkins fejlődéséhez.
▍5. REST API megléte
A Jenkins használata során elérhető a REST API, amely bővíti a rendszer lehetőségeit. A rendszerhez való távoli hozzáférés API-ja három változatban érhető el: XML, JSON JSONP támogatással és Python. a Jenkins REST API működéséről szóló részletes dokumentációs oldal.
▍6. Feladatok párhuzamos végrehajtásának támogatása
A Jenkins támogatja a DevOps feladatok párhuzamos végrehajtását. Könnyen integrálható a megfelelő eszközökkel, és értesítéseket kaphat a feladatok végrehajtásának eredményeiről. A kód tesztelésének végrehajtását felgyorsíthatja a projekt párhuzamos összeállításának megszervezésével különböző virtuális gépek használatával.
▍7. Támogatás elosztott környezetekben
A Jenkins lehetővé teszi elosztott összeállítások szervezését több számítógép felhasználásával. Ez a lehetőség nagy projektek esetén alkalmazható, és azon a schemán alapul, amely szerint van egy fő Jenkins szerver és több alárendelt gép. Az alárendelt gépek olyan helyzetekben is használhatók, amikor a projekt tesztelését különböző környezetekben kell megszervezni. Ezek a lehetőségek kedvezően megkülönböztetik a Jenkinst más hasonló projektektől.
Bevezetés a GitLabba

az egyik legújabb és legkedveltebb eszköz a DevOps mérnökök számára. Ez az ingyenes nyílt forráskódú eszköz be van építve a GitLab verziókezelő rendszerbe. A GitLab platformnak van egy community verziója, amely támogatja a repositoryk kezelését, problémakövetési eszközöket, kódellenőrzés szervezését, valamint olyan mechanizmusokat, amelyek a dokumentáció készítésére összpontosítanak. A vállalatok helyben telepíthetik a GitLabot, összekötve ezt a rendszert az Active Directoryval és LDAP szerverekkel a felhasználók biztonságos azonosítása és hitelesítése érdekében.
egy videóútmutató, amely segít abban, hogy megtudja, hogyan hozhat létre CI/CD csővezetékeket a GitLab CI/CD lehetőségeinek felhasználásával.
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. Egy külön GitLab CI/CD szerver több mint 25 000 felhasználó működését is képes támogatni. Az ilyen szerverek alapján olyan rendszerek hozhatók létre, amelyek magas rendelkezésre állással rendelkeznek.
A GitLab CI/CD és a fő GitLab projekt Ruby és Go nyelven készült. MIT licenc alatt kerültek kiadásra. A GitLab CI/CD, a szokásos CI/CD eszközök készségei mellett, támogatja a munkák ütemezésével kapcsolatos további funkciókat is.
A GitLab CI/CD integrálása a projekthez rendkívül egyszerű. A GitLab CI/CD használatakor a projekt kódjának feldolgozási folyamata szakaszokra oszlik, amelyek mindegyike több feladatot tartalmazhat, amelyeket meghatározott sorrendben kell végrehajtani. A feladatok finomhangolhatók.
A feladatok párhuzamosan is végrehajthatók. A CI/CD folyamat szakaszainak és feladatainak beállítása után a CI/CD csővezeték készen áll a működésre. A végrehajtás menetét a feladatok állapotának nyomon követésével lehet figyelni. Ennek eredményeként a GitLab CI/CD használata rendkívül 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 projekt kiváló dokumentációval rendelkezik, funkciói könnyen és kényelmesen használhatóak. Ha még nem ismeri a GitLab CI/CD-t, a következő funkciók listája általános képet ad arról, mit várhat el tőle. Meg kell említeni, hogy sok ezek közül a funkciók közvetlenül kapcsolódnak magához a GitLab platformhoz, amelybe integrálva van a GitLab CI/CD.
▍1. Népszerűség
A GitLab CI/CD egy viszonylag új eszköz, amely széles körben elterjedt. A GitLab CI/CD fokozatosan rendkívül népszerű CI/CD eszközzé vált, amelyet automatizált tesztelésre és szoftverek telepítésére használnak. Könnyen beállítható. Ez ráadásul ingyenes CI/CD eszköz, amely beépítve elérhető a GitLab platformon.
▍2. GitLab Pages és Jekyll támogatás
A Jekyll egy statikus weboldalgenerátor, amelyet a GitLab Pages keretében lehet használni GitLab tárolók alapján weboldalak készítésére. A rendszer átveszi az alapanyagokat, és ezek alapján generál egy kész statikus weboldalt. Az ilyen weboldalak megjelenését és funkcióit a _config.yml fájl szerkesztésével lehet kezelni. _config.yml, amelyet Jekyll használ.
▍3. Projekttervezési lehetőségek
A projektelemek tervezésére való lehetőség növeli a problémák és azok csoportosításának nyomon követésének kényelmét. Ez lehetővé teszi a projectmunka szervezését és a konkrét dátumra való teljesítést.
▍4. CI-futtatók automatikus skálázása
Az automatikus skálázásnak köszönhetően, amely a konkrét feladatok végrehajtásáért felelős futtatókat illeti, jelentős költségmegtakarítást lehet elérni a szerverkapacitás bérlésén. Ez különösen fontos, ha a tesztelési folyamatok párhuzamosan zajlanak. Ezenkívül fontos nagy projektek esetén, amelyek több repozitóriumból állnak.
▍5. Problémakövető eszközök
A GitLab hatékony problémakövető lehetőségei miatt sok nyílt forráskódú projekt használja ezt a platformot. A GitLab CI/CD lehetővé teszi a különböző kódágak párhuzamos tesztelését. A tesztelési eredmények kényelmesen elemezhetők a rendszer felületén. Ez kedvezően megkülönbözteti a GitLab CI/CD-t a Jenkinstől.
▍6. Hozzáférési korlátozások a repozitóriumokhoz
A GitLab platform támogatja a repozitóriumokhoz való hozzáférési korlátozásokat. Például azoknak, akik közösen dolgoznak egy projekten egy adott repozitóriumban, olyan jogokat lehet rendelni, amelyek megfelelnek a szerepüknek. Ez különösen releváns a vállalati projektek esetében.
▍7. Aktív közösségi támogatás
A GitLab körül aktív közösség alakult ki, amely elősegíti a platform és annak eszközeinek fejlődését, különösen a GitLab CI/CD-t. A GitLab CI/CD és a GitLab közötti mély integráció megkönnyíti a GitLab CI/CD használata során felmerülő kérdésekre adott válaszok megtalálását.
▍8. Támogatás különböző verziókezelő rendszerekhez
A GitLab CI/CD olyan rendszer, amely nemcsak a GitLab repozitóriumokban tárolt kódokkal képes dolgozni. Például a kód tárolható GitHub repozitóriumban, míg a CI/CD folyamat a GitLab alapjain valósítható meg a GitLab CI/CD használatával.
Jenkins és GitLab CI/CD összehasonlítása
A Jenkins és a GitLab CI/CD nagyon jó eszközök, amelyek mindegyike biztosítani tudja a CI/CD folyamat normális működését. De ha összehasonlítjuk őket, kiderül, hogy noha sokszor hasonlítanak, néhány jellemzőjük eltér egymástól.
Jellemzők
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
Szükséges.
Nem szükséges, mivel ez a GitLab platform beépített funkciója.
Egyedi jellemzők
Plugin támogatás.
Mély integráció a verziókezelő rendszerbe.
Támogatás
Hiányzik.
Elérhető.
Telepítés és beállítás
Nem okoz nehézséget
Nem okoz nehézséget
A rendszer önálló telepítése
Ez az egyetlen felhasználási lehetőség a rendszer számára.
Támogatott.
CI/CD csövek létrehozása
Támogatott, Jenkins Pipeline-t használ.
Támogatott.
Alkalmazások teljesítményének figyelése
Hiányzik.
Elérhető.
Ökoszisztéma
Több mint 1000 plugin létezik.
A rendszer a GitLab keretein belül fejlődik.
API
Fejlett API rendszert támogat.
API-t kínál a projektek mélyebb integrációjára.
JavaScript támogatás
Elérhető.
Elérhető.
Integráció más eszközökkel
Integráció más eszközökkel és platformokkal (Slack, GitHub) támogatott.
Számos eszköz a külső rendszerek integrációjára, különösen a GitHub és a Kubernetes esetében.
Kódminőség ellenőrzés
Támogatott - a SonarQube plugin és más pluginok segítségével.
Támogatott.
Különbségek a Jenkins és a GitLab CI/CD között
Most, hogy összehasonlítottuk a Jenkins-t a GitLab CI/CD-vel, fókuszáljunk e DevOps eszközök eltéréseire. A különbségek tudása segít megérteni, aki az egyik eszközt a másikkal szemben preferálja.
- A GitLab CI/CD teljes mértékben ellenőrizheti a Git tárolókat. Ez a tárolók ágainak kezelésére és más lehetőségekre vonatkozik. A Jenkins ugyan tud dolgozni a tárolókkal, de nem nyújt olyan szintű ellenőrzést felettük, mint a GitLab CI/CD.
- A Jenkins egy ingyenes, nyílt forráskódú projekt. Aki ezt választja, az saját magának telepíti. A GitLab CI/CD pedig a GitLab platform része, kész megoldást kínál.
- A GitLab CI/CD fejlett feladatkezelő eszközöket támogat, amelyek projekt szinten működnek. A Jenkins ezen a téren gyengébben fejlődött.
Jenkins és GitLab CI/CD: erősségek és gyengeségek
Most, hogy van némi elképzelésed a Jenkinsről és a GitLab CI/CD-ről, nézzük meg jobban ezeknek az eszközöknek az erősségeit és gyengeségeit. Reméljük, hogy már eldöntötted, melyik eszközt választanád. Bízunk benne, hogy ez a rész segít az önértékelésben.
▍Jenkins erősségei
- Sok plugin.
- Teljes ellenőrzés az eszköz telepítése felett.
- Egyszerű futtatók hibakeresése.
- Egyszerű csomópontok beállítása.
- Kód egyszerű telepítése.
- Nagyon jó hitelesítési rendszer.
- Rugalmasság és sokoldalúság.
- Támogatás különböző programozási nyelvekhez.
- A rendszer intuitívan érthető.
▍Jenkins gyenge pontjai
- A bővítmények használata során nehézségek léphetnek fel.
- Kis projektek esetén a Jenkins önálló beállításához szükséges idő, indokoltan magasnak bizonyulhat.
- Nincsenek átfogó elemző információk a CI/CD láncokról.
▍GitLab CI/CD erősségei
- Jó integráció a Dockerrel.
- Egyszerűsített futtatók skálázása.
- A CI/CD csővezeték szakaszaiba tartozó feladatok párhuzamos végrehajtása.
- Feladatok közötti kapcsolatok beállításakor orientált aciklikus gráf modellt alkalmaznak.
- Magas szintű skálázhatóság a futtatók párhuzamos végrehajtásának lehetősége révén.
- Feladatok hozzáadásának könnyűsége.
- Konfliktusok egyszerű feloldása.
- Megbízható biztonsági rendszer.
▍GitLab CI/CD gyenge pontjai
- Minden feladat esetében le kell írni, és fel kell tölteni/letölteni az artefaktumokat.
- A branch-összevonások eredményeit nem lehet tesztelni azok tényleges összevonása előtt.
- A CI/CD csővezeték szakaszainak leírásakor nem lehet különálló fázisokat kiemelni.
Összegzés
Mind a Jenkins, mind a GitLab CI/CD erősségekkel és gyengeségekkel rendelkezik. A választás arra vonatkozóan, hogy mit válasszunk, a konkrét projekt igényeitől és jellemzőitől függ. A ma megvizsgált CI/CD eszközök mindegyike eltérő tulajdonságokkal bír, bár ezen eszközök célja ugyanaz: a feladat megoldása. A Jenkins egy önálló eszköz, míg a GitLab CI/CD a kódkollaborációs platform része.
CI/CD rendszer választásakor nemcsak a képességeit, hanem a vele kapcsolatos költségeket is figyelembe kell venni, valamint azt, hogy a DevOps mérnökök mivel dolgoztak korábban a projekt támogatásakor.
Milyen CI/CD eszközöket használsz?
Forrás: habr.com
