A szoftverfejlesztés egy utazás. A tervezéssel, elemzéssel, tervezéssel, fejlesztéssel, teszteléssel, telepítéssel és karbantartással kezdődik. A szoftverfejlesztőknek különféle eszközökre van szükségük ezen az úton.
A GitLab CI és a Jenkins a folyamatos integráció és szállítás (CI/CD) résében a legnagyobb nevek közé tartozik. A CI/CD a szoftverfejlesztést automatizáló folyamatok összessége.
Ez a GitLab kontra Jenkins cikk meghatározza az egyes eszközöket, elmagyarázza az egyes eszközök működését, és összehasonlítja a legfontosabb jellemzőket.
Tartalomjegyzék
Mi az a GitLab CI?
A GitLab Continuous Integration and Delivery egy DevOps-eszköz, amely automatizálja a kód felépítéséhez, teszteléséhez és üzembe helyezéséhez szükséges lépéseket az éles környezetben.
A GitLab CI két részből áll; Folyamatos integráció (CI) és Continous Delivery/Deployment (CD).
A Continuous Integration feladata az összes build automatizálása. Ez a funkció a kód áttekintésén keresztül is visszajelzést ad, és automatizálja a kód biztonsági és minőségi tesztjeit. Végül a CI létrehoz egy kiadási csomagot, amelyet az éles környezetben telepíthet.
A GitLab CI Continuous Deployment bitje automatikusan biztosítja az infrastruktúrát, valamint kezeli a jegykezelést, az infrastruktúra módosításait és a kiadás verziószámát. A CD progresszív kódtelepítési környezetet kínál, és lehetővé teszi az összes végrehajtott változtatás ellenőrzését és nyomon követését. Ez a funkció azt is lehetővé teszi a felhasználóknak, hogy szükség esetén visszaállítsák a változtatásokat.
A két szolgáltatás kombinálásával minimális kézi beavatkozással automatizálhatja a teljes szoftverfejlesztési életciklust (SDLC).
Dióhéjban a GitLab CI-t megszokták;
- Tárolja és kezelje a kódot
- Automatizálja a CI/CD folyamatot
- Nyomon követési problémák
- Biztonsági kód
- Együttműködés
A GitLab CI használatának előnyei
- Megnövelt sebesség: A GitLab CI használatakor többé nem kell manuális folyamatokon keresztül mennie, például a kód létrehozásán, tesztelésén és telepítésén.
- Továbbfejlesztett kódminőség: A GitLab CI-vel rögzítheti a kódban lévő hibákat, mielőtt azok élesre kerülnének.
- Biztonságos: A GitLab CI különféle biztonsági funkciókkal rendelkezik, mint például a sebezhetőség-ellenőrzés, a titkos kezelés és a kódellenőrzés a hackelési fenyegetések csökkentése érdekében.
- Rugalmas: A GitLab CI-t testreszabhatja fejlesztőcsapata igényeinek megfelelően. Ezt az eszközt főbb nyelvekkel és keretrendszerekkel használhatja.
- Automatizált tesztelés: Nem kell manuálisan futtatnia a teszteket, mivel szkripteket írhat a tesztek automatikus írásához és végrehajtásához.
Mi az a Jenkins?
A Jenkins egy bővíthető automatizálási szerver. Ez a nyílt forráskódú eszköz segít a felhasználóknak a Continuous Integration és Continuous Delivery (CI/CD) folyamatok kezelésében és felépítésében. A Jenkins a DevOps és a szoftvermérnökök kedvenc eszköze, mivel segít javítani a szoftver minőségét, megbízhatóságát és sebességét.
Jenkins egy sor „munkát” vagy lépést hajt végre. Egy feladat több lépésből áll, amelyeket egymás után hajtanak végre. A Jenkins egyik lépése lehet egy összeállítás, tesztelés, telepítés vagy bármilyen más olyan feladat, amely automatizálható a szoftverfejlesztés életciklusában.
A Jenkins felhasználási módjai a következőkben foglalhatók össze;
- Folyamatos integráció
- Folyamatos szállítás
- Automatizált tesztelés
- Monitoring és jelentéstétel
- Kód szkennelés
- Munkabeosztás
A Jenkins használatának előnyei
- Skálázható: A Jenkinst kis és nagy alkalmazásokkal is használhatja.
- Egyszerű konfiguráció: A Jenkins egyszerű konfigurációs folyamattal rendelkezik, amelyet elegendő erőforrás támogat.
- Nagy közösség: A Jenkins közel két évtizede létezik, és sok követőt vonzott.
- Különféle bővítmények: Javíthatja a Jenkins funkcionalitását a bővítmények széles választékával.
- Lehetővé teszi a párhuzamos munkavégzést: A Jenkins segítségével különböző feladatokat hajthat végre egyszerre, így időt takaríthat meg.
A GitLab CI és a Jenkins hasonlóságai
- Mindkettő támogatja a folyamatos integrációt és a folyamatos szállítást.
- Mindkettő nyílt forráskódú eszköz.
- Mindkettőnek nagy közössége és követője van.
- Mindkettő számos nyelvet és keretrendszert támogat
- Mindkettő automatizálja a szoftverfejlesztés életciklusának különböző feladatait
- Mindkettő rendelkezik bővítmények és bővítmények nagy ökoszisztémájával
GitLab CI vs. Jenkins: A szolgáltatások összehasonlítása
FunkcióGitLab CIJenkinsNyílt forráskód Igen Igen Nyelvtámogatás Sok nyelv Sok nyelv Árképzés A legtöbb szolgáltatás elérhető az ingyenes csomagban. Az eszköz fizetős csomagokkal is rendelkezik több funkcióval. Egy újabb platform; 2014-ben jött létre.Érettség Egy újabb platform; 2014-ben jött létre. A Jenkins Hudson néven indult, de 2011-ben elágazták és átkeresztelték Jenkinsre. Könnyű használat Könnyen használható Kezdők számára bonyolult lehet.HostingBelső és külsőBelső és külső előfeltételekNode.JS, Git, Ruby, GoJava Runtime Environment
GitLab CI vs. Jenkins: Részletes összehasonlítás
Annak ellenére, hogy a GitLab és a Jenkins hasonlóságokat mutat, a kettő eltérő különbségeket mutat, amelyek befolyásolják a CI/CD folyamat kezelését. Ezek a főbb területek;
Építészet
A Jenkins master-worker architektúrát alkalmaz a buildek kezeléséhez.
- A Jenkins mester ütemezi a munkafelépítéseket, és kiosztja azokat a dolgozóknak a tényleges végrehajtáshoz. Ez a funkció figyeli a dolgozók állapotát, összegyűjti és összesíti az összes összeállítási eredményt a webes irányítópulton.
- A Jenkins worker egy távoli gépen futó Java futtatható fájl. Ez az összeállítási ügynökként is ismert szolgáltatás figyeli a mestertől érkező összes kérést, és végrehajtja azokat. Legfeljebb 100-nál több csomópontja lehet, és tetszés szerint hozzáadhat vagy eltávolíthat dolgozókat.
A GitLab CI része a GitLabnak, amely egy webalapú felület a tárolók kezeléséhez, az összevonási kérelmek és még sok más kezeléséhez. A GitLab CI különféle összetevőket tartalmaz;
- A GitLab CI/CD eszköz lehetővé teszi a buildek kezelését.
- A GitLab Runners végrehajtja az összes CI-feladatot. Ez a könnyű folyamat futhat a felhőben vagy a gépén.
- A CI/CD Pipeline konfigurációk a .gitlab-ci.yml fájlban vannak meghatározva. Ez a fájl meghatározza az összes munkát, szakaszt és lépést a folyamatban.
Beépülő modulok
A Jenkinsnek több mint 1800 közösségi hozzájárulása van. Ezek a beépülő modulok különböző területeket fednek le, például projektek felépítését, telepítését és automatizálását. A felhasználók testreszabhatják CI/CD-folyamataikat, és kiterjeszthetik a Jenkins funkcionalitását.
A fejlesztők egyedi bővítményeket hozhatnak létre a Jenkins kiterjedt dokumentációjának segítségével. Beépülő modulokat is készíthetnek, és hozzáadhatják őket Jenkins könyvtárához. A Jenkinsnek nagy és aktív közössége van, amely segít bővítmények létrehozásában.
A GitLab CI lehetővé teszi a külső szolgáltatások csatlakoztatását/integrációját a továbbfejlesztett funkcionalitás érdekében. Beépülő moduljai/kiterjesztési könyvtára kisebb a Jenkinshez képest, de növekszik. Mivel a GitLab CI a GitLab része, számos beépített funkcióval rendelkezik.
A felhasználók testreszabhatják/konfigurálhatják munkafolyamataikat a .gitlab-ci.yml fájl segítségével. Megadhatja az összes munkát, szakaszt és lépést.
Csővezetékek
A Jenkins lehetővé teszi deklaratív és parancsfájl-folyamat szintaxis használatát is. A két megközelítés bármelyikét használhatja webes felhasználói felülettel vagy Jenkinsfile-lel. Ez utóbbi a legelőnyösebb. A folyamatokat Jenkins-fájlként tárolhatja a forráskódot tároló lerakatban. A platform beépített web-alapú grafikus felhasználói felülettel érkezik, ahol figyelemmel kísérheti és megjelenítheti a végrehajtásokat.
A GitLab CI rendelkezik egy .gitlab-ci.yml fájllal, amely meghatározza az összes folyamatot. Ez az YML-alapú konfigurációs fájl a projekt gyökérkönyvtárában van tárolva. A gitlab-ci.yml egyszerű szintaxisáról ismert, számos parancsot és előre definiált kulcsszavakat tartalmaz, amelyek lefedik a leggyakoribb CI/CD feladatokat. A GitLab CI integrálódik más GitLab-funkciókkal, lehetővé téve a forráskód-kezelést, a problémák nyomon követését, a kódellenőrzést, az egyesítési kérelmeket és még sok minden mást.
A Jenkins telepítése
A Jenkins számítógépre történő telepítése előtt Java Runtime Environment (JRE) szükséges. Az operációs rendszertől függően töltse le a Java-t a hivatalos webhelyről. Ubuntut fogok használni a telepítési folyamat bemutatására.
Ha másik operációs rendszert használ, tekintse meg a Jenkins telepítéséről szóló cikkünket, és kövesse a felsorolt lépéseket.
Ubuntu esetén kövesse az alábbi lépéseket;
1. lépés: Ellenőrizze, hogy a JRE telepítve van-e. Futtassa ezt a parancsot:
java -version
Ha telepítve van, akkor valami ehhez hasonló lesz:
Telepítettem a „17.0.6” verziót, de lehet ennél magasabb verzió is.
2. lépés: Ezzel a paranccsal importálja a GPG kulcsot a rendszerébe;
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
3. lépés: Adja hozzá a Jenkins szoftvertárát ezzel a paranccsal;
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
4. lépés: Frissítse rendszerét ezzel a paranccsal:
sudo apt update
5. lépés: Telepítse a Jenkinst ezzel a paranccsal:
sudo apt install jenkins -y
6. lépés: Ellenőrizze, hogy a Jenkins telepítve van-e ezzel a paranccsal:
sudo systemctl status jenkins
Ha telepítve van, valami ehhez hasonlót fog látni:
A kilépéshez és a következő lépésre lépéshez nyomja le a ctrl+z billentyűkombinációt.
7. lépés: Módosítsa a tűzfalat és a Jenkins-t a rendszeren. Használja ezt a parancsot:
sudo ufw allow 8080
8. lépés: Ellenőrizze az állapotot
sudo ufw status
9. lépés: Ha az előző lépésben az állapot „Inaktív”, engedélyezze a következő paranccsal:
sudo ufw enable
10. lépés: Nyissa meg a Jenkinst a böngészőben úgy, hogy beírja ezt a böngészőbe;
http://localhost:8080
11. lépés: Szerezze meg a „Rendszergazda jelszó” parancsot a következő parancs futtatásával:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
12. lépés: Oldja fel Jenkinst
Másolja ki a terminálon megjelenő jelszót, illessze be a 10. lépésben megnyitott „Rendszergazdai jelszó” párbeszédpanelt, és nyomja meg a „Folytatás” gombot.
Az új ablak felkéri a bővítmények telepítésére. Mivel jelenleg nincs szüksége sok bővítményre, kiválaszthatja az alapértelmezetteket, és továbbléphet a következő lépésre
13. lépés: Hozza létre fiókját, majd „mentse és folytassa”.
14. lépés: Állítsa be az azonnali konfigurációt, és kezdje el a Jenkins használatát
A GitLab CI telepítése
A GitLab CI a GitLab része. A GitLab CI beszerzéséhez először telepítenie kell a GitLab Runnert, az ügynököt, amely az összes feladatot futtatja, mielőtt elküldi azokat a GitLabnak.
Ubuntut fogok használni a folyamat bemutatására. Ha másik operációs rendszere van, ellenőrizze a hivatalos dokumentációt. Ubuntu esetén kövesse az alábbi lépéseket;
1. lépés: Frissítse és konfigurálja a rendszert;
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
Beállíthat egy e-mail megoldást frissítések küldésére, vagy kihagyhatja ezt a lépést.
2. lépés: Adja hozzá a GitLab csomagtárat
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
3. lépés: Konfigurálja a GitLab-fiókját.
Különféle lehetőségek léteznek a GitLab üzemeltetésére. Választásától függően kövesse az utasításokat.
4. lépés: Böngésszen a gazdagépnév között, és jelentkezzen be. Kattintson erre a parancsra a terminálon a jelszó beszerzéséhez;
/etc/gitlab/initial_root_password
Nem kötelező: állítsa be a kommunikációs beállításokat a termékfrissítések és hírek fogadásához a GitLab-tól.
Jenkins korlátai
- A Jenkinst bonyolult lehet nagy projektekhez felállítani.
- Ha nincs jól konfigurálva, a Jenkins sebezhető lehet a biztonsági támadásokkal szemben.
- A Jenkins használata közben nehéz lehet nagy projekteket méretezni.
- A Jenkins sok erőforrást fogyaszthat, amikor számos egyidejű buildet futtat.
A Gitlab CI korlátai
- A GitLab CI bonyolult lehet a nagy projektekhez.
- GitLab függő.
- A méretezhetőség nagy projekteknél probléma.
- A plugin ökoszisztémája nem nagy a Jenkinshez képest.
A szerző véleménye
A GitLab CI és a Jenkins is fantasztikus eszközök a szoftverfejlesztés életciklusában. A Jenkinst választom, ha kiforrottabb platformot és teljes körű testreszabást akarok. Másrészt a GitLab CI-t választom a felhasználói felülethez, és ki kell használnom a GitLab integrációját.
Úgy gondoljuk, hogy meg tudja különböztetni a GitLab CI-t és a Jenkins-t. Annak ellenére, hogy a két eszközt hasonló funkciók ellátására tervezték, jellemzőikben és funkcióik elérésében különböznek egymástól. A kettő közötti választás a projekt jellegétől, készségeitől, ízlésétől és preferenciáitól függ.
Most megnézheti ezeket a Jenkins hosting platformokat.