Jenkins ja GitLab CI/CD lahing

Viimase kümne aasta jooksul on saavutatud märkimisväärset edu pideva integreerimise (Continuous Integration, CI) ja pideva juurutamise (Continuous Delivery, CD) tööriistade arendamisel. Arendusoperatsioonide (Development Operations, DevOps) tehnikate areng on kiiresti suurendanud nõudlust CI/CD tööriistade järele. Eksisteerivad lahendused paranevad pidevalt, püüdledes ajaga sammu pidada, ilmuvad nende uued versioonid ning programmeerimise kvaliteedikontrolli (Quality Assurance, QA) valdkonnas tekib pidevalt hulk uusi tooteid. Sellise valikurikkuse juures õige tööriista leidmine ei ole kerge ülesanne.

Jenkins ja GitLab CI/CD lahing

Kõigi olemasolevate CI/CD tööriistade seas on kaks projekti, millele tasub kindlasti pöörata tähelepanu, kui otsite midagi sellest valdkonnast. Räägime Jenkinsist ja GitLab CI/CD tööriistast, mis on osa GitLab platvormist. Jenkinsil on üle 16000 tähe GitHubis. GitLabi repostiit gitlab.com-is on kogunud pisut rohkem kui 2000 tähe. Kui võrrelda repostiitide populaarsust, selgub, et Jenkins on kogunud 8 korda rohkem tähti kui platvorm, kuhu kuulub GitLab CI/CD. Kuid CI/CD tööriista valimisel pole see kaugeltki ainus näitaja, millele tuleks tähelepanu pöörata. On palju teisi ja see seletab, miks Jenkins ja GitLab CI/CD on paljude võrdluste puhul väga lähedal üksteisele.

Võtame näiteks andmed G2 platvormilt, mis kogub arvustusi erinevate toodete kohta ja hinnanguid, mida kasutajad neile annavad. Siin on keskmine hinnang Jenkinsile, mille aluseks on 288 arvustust, 4,3 tähte. Ja GitLab siin on 270 arvustust, mille keskmine hinnang on 4,4 tähte. Me ei eksi, kui väidame, et Jenkins ja GitLab CI/CD konkureerivad üksteisega võrdselt. Huvitav on märkida, et Jenkins projekt käivitus 2011. aastal ja on olnud lemmik tööriist testijate seas. Kuid samal ajal on projet GitLab CI/CD, käivitatud 2014. aastal, oma positsioonid kõrgele tõstnud tänu sellele platvormile pakutavatele uuenduslikele võimalustele.

Kui rääkida Jenkins'i populaarsusest võrreldes teiste sarnaste platvormidega, siis märgime, et pärast meie artikli avaldamist, milles võrreldi Travis CI ja Jenkins'i platvorme, korraldasime küsitluse. Küsitluses osales 85 kasutajat. Respondentidele pakuti valida CI/CD tööriist, mis neile kõige rohkem meeldib. 79% valis Jenkins'i, 5% valis Travis CI ja 16% märkis, et eelistavad teisi tööriistu.

Jenkins ja GitLab CI/CD lahing
Küsitluse tulemused

Teiste CI/CD tööriistade seas mainiti kõige sagedamini GitLab CI/CD.

Kui te tegeleten tõsiselt DevOps'iga, peate hoolikalt valima sobivad tööriistad, arvestades projekti omadusi, selle eelarvet ja muid nõudmisi. Selleks, et aidata teil teha õige valik, kavatseme analüüsida Jenkins'i ja GitLab CI/CD. Loodame, et see aitab teil teha õige valiku.

Tutvumine Jenkins'iga

Jenkins ja GitLab CI/CD lahing
Jenkinsile on laialdaselt tuntud, paindlik CI/CD tööriist, mis on mõeldud paljude tarkvaraprojektidega seotud ülesannete automatiseerimiseks. Jenkins on täielikult kirjutatud Java's ja see on litsentseeritud MIT all. Tal on võimas funktsioonide kogum, mis on suunatud ülesannete automatiseerimisele, mis on seotud koostamise, testimise, juurutamise, integreerimise ja tarkvara vabastamisega. Seda tööriista saab kasutada erinevates operatsioonisüsteemides. Nende hulgas on macOS, Windows ja mitmed Linux'i jaotused, näiteks OpenSUSE, Ubuntu ja Red Hat. Jenkins'i installipakette on loodud erinevate operatsioonisüsteemide jaoks, seda tööriista saab installida Dockerisse ja igas süsteemis, kus on JRE (Java Runtime Environment).

Jenkins'i arendajad lõid veel ühe projekti, Jenkins X, mis on mõeldud töötamiseks Kubernetes'i keskkonnas. Jenkins X sisaldab Helm'i, Jenkins CI/CD serverit, Kubernetes'i ja teisi tööriistu, mis on mõeldud CI/CD konveierite loomiseks, mis vastavad DevOps'i parimatele praktikatele. Näiteks kasutatakse siin GitOps'i.

Jenkins'i eeliste hulka võib lisada ka asjaolu, et tema skriptid on väga hästi struktureeritud, arusaadavad ja neid on lihtne lugeda. Jenkins'i meeskond on loonud umbes 1000 pistikprogrammi, mis on suunatud Jenkins'i ja erinevate tehnoloogiate koostöö korraldamisele. Skriptides saab kasutada autentimissüsteeme, mis näiteks võimaldab ühenduda erinevate kinniste süsteemidega.

Jenkinsi konveieri töö käigus on võimalik jälgida, mis toimub igas selle etapis, ja kas teatud tööetapid on edukalt lõpetatud või mitte. Kõike seda on võimalik jälgida, kasutades mitte mõnda graafilist kasutajaliidest, vaid terminali võimalusi.

Jenkinsi omadused

Jenkinsi laialdaselt tuntud omaduste hulgas on lihtne seadistamine, kõrge automatiseerimise tase ja suurepärane dokumentatsioon. DevOps ülesannete lahendamisel peetakse Jenkinsit usaldusväärseks tööriistaks, mille kasutamisel ei ole tavaliselt mõtet pidevalt kogu projekti töötlemisprotsessi jälgida. Teiste CI/CD tööriistade puhul see nii ei ole. Räägime mõnest Jenkins'i olulisest võimalusest.

▍1. Tasuta, avatud lähtekood, mitme platvormi tugi

Jenkins töötab platvormidel macOS, Windows ja Linux. Seda on võimalik kasutada ka Dockeris, mis võimaldab korraldada ühtlast ja kiiret automatiseeritud ülesannete täitmist. See tööriist saab samuti töötada servletina konteinerites, mis toetavad Java'd, nagu Apache Tomcat ja GlassFish. Jenkins'i installimine on kvaliteetselt dokumenteeritud dokumenteeritud.

▍2. Arenenud pluginite ökosüsteem

Jenkinsi pluginite ökosüsteem näeb välja palju arenenum võrreldes teiste CI/CD tööriistade lisamoodulite ökosüsteemidega. Praegu on olemas üle 1500 plugina Jenkins'i jaoks. Need pluginad on suunatud laia valiku probleemide lahendamisele, nende abil saab automatiseerida kõige erinevamaid projekte. Tasuta pluginite rikkalik valik tähendab, et Jenkins'i kasutajal ei ole teravat vajadust osta kalleid tasulisi pluginaid. On võimalus integreerimise Jenkins mitmekesiste DevOps-tööriistadega.

▍3. Lihtne paigaldamine ja seadistamine

Jenkins'i paigaldamine ja seadistamine on üsna lihtne. Samuti on süsteemi uuendamise protsess väga mugav. Siinkohal tasub taas mainida dokumentatsiooni kvaliteeti, kuna sealt on võimalik leida vastuseid erinevatele küsimustele, mis on seotud Jenkins'i paigaldamise ja seadistamisega.

▍4. Sõbralik kogukond

Nagu juba öeldud, on Jenkins avatud koodiga projekt, mille ökosüsteem sisaldab tohutut hulka pluginaid. Jenkins'i ümber on tekkinud suur kasutajate ja arendajate kogukond, kes aitavad projekti arengut. Kogukond on üks tegur, mis toetab Jenkins'i arengut.

▍5. REST API olemasolu

Jenkins'iga töötades on võimalik kasutada REST API-d, mis laiendab süsteemi võimalusi. Süsteemi kaugjuhtimise API on saadaval kolmes variandis: XML, JSON koos JSONP toega, Python. Siin dokumentatsioonileht, mis avab üksikasjad Jenkins REST API töö kohta.

▍6. Ülesannete paralleelse täitmise toetus

Jenkins toetab DevOps'i ülesannete paralleelset täitmist. Seda on lihtne integreerida vastavate tööriistadega ja saada teateid ülesannete täitmise tulemustest. Koodi testimise kiirus võib suureneda projekti paralleelsete ülesannete täitmise korraldamise kaudu erinevate virtuaalmasinate abil.

▍7. Tugi jaotatud keskkondadesse töötamiseks

Jenkins võimaldab korraldada jaotatud ülesandeid mitmete arvutite abil. See võimalus on rakendatav suurtes projektides ning kasutab tööpõhimõtet, mille kohaselt on olemas üks peamine Jenkins'i server ja mitu alluvat masinat. Alluvad masinad võivad olla kasutusel ka olukordades, kus on vaja korraldada projekti testimist erinevates keskkondades. Need võimalused eristavad Jenkins'i soodsalt teistest sarnastest projektidest.

Tutvumine GitLab'iga

Jenkins ja GitLab CI/CD lahing
GitLab CI/CD on üks uusimaid ja armastatumaid DevOps'i inseneride tööriistu. See tasuta avatud koodiga tööriist on integreeritud versioonihaldussüsteemi GitLab. GitLab'i platvormil on community-versioon, mis toetab hoidlate haldust, probleemide jälgimise tööriistu, koodikontrolli korraldamist, dokumentatsiooni loomise suunatud mehhanisme. Ettevõtted saavad paigaldada GitLab'i kohalikult, seostades selle süsteemi Active Directory ja LDAP-serveritega, et korraldada turvalist autoriseerimist ja autentimist.

Siin videojuhend, mis aitab teil õppida, kuidas luua CI/CD torujuhtmeid kasutades GitLab CI/CD võimalusi.

Alguses oli GitLab CI/CD iseseisev projekt, kuid 2015. aastal integreeriti see tööriistade kogum GitLabi versiooniga 8.0. Eraldi GitLab CI/CD-server suudab toeta üle 25000 kasutaja töö. Taolistele serveritele saab luua süsteeme, mis pakuvad kõrget kättesaadavust.

GitLab CI/CD ja põhi-GitLab projekt on kirjutatud Ruby ja Go keeles. Need on avaldatud MIT litsentsi alusel. GitLab CI/CD toetab tavaliste CI/CD-tööriistade funktsioonide kõrval ka täiendavaid võimalusi, näiteks tööde ajastamist.

GitLab CI/CD integreerimine projekti on väga lihtne. GitLab CI/CD kasutamisel jaguneb projekti koodiprotsess etappideks, millest igaühes võib olla mitu ülesannet, mida tehakse kindlas järjestuses. Ülesandeid saab täpselt kohandada.

Ülesandeid saab täita paralleelselt. Pärast etappide ja CI/CD-protsessi ülesannete järjekorra seadistamist on CI/CD torujuhe töövalmis. Selle teostuse käiku saab jälgida, jälgides ülesannete staatust. Seetõttu on GitLab CI/CD kasutamine äärmiselt mugav, võib-olla mugavam kui teiste sarnaste tööriistade puhul.

GitLab CI/CD ja GitLab omadused

GitLab CI/CD on üks populaarsemaid DevOps-tööriistu. Projekt eristub kvaliteetse dokumentatsiooni poolest, mis on lihtne ja mugav kasutada. Kui te pole veel GitLab CI/CD-ga tuttav, siis järgmine tööriistade omaduste loetelu annab teile üldise ülevaate sellest, mida oodata. Tuleb märkida, et paljud neist omadustest on seotud ise GitLab platvormiga, kuhu on integreeritud GitLab CI/CD.

▍1. Populaarsus

GitLab CI/CD on suhteliselt uus tööriist, mille kasutamine on laialt levinud. GitLab CI/CD on järk-järgult muutunud äärmiselt populaarseks CI/CD-tööriistaks, mida kasutatakse tarkvara automatiseeritud testimiseks ja juurutamiseks. Selle seadistamine on lihtne. Lisaks on see tasuta CI/CD-tööriist, mis on integreeritud GitLab platvormi.

▍2. GitLab Pages ja Jekylli tugi

Jekyll on staatiliste veebilehtede generaator, mida saab kasutada GitLab Pages süsteemis GitLabi hoidlate alusel veebilehtede loomiseks. Süsteem võtab sisendmaterjalid ja genereerib nende põhjal valmis staatilise veebilehe. Selliste veebilehtede välimust ja võimalusi saab hallata, muutes faili _config.yml, mida Jekyll kasutab.

▍3. Projektide planeerimise võimalused

Projektide etappide planeerimise võimaluste tõttu on probleemide jälgimine ja nende rühmitamine lihtsam. See võimaldab hallata projektitöid, planeerides nende täitmist kindlaksmääratud kuupäevaks.

▍4. CI- jooksjate automaatne skaleerimine

CI- jooksjate automaatne skaleerimine, mille eest vastutavad konkreetsed ülesanded, aitab tõsiselt kokku hoida serverite rentimise kulusid. See on eriti oluline, kui testitakse projekte paralleelselt. Samuti on see oluline suurte projektide puhul, mis koosnevad mitmest hoidlast.

▍5. Probleemide jälgimise vahendid

GitLabi võimsad probleemide jälgimise võimalused on viinud selleni, et paljusid avatud lähtekoodiga projekte kasutab just see platvorm. GitLab CI/CD võimaldab erinevate koodiharu paralleelset testimist. Katsetamise tulemusi on mugav süsteemi liideses analüüsida. See eristab GitLab CI/CD-d Jenkinsist.

▍6. Juurdepääsu piiramise võimalused hoidlatele

GitLab platvorm toetab hoidlate juurdepääsu piiranguid. Näiteks neile, kes töötavad koos projektis mingis hoidlas, saab määrata õigused vastavalt nende rollidele. See on eriti aktuaalne ettevõtete projektide jaoks.

▍7. Kogukonna aktiivne toetus

GitLabi ümber on kujunenud aktiivne kogukond, mis toetab selle platvormi ja tööriistade, sealhulgas GitLab CI/CD, arengut. GitLab CI/CD ja GitLabi sügav integreerimine lihtsustab ka vastuste leidmist GitLab CI/CD tööprotsesside käigus esinevatele küsimustele.

▍8. Tugi erinevatele versioonihalduse süsteemidele

GitLab CI/CD on süsteem, mis suudab töötada mitte ainult GitLabi hoidlatest pärineva koodiga. Näiteks võib koodi hoida GitHubi hoidlas, kuid CI/CD kanali võib organiseerida GitLabi alusel, kasutades GitLab CI/CD-d.

Jenkins ja GitLab CI/CD võrdlus

Jenkins ja GitLab CI/CD on väga head tööriistad, mis suudavad tagada CI/CD kanali normaalse töö. Kuid nende võrdlemisel selgub, et kuigi nad on paljuski sarnased, on nad teatud aspektides üksteisest erinevad.

Omadus
Jenkinsile
GitLab CI/CD

Avaalne või suletud kood
Avaalne kood
Avaalne kood

Paigaldamine
Nõutav.
Ei ole vajalik, kuna see on GitLabi platvormi sisseehitatud funktsioon.

Ainulaadsed omadused
Pluginatugi.
Sügav integreerimine versioonihaldussüsteemi.

Tugi
Puudub.
On olemas.

Paigaldamine ja seadistamine
Ei põhjusta keerukusi
Ei põhjusta keerukusi

Iseseisev süsteemi juurutamine
See on ainus võimalus süsteemi kasutamiseks.
Tugineb.

CI/CD torujuhtmete loomine
Tugineb, kasutab Jenkins Pipeline'i.
Tugineb.

Rakenduste jõudluse jälgimine
Puudub.
On olemas.

Ökosüsteem
Rohkem kui 1000 pluginat on olemas.
Süsteem areneb GitLab'i raames.

API
Toetab arenenud API süsteemi.
Pakub API-d sügavamaks integreerimiseks projektidesse.

JavaScripti tugi
On olemas.
On olemas.

Integreerimine teiste tööriistadega
Toetab integreerimist teiste tööriistade ja platvormidega (Slack, GitHub).
Rohkem vahendeid kolmandate osapoolte süsteemidega integreerimiseks, sealhulgas GitHub'i ja Kubernetesega.

Koodi kvaliteedi kontroll
Toetatakse — SonarQube'i ja teiste pluginatega.
Tugineb.

Erinevused Jenkins'i ja GitLab CI/CD vahel

Kirjeldades ja võrreldes Jenkins'i ja GitLab CI/CD-d, keskendugem nüüd nende DevOps-tööriistade erinevustele. Need erinevused aitavad mõista, miks mõned eelistavad ühte tööriista teisele.

  • GitLab CI/CD suudab täielikult hallata Git-repositooriaid. See tähendab, et nad saavad hallata repositooriumide harusid ja mõningaid teisi võimalusi. Siiski Jenkin, kuigi suudab repositooriumidega töötada, ei paku sama taset nende üle kontrollimiseks nagu GitLab CI/CD.
  • Jenkins on tasuta avatud lähtekoodiga projekt. Keegi, kes selle valib, juurutab selle iseseisvalt. GitLab CI/CD on aga osa GitLabi platvormist, olles valmis lahenduseks.
  • GitLab CI/CD toetab arenenud ülesannete haldamise vahendeid, mis töötavad projektitasandil. Jenkin selle osa on vähem arenenud.

Jenkins ja GitLab CI/CD: tugevused ja nõrkused

Nüüd on teil olemas ülevaade Jenkins'ist ja GitLab CI/CD-st. Et veel paremini nendega tutvuda, vaatame nende tugevaid ja nõrku külgi. Lootame, et olete juba otsustanud, milline tööriist teile kõige paremini sobib. Loodame, et see jaotis aitab teil ennast kontrollida.

▍Jenkins'i tugevad küljed

  • Suur hulk pluginaid.
  • Täielik kontroll tööriista seadistamise üle.
  • Lihtne runner'ite tõrkeotsing.
  • Lihtne sõlmede seadistamine.
  • Lihtne koodi juurutamine.
  • Very good user management system.
  • Flexibility and versatility.
  • Support for various programming languages.
  • The system is understandable on an intuitive level.

▍Weaknesses of Jenkins

  • Using plugins can lead to difficulties.
  • When using Jenkins in small projects, the time required for its independent setup can be unjustifiably high.
  • Lack of overall analytics on CI/CD pipelines.

▍Strengths of GitLab CI/CD

  • Good integration with Docker.
  • Easy scaling of runners.
  • Parallel execution of tasks involved in the CI/CD pipeline stages.
  • Using a directed acyclic graph model for configuring task relationships.
  • High scalability due to the ability to run runners in parallel.
  • Ease of adding tasks.
  • Simple resolution of conflicts.
  • Reliable security system.

▍Weaknesses of GitLab CI/CD

  • For each task, it is necessary to describe and upload/download artifacts.
  • One cannot test the results of branch merges before the actual merging.
  • When describing CI/CD pipeline stages, one cannot currently distinguish separate phases.

Summary

Both Jenkins and GitLab CI/CD have strengths and weaknesses. The choice of which one to pick depends on the needs and specifics of the particular project. Each of the CI/CD tools discussed today has certain features, although these tools are created to solve the same issue. Jenkins is a standalone tool, while GitLab CI/CD is part of a collaboration platform for code.

When choosing a CI/CD system, aside from its capabilities, it is important to consider the costs that may be associated with it and what DevOps engineers are accustomed to working with.

What CI/CD tools do you use?

Jenkins ja GitLab CI/CD lahing

Jenkins ja GitLab CI/CD lahing

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster