Beteja e Jenkins dhe GitLab CI/CD

Në dekadën e fundit, janë bërë përparime të rëndësishme në zhvillimin e mjeteve për integrim të vazhdueshëm (Integrimi i vazhdueshëm, CI) dhe vendosja e vazhdueshme (Dorëzimi i vazhdueshëm, CD). Zhvillimi i teknologjive për integrimin e zhvillimit dhe funksionimit të softuerit (Operacionet e Zhvillimit, DevOps) ka çuar në një rritje të shpejtë të kërkesës për mjetet CI / CD. Zgjidhjet ekzistuese po përmirësohen vazhdimisht, duke u përpjekur të ecin në hap me kohën, lëshohen versionet e tyre të reja, në botën e softuerit për sigurimin e cilësisë (Quality Assurance, QA), vazhdimisht shfaqen shumë produkte të reja. Me një pasuri të tillë zgjedhjeje, zgjedhja e mjetit të duhur nuk është një detyrë e lehtë.

Beteja e Jenkins dhe GitLab CI/CD

Ndër të gjitha mjetet ekzistuese CI / CD, ka dy projekte që ia vlen t'i kushtohet vëmendje dikujt që kërkon diçka nga kjo zonë. Po flasim për Jenkins dhe mjetin GitLab CI / CD, i cili është pjesë e platformës GitLab. Jenkins ka më shumë se 16000 yjet në GitHub. Depoja e GitLab në gitlab.com shënoi pak më shumë 2000 yjet. Nëse krahasojmë popullaritetin e depove, rezulton se Jenkins shënoi 8 herë më shumë yje sesa platforma, e cila përfshin GitLab CI / CD. Por kur zgjidhni një mjet CI / CD, ky është larg nga treguesi i vetëm që duhet t'i kushtoni vëmendje. Ka plot të tjera, dhe kjo shpjegon pse në shumë krahasime, Jenkins dhe GitLab CI / CD janë shumë afër njëri-tjetrit.

Merrni, për shembull, të dhënat nga platforma G2, e cila grumbullon komente për një shumëllojshmëri të gjerë produktesh dhe vlerësimet që përdoruesit u japin atyre. Këtu është vlerësimi mesatar Jenkins, bazuar në 288 komente, është 4,3 yje. Oh oh GitLab ka 270 komente, vlerësimi mesatar për këtë mjet është 4,4 yje. Nuk do të gabojmë duke thënë se Jenkins dhe GitLab CI / CD konkurrojnë me njëri-tjetrin në kushte të barabarta. Është interesante të theksohet se projekti Jenkins u shfaq në vitin 2011 dhe që atëherë ai ka qenë një mjet i preferuar për testuesit. Por në të njëjtën kohë, projekti GitLab CI/CD, i lançuar në vitin 2014, ka zënë pozicionin e tij, shumë të lartë, falë veçorive të avancuara që ofron kjo platformë.

Nëse flasim për popullaritetin e Jenkins në krahasim me platformat e tjera të ngjashme, vërejmë se ne, pasi kemi publikuar një artikull që krahason platformat Travis CI dhe Jenkins, kemi organizuar një sondazh. 85 përdorues morën pjesë në të. Të anketuarve iu kërkua të zgjidhnin mjetin CI/CD që u pëlqen më shumë. 79% zgjodhën Jenkins, 5% zgjodhën Travis CI dhe 16% treguan se preferojnë mjete të tjera.

Beteja e Jenkins dhe GitLab CI/CD
Rezultatet e sondazhit

Ndër mjetet e tjera CI/CD, GitLab CI/CD u përmend më shpesh.

Nëse jeni serioz në lidhje me DevOps, atëherë duhet të zgjidhni me kujdes mjetet e duhura, duke marrë parasysh specifikat e projektit, buxhetin e tij dhe kërkesat e tjera. Për t'ju ndihmuar të bëni zgjedhjen e duhur, ne do të shqyrtojmë Jenkins dhe GitLab CI/CD. Kjo shpresojmë se do t'ju ndihmojë të bëni zgjedhjen e duhur.

Hyrje në Jenkins

Beteja e Jenkins dhe GitLab CI/CD
Jenkins është një mjet i mirënjohur, fleksibël CI/CD i krijuar për të automatizuar shumë detyra që lidhen me projektet softuerike. Jenkins është shkruar tërësisht në Java dhe lëshuar nën licencën MIT. Ai ka një grup të fuqishëm karakteristikash që synojnë automatizimin e detyrave që lidhen me ndërtimin, testimin, vendosjen, integrimin dhe lëshimin e softuerit. Ky mjet mund të përdoret në sisteme të ndryshme operative. Këto përfshijnë macOS, Windows dhe shumë shpërndarje Linux si OpenSUSE, Ubuntu dhe Red Hat. Ka paketa instalimi për Jenkins të dizajnuara për OS të ndryshme, ky mjet mund të instalohet në Docker dhe në çdo sistem që ka një JRE (Java Runtime Environment).

Zhvilluesit e Jenkins kanë krijuar një projekt tjetër, Jenkins X, i cili është krijuar për të punuar në një mjedis Kubernetes. Jenkins X integron Helm, serverin CI/CD Jenkins, Kubernetes dhe mjete të tjera për të ndërtuar tubacione CI/CD që ndjekin praktikat më të mira të DevOps. Për shembull, GitOps përdoret këtu.

Thesarit të avantazheve të Jenkins-it mund t'i shtohet fakti që skenarët e tij janë të strukturuar shumë mirë, të kuptueshëm dhe të lehtë për t'u lexuar. Ekipi Jenkins ka krijuar rreth 1000 shtojca që synojnë organizimin e ndërveprimit të Jenkins me një shumëllojshmëri të gjerë teknologjish. Skriptet mund të përdorin sisteme vërtetimi, të cilat, për shembull, ju lejojnë të lidheni me sisteme të ndryshme të mbyllura.

Gjatë funksionimit të tubacionit Jenkins, ju mund të vëzhgoni se çfarë ndodh në çdo hap, nëse disa faza të punës janë përfunduar me sukses apo jo. Ju mund t'i shikoni të gjitha këto, megjithatë, pa përdorur një ndërfaqe të caktuar grafike, por duke përdorur aftësitë e terminalit.

Karakteristikat e Jenkins

Ndër veçoritë e njohura të Jenkins janë lehtësia e konfigurimit, niveli i lartë i automatizimit të operacioneve të ndryshme dhe dokumentacioni i shkëlqyer. Nëse flasim për zgjidhjen e detyrave DevOps, atëherë këtu Jenkins konsiderohet një mjet shumë i besueshëm, duke përdorur të cilin, si rregull, nuk ka kuptim të monitorohet nga afër i gjithë procesi i përpunimit të projektit. Ky nuk është rasti me mjetet e tjera CI/CD. Le të flasim për disa nga tiparet më të rëndësishme të Jenkins.

▍1. Pa pagesë, me burim të hapur, mbështetje me shumë platforma

Jenkins mund të funksionojë në platformat macOS, Windows dhe Linux. Mund të funksionojë gjithashtu në një mjedis Docker, i cili ju lejon të organizoni ekzekutimin uniform dhe të shpejtë të detyrave të automatizuara. Ky mjet mund të funksionojë gjithashtu si një servlet në kontejnerë të aktivizuar me Java si Apache Tomcat dhe GlassFish. Instalimi i Jenkins në mënyrë cilësore të dokumentuara.

▍2. Ekosistemi i zhvilluar i shtojcave

Ekosistemi i shtojcave Jenkins duket të jetë shumë më i pjekur se ekosistemet e shtojcave të mjeteve të tjera CI/CD. Aktualisht ka mbi 1500 shtojca për Jenkins. Këto shtojca synojnë të zgjidhin një gamë të gjerë detyrash, me ndihmën e tyre ju mund të automatizoni një sërë projektesh. Pasuria e shtojcave falas për të zgjedhur do të thotë që nëse jeni duke përdorur Jenkins, nuk keni nevojë të blini shtojca të shtrenjta me pagesë. Ekziston një mundësi integrimet Jenkins me shumë mjete DevOps.

▍3. Instalim dhe konfigurim i lehtë

Jenkins është mjaft i lehtë për t'u instaluar dhe konfiguruar. Në të njëjtën kohë, procesi i përditësimit të sistemit është gjithashtu shumë i përshtatshëm. Këtu, përsëri, vlen të përmendet cilësia e dokumentacionit, pasi në të mund të gjeni përgjigje për një sërë pyetjesh që lidhen me instalimin dhe konfigurimin e Jenkins.

▍4. Komunitet miqësor

Siç është përmendur tashmë, Jenkins është një projekt me burim të hapur, ekosistemi i të cilit përfshin një numër të madh shtojcash. Një komunitet i madh përdoruesish dhe zhvilluesish është zhvilluar rreth Jenkins për të ndihmuar në zhvillimin e projektit. Komuniteti është një nga faktorët që nxit zhvillimin e Jenkins.

▍5. Disponueshmëria e REST API

Ndërsa punoni me Jenkins, mund të përdorni API REST, i cili zgjeron aftësitë e sistemit. API për qasje në distancë në sistem është paraqitur në tre versione: XML, JSON me mbështetje JSONP, Python. Këtu Faqja e dokumentacionit që mbulon detajet mbi punën me API-në Jenkins REST.

▍6. Mbështetje për ekzekutimin paralel të detyrave

Jenkins mbështet paralelizimin e detyrave të DevOps. Mund të integrohet lehtësisht me mjetet përkatëse dhe të marrë njoftime për rezultatet e detyrave. Testimi i kodit mund të përshpejtohet duke organizuar një ndërtim paralel të projektit duke përdorur makina të ndryshme virtuale.

▍7. Mbështetje për punën në mjedise të shpërndara

Jenkins ju lejon të organizoni ndërtime të shpërndara duke përdorur kompjuterë të shumtë. Kjo veçori është e zbatueshme në projekte të mëdha dhe përdor një skemë pune, sipas së cilës ekziston një server master Jenkins dhe disa makina skllevër. Makinat skllav mund të përdoren gjithashtu në situata kur është e nevojshme të organizohet testimi i një projekti në mjedise të ndryshme. Këto veçori e veçojnë Jenkins nga projektet e tjera të ngjashme.

Hyrje në GitLab

Beteja e Jenkins dhe GitLab CI/CD
GitLab CI/CD mund të quhet një nga mjetet më të reja dhe më të dashura të DevOps. Ky mjet falas me burim të hapur është i integruar në sistemin e kontrollit të versionit GitLab. Platforma GitLab ka një version të komunitetit, ai mbështet menaxhimin e depove, mjetet e gjurmimit të çështjeve, organizimin e rishikimit të kodit, mekanizmat e orientuar drejt dokumentacionit. Kompanitë mund të instalojnë GitLab në nivel lokal, duke e lidhur atë me serverët Active Directory dhe LDAP për autorizim dhe vërtetim të sigurt të përdoruesit.

Këtu Një video tutorial për t'ju ndihmuar të mësoni se si të krijoni tubacione CI/CD duke përdorur aftësitë e GitLab CI/CD.

GitLab CI/CD fillimisht u lëshua si një projekt i pavarur, por në vitin 2015 ky grup mjetesh u integrua në GitLab 8.0. Një server i vetëm GitLab CI/CD mund të mbështesë mbi 25000 përdorues. Bazuar në serverë të tillë, ju mund të krijoni sisteme që janë shumë të disponueshme.

GitLab CI/CD dhe projekti kryesor GitLab janë shkruar në Ruby dhe Go. Ata janë lëshuar nën licencën MIT. GitLab CI/CD, përveç veçorive të zakonshme të veglave CI/CD, mbështet gjithashtu veçori shtesë që lidhen, për shembull, me planifikimin e punës.

Integrimi i GitLab CI/CD në një projekt është shumë i lehtë. Kur përdorni GitLab CI/CD, procesi i përpunimit të kodit të projektit ndahet në faza, secila prej të cilave mund të përbëhet nga disa detyra të kryera në një rend të caktuar. Detyrat mund të rregullohen mirë.

Detyrat mund të zhvillohen paralelisht. Pas përcaktimit të sekuencës së fazave dhe detyrave, tubacioni CI/CD është gati për t'u nisur. Ju mund të monitoroni përparimin e tij duke monitoruar statusin e detyrave. Si rezultat, përdorimi i GitLab CI / CD është shumë i përshtatshëm, ndoshta më i përshtatshëm se mjetet e tjera të ngjashme.

Karakteristikat e GitLab CI/CD dhe GitLab

GitLab CI/CD është një nga mjetet më të njohura të DevOps. Projekti dallohet nga dokumentacioni me cilësi të lartë, tiparet e tij janë të lehta dhe të përshtatshme për t'u përdorur. Nëse nuk jeni ende të njohur me GitLab CI/CD, lista e mëposhtme e veçorive të këtij mjeti do t'ju japë një ide të përgjithshme se çfarë mund të prisni prej tij. Duhet të theksohet se shumë nga këto veçori lidhen me vetë platformën GitLab, në të cilën është integruar GitLab CI / CD.

▍1. Popullariteti

GitLab CI/CD është një mjet relativisht i ri që ka gjetur përdorim të gjerë. GitLab CI/CD është bërë ngadalë një mjet jashtëzakonisht i popullarizuar CI/CD i përdorur për testimin e automatizuar dhe vendosjen e softuerit. Është e thjeshtë për tu vendosur. Është gjithashtu një mjet falas CI/CD i integruar në platformën GitLab.

▍2. Mbështetje për GitLab Pages dhe Jekyll

Jekyll është një gjenerues statik i faqeve që mund të përdoret brenda sistemit GitLab Pages për të krijuar faqe të bazuara në depot e GitLab. Sistemi merr materialet burimore dhe gjeneron një faqe statike të gatshme bazuar në to. Ju mund të kontrolloni pamjen dhe veçoritë e sajteve të tilla duke redaktuar skedarin _config.yml, përdorur nga Jekyll.

▍3. Aftësitë e planifikimit të projektit

Falë aftësisë për të planifikuar fazat e projekteve, rritet komoditeti i gjurmimit të problemeve dhe grupeve të tyre. Kjo ju lejon të menaxhoni organizimin e punës në projekte, të planifikoni zbatimin e tyre në një datë të caktuar.

▍4. Shkallëzimi automatik i vrapuesve CI

Falë shkallëzimit automatik të vrapuesve përgjegjës për kryerjen e detyrave specifike, mund të kurseni shumë në koston e marrjes me qira të kapaciteteve të serverit. Kjo është shumë e rëndësishme, veçanërisht kur bëhet fjalë për mjedise ku projektet testohen paralelisht. Përveç kësaj, kjo është e rëndësishme për projektet e mëdha që përbëhen nga disa depo.

▍5. Mjetet e gjurmimit të çështjeve

Aftësitë e fuqishme të gjurmimit të problemeve të GitLab kanë bërë që shumë projekte me burim të hapur të përdorin platformën. GitLab CI/CD lejon testimin paralel të degëve të ndryshme të kodit. Rezultatet e testit analizohen me lehtësi në ndërfaqen e sistemit. Kjo e veçon GitLab CI/CD nga Jenkins.

▍6. Kufizimi i aksesit në depo

Platforma GitLab mbështet kufizimin e aksesit në depo. Për shembull, atyre që bashkëpunojnë në një projekt në një depo mund t'u caktohen leje të përshtatshme për rolet e tyre. Kjo është veçanërisht e vërtetë për projektet e korporatave.

▍7. Mbështetje aktive e komunitetit

Një komunitet aktiv është zhvilluar rreth GitLab, i cili kontribuon në zhvillimin e kësaj platforme dhe mjeteve të saj, në veçanti, GitLab CI / CD. Integrimi i thellë i GitLab CI/CD dhe GitLab, ndër të tjera, e bën të lehtë gjetjen e përgjigjeve për pyetjet që lindin kur punoni me GitLab CI/CD.

▍8. Mbështetje për sisteme të ndryshme të kontrollit të versioneve

GitLab CI/CD është një sistem që mund të funksionojë me më shumë sesa thjesht kod të vendosur në depot e GitLab. Për shembull, kodi mund të ruhet në një depo GitHub dhe tubacioni CI / CD mund të organizohet në bazë të GitLab duke përdorur GitLab CI / CD.

Krahasimi i Jenkins dhe GitLab CI/CD

Jenkins dhe GitLab CI/CD janë mjete shumë të mira, të cilat të dyja janë të afta të bëjnë tubacionin CI/CD të funksionojë pa probleme. Por nëse i krahasoni, rezulton se, megjithëse janë të ngjashëm në shumë mënyra, ato ndryshojnë nga njëri-tjetri në disa mënyra.

Karakterizim
Jenkins
GitLab CI/CD

Burim i hapur ose me burim të mbyllur
burim i hapur
burim i hapur

Instalim
E detyrueshme.
Nuk kërkohet pasi kjo është një veçori e integruar e platformës GitLab.

Karakteristika unike
Mbështetja e shtojcave.
Integrim i thellë në sistemin e kontrollit të versionit.

Mbështetje
Mungon
Në dispozicion.

Instalimi dhe konfigurimi
Vështirësitë nuk shkaktojnë
Vështirësitë nuk shkaktojnë

Vetë-vendosja e sistemit
Kjo është mënyra e vetme për të përdorur sistemin.
Mbështetur.

Krijimi i tubacioneve CI/CD
Mbështetur, duke përdorur Jenkins Pipeline.
Mbështetur.

Monitorimi i performancës së aplikacionit
Mungon
Në dispozicion.

ekosistem
Ka mbi 1000 shtojca.
Sistemi është duke u zhvilluar brenda GitLab.

API
Mbështet një sistem të avancuar API.
Ofron një API për integrim më të thellë në projekte.

Mbështetje JavaScript
Në dispozicion.
Në dispozicion.

Integrimi me mjete të tjera
Mbështetet integrimi me mjete dhe platforma të tjera (Slack, GitHub).
Shumë mjete për integrimin me sistemet e palëve të treta, në veçanti - me GitHub dhe Kubernetes.

Kontrolli i cilësisë së kodit
Mbështet - duke përdorur shtojcën SonarQube dhe shtojca të tjera.
Mbështetur.

Dallimet midis Jenkins dhe GitLab CI/CD

Pasi të kemi përshkruar dhe krahasuar Jenkins dhe GitLab CI/CD, le të përqendrohemi në ndryshimet midis këtyre mjeteve DevOps. Njohja e këtyre dallimeve do t'ju ndihmojë të kuptoni ata që preferojnë njërën nga këto mjete mbi tjetrën.

  • GitLab CI/CD mund të kontrollojë plotësisht depot e Git. Po flasim për menaxhimin e degëve të depove dhe disa veçori të tjera. Por Jenkins, megjithëse mund të punojë me depo, nuk jep të njëjtin nivel kontrolli mbi to si GitLab CI / CD.
  • Jenkins është një projekt falas me burim të hapur. Ai që e zgjedh e vendos atë në mënyrë të pavarur. Dhe GitLab CI / CD përfshihet në platformën GitLab, kjo është një zgjidhje me çelës në dorë.
  • GitLab CI/CD mbështet mjete të avancuara të menaxhimit të detyrave që funksionojnë në nivel projekti. Kjo anë e Jenkins është më pak e zhvilluar.

Jenkins dhe GitLab CI/CD: pikat e forta dhe të dobëta

Tani keni një ide rreth Jenkins dhe GitLab CI/CD. Tani, për t'ju njohur edhe më mirë me këto mjete, le të hedhim një vështrim në pikat e forta dhe të dobëta të tyre. Ne supozojmë se ju keni vendosur tashmë se cili mjet ju nevojitet. Shpresojmë, ky seksion do t'ju lejojë të provoni veten.

▍Përparësitë e Jenkins

  • Një numër i madh shtojcash.
  • Kontroll i plotë mbi instalimin e veglave.
  • Korrigjimi i thjeshtë i vrapuesve.
  • Vendosja e lehtë e nyjeve.
  • Vendosja e lehtë e kodit.
  • Sistemi shumë i mirë i menaxhimit të kredencialeve.
  • Fleksibilitet dhe shkathtësi.
  • Mbështetje për gjuhë të ndryshme programimi.
  • Sistemi është i kuptueshëm në një nivel intuitiv.

▍Dobësitë e Jenkins

  • Pluginat mund të jenë të ndërlikuara për t'u përdorur.
  • Kur përdorni Jenkins në projekte të vogla, koha e nevojshme për ta konfiguruar vetë mund të jetë jashtëzakonisht e madhe.
  • Mungesa e informacionit të përgjithshëm analitik mbi zinxhirët CI/CD.

▍Përparësitë e GitLab CI/CD

  • Integrim i mirë me Docker.
  • Shkallëzimi i thjeshtë i vrapuesve.
  • Ekzekutimi paralel i detyrave që janë pjesë e fazave të tubacionit CI/CD.
  • Përdorimi i modelit të grafikut aciklik të drejtuar gjatë vendosjes së marrëdhënieve të detyrave.
  • Niveli i lartë i shkallëzueshmërisë për shkak të mundësisë së ekzekutimit paralel të vrapuesve.
  • Lehtësia e shtimit të detyrave.
  • Zgjidhja e thjeshtë e konfliktit.
  • Sistemi i besueshëm i sigurisë.

▍Dobësitë e GitLab CI/CD

  • Për secilën detyrë, ju duhet të përshkruani dhe ngarkoni / shkarkoni objekte.
  • Ju nuk mund të testoni rezultatet e bashkimit të degëve përpara se ato të bashkohen realisht.
  • Kur përshkruani fazat e tubacionit CI / CD, nuk është ende e mundur të veçohen fazat individuale në to.

Rezultatet e

Si Jenkins ashtu edhe GitLab CI/CD kanë pika të forta dhe të dobëta. Përgjigja në pyetjen se çfarë të zgjidhni varet nga nevojat dhe karakteristikat e një projekti të caktuar. Secili nga mjetet CI/CD të shqyrtuara sot ka veçori të caktuara, megjithëse këto mjete u krijuan për të zgjidhur të njëjtin problem. Në të njëjtën kohë, Jenkins është një mjet i pavarur dhe GitLab CI / CD është pjesë e një platforme të krijuar për të bashkëpunuar në kod.

Kur zgjidhni një sistem CI / CD, përveç aftësive të tij, ia vlen të merren parasysh kostot që mund të lidhen me të, dhe me çfarë saktësisht janë mësuar të punojnë inxhinierët DevOps që mbështesin projektin.

Çfarë veglash CI/CD përdorni?

Beteja e Jenkins dhe GitLab CI/CD

Beteja e Jenkins dhe GitLab CI/CD

Burimi: www.habr.com

Shto një koment