Jenkins un GitLab CI/CD cīņa

Pēdējā desmitgadē ir sasniegti ievērojami panākumi nepārtraukto integrācijas (Continuous Integration, CI) un nepārtraukto izvietoÅ”anas (Continuous Delivery, CD) rÄ«ku izstrādē. Izstrādes un operāciju tehnoloÄ£iju attÄ«stÄ«ba (Development Operations, DevOps) ir radÄ«jusi strauju pieprasÄ«jumu pēc CI/CD rÄ«kiem. EsoÅ”ie risinājumi nepārtraukti uzlabojas, centÄ«gi sekojot laikam, tiek izlaistas to jaunas versijas, un programmatÅ«ras kvalitātes kontroles (Quality Assurance, QA) jomā regulāri parādās daudzi jauni produkti. Šādā bagātÄ«gā izvēlē atbilstoÅ”a rÄ«ka atraÅ”ana izrādās sarežģīta uzdevums.

Jenkins un GitLab CI/CD cīņa

No visiem esoÅ”ajiem CI/CD rÄ«kiem ir divi projekti, kuriem noteikti jāpievērÅ” uzmanÄ«ba ikvienam, kurÅ” meklē kaut ko no Ŕīs jomas. Runājam par Jenkins un GitLab CI/CD rÄ«ku, kas ir daļa no GitLab platformas. Jenkins ir vairāk 16000 zvaigžņu GitHub. GitLab repozitorijs vietnē gitlab.com ir saņēmis nedaudz vairāk 2000 zvaigžņu. SalÄ«dzinot repozitoriju popularitāti, izrādās, ka Jenkins ir saņēmis 8 reizes vairāk zvaigžņu nekā platforma, kurā ietilpst GitLab CI/CD. Taču, izvēloties CI/CD rÄ«ku, tas ir tālu ne vienÄ«gais rādÄ«tājs, kam jāpievērÅ” uzmanÄ«ba. Ir daudz citu, un tas skaidro, kāpēc daudzos salÄ«dzinājumos Jenkins un GitLab CI/CD ir ļoti tuvu viens otram.

Piemēram, ņemsim datus no platformas G2, kas apkopo atsauksmes par dažādiem produktiem un vērtējumus, ko sniedz lietotāji. Å eit vidējais vērtējums Jenkins, kas iegÅ«ts, pamatojoties uz 288 atsauksmēm, ir 4,3 zvaigznes. Bet par GitLab Å”im rÄ«kam ir 270 atsauksmes, vidējais vērtējums ir 4,4 zvaigznes. Mēs nevaram kļūdÄ«ties, apgalvojot, ka Jenkins un GitLab CI/CD konkurē savā starpā uz vienādiem noteikumiem. Interesanti atzÄ«mēt, ka projekts Jenkins radās 2011. gadā un kopÅ” tā laika ir kļuvis par iecienÄ«tu rÄ«ku testētājiem. Tomēr projekts GitLab CI/CD, kas uzsākts 2014. gadā, ir ieņēmis augstas pozÄ«cijas, pateicoties Ŕīs platformas piedāvātajām progresÄ«vajām iespējām.

Runājot par Jenkins popularitāti salÄ«dzinājumā ar citām lÄ«dzÄ«gām platformām, jāatzÄ«mē, ka pēc mÅ«su publikācijas par Travis CI un Jenkins salÄ«dzināŔanu, mēs veicām aptauju. Tajā piedalÄ«jās 85 lietotāji. Respondentiem tika piedāvāts izvēlēties CI/CD rÄ«ku, kurÅ” viņiem patÄ«k visvairāk. 79% izvēlējās Jenkins, 5% izvēlējās Travis CI, bet 16% norādÄ«ja, ka dod priekÅ”roku citiem rÄ«kiem.

Jenkins un GitLab CI/CD cīņa
Aptaujas rezultāti

Starp citiem CI/CD rīkiem visbiežāk tika pieminēts GitLab CI/CD.

Ja jÅ«s nopietni nodarbojaties ar DevOps, jums ir rÅ«pÄ«gi jāizvēlas atbilstoÅ”ie rÄ«ki, ņemot vērā projekta specifiku, budžetu un citus nosacÄ«jumus. Lai palÄ«dzētu jums pieņemt pareizo lēmumu, mēs plānojam veikt analÄ«zi starp Jenkins un GitLab CI/CD. Cerams, ka tas palÄ«dzēs jums pieņemt pareizo lēmumu.

IepazīŔanās ar Jenkins

Jenkins un GitLab CI/CD cīņa
Jenkins Jenkins ir plaÅ”i pazÄ«stams, elastÄ«gs CI/CD rÄ«ks, kas paredzēts, lai automatizētu daudzus uzdevumus, kas saistÄ«ti ar programmatÅ«ras projektiem. Jenkins ir pilnÄ«bā uzrakstÄ«ts Java valodā un tiek izdots ar MIT licenci. Tam ir jaudÄ«gs iespēju kopums, kas vērsts uz uzdevumu automatizēŔanu, kas saistÄ«ti ar bÅ«vēŔanu, testēŔanu, izvietoÅ”anu, integrāciju un programmatÅ«ras izlaiÅ”anu. Å o rÄ«ku var izmantot dažādās operētājsistēmās, tostarp macOS, Windows un daudzu Linux izplatÄ«jumu, piemēram, OpenSUSE, Ubuntu un Red Hat. Eksistē Jenkins instalācijas pakotnes, kas paredzētas dažādām operētājsistēmām, Å”o rÄ«ku var instalēt arÄ« Docker vidē, kā arÄ« jebkurā sistēmā ar JRE (Java Runtime Environment).

Jenkins izstrādātāji ir radÄ«juÅ”i vēl vienu projektu, Jenkins X, kura mērÄ·is ir darbs Kubernetes vidē. Jenkins X ir integrēti Helm, Jenkins CI/CD serveris, Kubernetes un citi rÄ«ki, kas paredzēti CI/CD cauruļvadu veidoÅ”anai, kas atbilst DevOps labākajām praksēm. Piemēram, Å”eit tiek izmantots GitOps.

Jenkins priekÅ”rocÄ«bu sarakstam var pievienot arÄ« faktu, ka tā skripti ir ļoti labi strukturēti, saprotami un viegli lasāmi. Jenkins komanda ir izveidojusi apmēram 1000 papildinājumu, kas vērsti uz Jenkins savienoÅ”anu ar dažādām tehnoloÄ£ijām. Skriptu ietvaros var izmantot autentifikācijas sistēmas, kas ļauj pieslēgties dažādām slēgtām sistēmām.

Jenkins konveijera darbības laikā var novērot to, kas notiek katrā tā posmā, un vai attiecīgie darba posmi ir pabeigti veiksmīgi vai nē. To var novērot, izmantojot termināla iespējas, nevis kādu grafisko interfeisu.

Jenkins iezīmes

Starptautisko Jenkins iezÄ«mju vidÅ« ir viegla iestatīŔana, augsts automatizācijas lÄ«menis dažādām operācijām un lieliska dokumentācija. Runājot par DevOps uzdevumu risināŔanu, Jenkins tiek uzskatÄ«ts par ļoti uzticamu rÄ«ku, kura lietoÅ”ana parasti nenozÄ«mē nepiecieÅ”amÄ«bu uzmanÄ«gi sekot visam projekta apstrādes procesam. Ar citiem CI/CD rÄ«kiem tas tā nav. ApskatÄ«sim dažas svarÄ«gākās Jenkins iespējas.

ā–1. Bezmaksas, atvērtā koda, atbalsts daudzām platformām

Jenkins var darboties macOS, Windows un Linux platformās. Tas var darboties arī Docker vidē, kas ļauj veidot viendabīgas un ātras automatizētu uzdevumu izpildes. Šis rīks papildus var darboties kā servlets konteineros, kas atbalsta Java, piemēram, Apache Tomcat un GlassFish. Jenkins instalācija ir kvalitatīvi dokumentēta..

ā–2. Izvērsta spraudņu ekosistēma

Jenkins spraudņu ekosistēma izskatās daudz attÄ«stÄ«tāka salÄ«dzinājumā ar citu CI/CD rÄ«ku pievienojamo moduļu ekosistēmām. PaÅ”laik ir vairāk nekā 1500 spraudņu Jenkins. Å ie spraudņi ir paredzēti plaÅ”a uzdevumu spektra risināŔanai, izmantojot tos, var automatizēt dažādus projektus. Smags izvēles bezmaksas spraudņu klāsts nozÄ«mē, ka Jenkins lietotājam nav steidzamas nepiecieÅ”amÄ«bas iegādāties dārgas maksas spraudnus. Ir iespēja integrācijai integrēt Jenkins ar daudziem DevOps rÄ«kiem.

ā–3. VienkārÅ”a instalācija un iestatīŔana

Jenkins ir salÄ«dzinoÅ”i viegli uzstādÄ«t un konfigurēt. Turklāt sistēmas atjaunināŔanas process ir ļoti ērts. Å eit vēlreiz jāpiebilst par dokumentācijas kvalitāti, jo tajā var atrast atbildes uz dažādiem jautājumiem, kas saistÄ«ti ar Jenkins instalēŔanu un konfigurēŔanu.

ā–4. DraudzÄ«ga kopiena

Kā jau minēts, Jenkins ir atvērtā koda projekts, kura ekosistēmā ietilpst liels pluginu skaits. Apkārt Jenkins ir veidojusies liela lietotāju un izstrādātāju kopiena, kas palīdz projekta attīstībā. Kopiena ir viens no faktoriem, kas veicina Jenkins attīstību.

ā–5. REST API pieejamÄ«ba

Strādājot ar Jenkins, var izmantot REST API, kas paplaÅ”ina sistēmas iespējas. API attālinātai piekļuvei ir pieejams trijos variantos: XML, JSON ar JSONP atbalstu, Python. Å eit dokumetācijas lapa, kas atklāj sÄ«kākas detaļas par darbÄ«bu ar Jenkins REST API.

ā–6. Uzdevumu paralēlas izpildes atbalsts

Jenkins atbalsta DevOps uzdevumu paralelizēŔanu. To viegli integrēt ar atbilstoÅ”iem rÄ«kiem un saņemt paziņojumus par uzdevumu izpildes rezultātiem. Koda testēŔanas izpildi var paātrināt, organizējot paralēlu projekta bÅ«vi, izmantojot dažādas virtuālās maŔīnas.

ā–7. Atbalsts darbam izplatÄ«tās vidēs

Jenkins ļauj organizēt izplatÄ«tas bÅ«ves, izmantojot vairākus datorus. Å Ä« iespēja ir piemērojama lielos projektos un izmanto darbÄ«bas modeli, kurā ir viens galvenais Jenkins serveris un vairākas pakļautās maŔīnas. Pakļautās maŔīnas var tikt izmantotas situācijās, kad nepiecieÅ”ams organizēt projekta testēŔanu dažādās vidēs. Å Ä«s iespējas izceļ Jenkins no citiem lÄ«dzÄ«giem projektiem.

IepazīŔanās ar GitLab

Jenkins un GitLab CI/CD cīņa
GitLab CI/CD var uzskatÄ«t par vienu no jaunākajiem un iecienÄ«tākajiem DevOps inženieru rÄ«kiem. Å is bezmaksas atvērtā koda rÄ«ks ir iebÅ«vēts GitLab versiju kontroles sistēmā. GitLab platformai ir community versija, kas atbalsta repozitoriju pārvaldÄ«bu, problēmu izsekoÅ”anas rÄ«kus, kodu pārskatu organizēŔanu, mehānismus, kas orientēti uz dokumentācijas izveidi. Uzņēmumi var uzstādÄ«t GitLab lokāli, sasaistot Å”o sistēmu ar Active Directory un LDAP serveriem, lai organizētu droÅ”u autorizāciju un autentifikāciju lietotājiem.

Šeit video pamācība, kas palīdzēs jums uzzināt, kā izveidot CI/CD konveijerus, izmantojot GitLab CI/CD iespējas.

Sākotnēji GitLab CI/CD tika izlaists kā patstāvÄ«gs projekts, taču 2015. gadā Å”is rÄ«ku kopums tika integrēts GitLab 8.0. AtseviŔķs GitLab CI/CD serveris var apkalpot vairāk nekā 25000 lietotāju. Uz Ŕādiem serveriem var izveidot sistēmas, kas atŔķiras ar augstu pieejamÄ«bu.

GitLab CI/CD un pamata projekts GitLab ir uzrakstÄ«ti Ruby un Go valodā. Tie ir izlaisti zem MIT licences. GitLab CI/CD, papildus parastajām CI/CD rÄ«ku iespējām, atbalsta arÄ« papildu iespējas, kas saistÄ«tas, piemēram, ar darbu plānoÅ”anu.

Integrēt GitLab CI/CD projektā ir ļoti viegli. Izmantojot GitLab CI/CD, projekta koda apstrādes process tiek dalīts posmos, katrs no kuriem var sastāvēt no vairākām uzdevumu izpildēm noteiktā secībā. Uzdevumus var precīzi konfigurēt.

Uzdevumi var tikt izpildÄ«ti paralēli. Pēc posmu un uzdevumu secÄ«bas iestatīŔanas CI/CD kanāls ir gatavs darbam. Var sekot lÄ«dzi tā izpildes gaitai, uzraugot uzdevumu statusu. Tādējādi GitLab CI/CD lietoÅ”ana ir ļoti ērta, iespējams, pat ērtāka nekā ar citiem lÄ«dzÄ«giem rÄ«kiem.

GitLab CI/CD un GitLab īpatnības

GitLab CI/CD ir viens no populārākajiem DevOps rÄ«kiem. Projekts izceļas ar kvalitatÄ«vu dokumentāciju, tā iespējas ir viegli un ērti lietojamas. Ja jÅ«s vēl neesat iepazinies ar GitLab CI/CD, sekojoÅ”ais iespēju saraksts sniegs jums vispārēju priekÅ”statu par to, ko no Ŕī rÄ«ka var sagaidÄ«t. JāatzÄ«mē, ka daudzas no Ŕīm iespējām attiecas uz paÅ”u platformu GitLab, kurā ir integrēts GitLab CI/CD.

ā–1. Popularitāte

GitLab CI/CD ir salÄ«dzinoÅ”i jauns rÄ«ks, kas guvis plaÅ”u pielietojumu. GitLab CI/CD pakāpeniski ir kļuvis par ārkārtÄ«gi populāru CI/CD rÄ«ku, ko izmanto automatizētai programmatÅ«ras testēŔanai un ievieÅ”anai. To ir viegli konfigurēt. Turklāt tas ir bezmaksas CI/CD rÄ«ks, kas iebÅ«vēts GitLab platformā.

ā–2. Atbalsts GitLab Pages un Jekyll

Jekyll ir statisku mājaslapu Ä£eneratoru, ko var izmantot GitLab Pages sistēmā, lai izveidotu mājaslapas, balstoties uz GitLab glabātavām. Sistēma ņem izejmateriālus un Ä£enerē to pamata izveidotu statisku mājaslapu. Ar Ŕādu mājaslapu izskatu un iespējām var pārvaldÄ«t, rediģējot failu _config.yml, ko Jekyll.

ā–3. Projekta plānoÅ”anas iespējas

Pateicoties projektu posmu plānoÅ”anas iespējām, tiek uzlabota problēmu uzraudzÄ«bas ērtÄ«ba un to grupēŔana. Tas ļauj pārvaldÄ«t projekta darbus, plānojot to izpildi noteiktā datumā.

ā–4. CI-runnere automātiskā mērogoÅ”ana

Pateicoties automātiskajai runneru mērogoÅ”anai, kas atbildÄ«gi par konkrētu uzdevumu izpildi, var ievērojami ietaupÄ«t uz serveru jaudas nomas izmaksām. Tas ir ļoti svarÄ«gi, Ä«paÅ”i tad, ja runa ir par vidēm, kur projektu testēŔana notiek paralēli. Turklāt tas ir svarÄ«gi lieliem projektiem, kas sastāv no vairākiem repozitorijiem.

ā–5. Problēmu uzraudzÄ«bas rÄ«ki

JaudÄ«gās GitLab problēmu uzraudzÄ«bas iespējas ir izraisÄ«juÅ”as, ka Å”o platformu izmanto daudzi atvērtā koda projekti. GitLab CI/CD ļauj veikt paralēlu dažādu koda zaru testēŔanu. TestēŔanas rezultātus ērti analizēt sistēmas interfeisā. Tas izdevÄ«gi atŔķir GitLab CI/CD no Jenkins.

ā–6. Pieejas ierobežoÅ”ana repozitorijiem

GitLab platforma atbalsta piekļuves ierobežoÅ”anu repozitorijiem. Piemēram, tiem, kas kopÄ«gi strādā pie projekta kādā repozitorijā, var pieŔķirt tiesÄ«bas, kas atbilst viņu lomām. Tas ir Ä«paÅ”i aktuāli korporatÄ«vajiem projektiem.

ā–7. AktÄ«va kopienas atbalsts

Ap GitLab ir izveidojusies aktÄ«va kopiena, kas veicina Ŕīs platformas un tās rÄ«ku attÄ«stÄ«bu, Ä«paÅ”i — GitLab CI/CD. Dziļa GitLab CI/CD un GitLab integrācija, cita starpā, atvieglo atbilžu atraÅ”anu uz jautājumiem, kas rodas, strādājot ar GitLab CI/CD.

ā–8. Atbalsts darbam ar dažādām versiju kontroles sistēmām

GitLab CI/CD ir sistēma, kas spēj strādāt ne tikai ar kodu, kas izvietots GitLab repozitorijos. Piemēram, kodu var glabāt GitHub repozitorijā, bet CI/CD kanālu var organizēt uz GitLab pamata, izmantojot GitLab CI/CD.

Jenkins un GitLab CI/CD salīdzinājums

Jenkins un GitLab CI/CD ir ļoti labi rÄ«ki, katrs no kuriem spēj nodroÅ”ināt normālu CI/CD kanāla darbÄ«bu. Bet, ja tos salÄ«dzina, izrādās, ka tie, lai gan ir daudz lÄ«dzÄ«gi, tomēr atŔķiras.

Raksturojums
Jenkins
GitLab CI/CD

Atvērtā vai slēgtā koda
Atvērtā koda
Atvērtā koda

UzstādīŔana
NepiecieŔams.
Nav nepiecieÅ”ams, jo tas ir iebÅ«vēta GitLab platformas funkcija.

Unikālās iezīmes
PaplaŔinājumu atbalsts.
Dziļa integrācija versiju kontroles sistēmā.

Atbalsts
Nav.
Ir.

UzstādīŔana un konfigurācija
Nav sarežģījumu
Nav sarežģījumu

PaÅ”saprotama sistēmas izvietoÅ”ana
Tas ir vienÄ«gais sistēmas izmantoÅ”anas variants.
Atbalstīts.

CI/CD cauruļvadu izveide
Atbalstīts, izmantojot Jenkins Pipeline.
Atbalstīts.

Lietojumprogrammu veiktspējas uzraudzība
Nav.
Ir.

Ekosistēma
Ir vairāk nekā 1000 paplaŔinājumu.
Sistēma attīstās GitLab ietvaros.

API
Atbalsta attīstītu API sistēmu.
Piedāvā API dziļākai integrācijai projektos.

JavaScript atbalsts
Ir.
Ir.

Integrācija ar citiem rīkiem
Atbalsta integrāciju ar citiem rīkiem un platformām (Slack, GitHub).
Daudz lÄ«dzekļu integrācijai ar treÅ”o puÅ”u sistēmām, tostarp ar GitHub un Kubernetes.

Koda kvalitātes kontrole
AtbalstÄ«ts — ar SonarQube paplaÅ”inājuma un citu paplaÅ”inājumu palÄ«dzÄ«bu.
Atbalstīts.

AtŔķirības starp Jenkins un GitLab CI/CD

Aprakstot un salÄ«dzinot Jenkins un GitLab CI/CD, pievērsÄ«simies Å”o DevOps rÄ«ku atŔķirÄ«bām. ZināŔanas par Ŕīm atŔķirÄ«bām palÄ«dzēs saprast tos, kas dod priekÅ”roku vienam no Å”iem rÄ«kiem pār otru.

  • GitLab CI/CD var pilnÄ«bā kontrolēt Git repozitorijus. Tas attiecas uz zaru pārvaldÄ«bu repozitorijos un dažām citām iespējām. TurpretÄ« Jenkins, kaut arÄ« spēj strādāt ar repozitorijiem, nenodroÅ”ina tādu paÅ”u lÄ«meņa kontroli kā GitLab CI/CD.
  • Jenkins ir bezmaksas atvērtā koda projekts. Tas, kurÅ” to izvēlas, to izvieto pats. Savukārt GitLab CI/CD ir iekļauts GitLab platformā, tas ir gatavs risinājums.
  • GitLab CI/CD atbalsta attÄ«stÄ«tus uzdevumu pārvaldÄ«bas rÄ«kus projektu lÄ«menÄ«. Å Ä« Jenkins puse ir vājāka.

Jenkins un GitLab CI/CD: stiprās un vājās puses

Tagad jums ir izveidota zināma izpratne par Jenkins un GitLab CI/CD. Tagad, lai jūs labāk iepazītos ar Ŕiem rīkiem, apskatīsim to stiprās un vājās puses. Ceram, ka Ŕo sadaļu jums ļaus pārbaudīt sevi.

ā–Jenkins stiprās puses

  • Liels skaits paplaÅ”inājumu.
  • PilnÄ«ga kontrole pār rÄ«ka instalāciju.
  • VienkārÅ”a skriptu atkļūdoÅ”ana.
  • VienkārÅ”a mezglu konfigurācija.
  • VienkārÅ”a koda izvietoÅ”ana.
  • Ä»oti laba akreditācijas datu pārvaldÄ«bas sistēma.
  • ElastÄ«ba un universalitāte.
  • Atbalsts dažādām programmēŔanas valodām.
  • Sistēma ir saprotama intuitÄ«vi.

ā–Jenkins vājās puses

  • Izmantojot paplaÅ”inājumus, var rasties sarežģījumi.
  • Izmantojot Jenkins mazos projektos, laika izdevumi, kas nepiecieÅ”ami tā paÅ”pārvaldīŔanai, var bÅ«t nepamatoti lieli.
  • TrÅ«kst kopÄ«gu analÄ«tisko datu par CI/CD ķēdēm.

ā–GitLab CI/CD stiprās puses

  • Laba integrācija ar Docker.
  • Viegla runneru skalēŔana.
  • Paralēls uzdevumu izpilde, kas ietilpst CI/CD konveijera posmos.
  • Uzdevumu attiecÄ«bu konfigurēŔana, izmantojot orientētu aciklu grafiku.
  • Augsts skalējamÄ«bas lÄ«menis paralēlu runneru izpildes dēļ.
  • Viegla uzdevumu pievienoÅ”ana.
  • Viegla konfliktu risināŔana.
  • Uzticama droŔības sistēma.

ā–GitLab CI/CD vājās puses

  • Katram uzdevumam ir jāapraksta un jāielādē/izlādē artefakti.
  • Nav iespējams pārbaudÄ«t zaru apvienoÅ”anas rezultātus pirms to faktiskās apvienoÅ”anas.
  • Aprakstot CI/CD konveijera posmus, paÅ”laik nav iespējams izcelt atseviŔķus posmus.

Secinājumi

Gan Jenkins, gan GitLab CI/CD ir spēcÄ«gas un vājākas puses. Atbilde uz jautājumu, ko izvēlēties, ir atkarÄ«ga no konkrētā projekta vajadzÄ«bām un iezÄ«mēm. Katrs no Å”odien apskatÄ«tajiem CI/CD rÄ«kiem atŔķiras ar noteiktām Ä«patnÄ«bām, lai gan Å”ie rÄ«ki ir radÄ«ti, lai risinātu to paÅ”u uzdevumu. Tajā paŔā laikā Jenkins ir patstāvÄ«gs rÄ«ks, bet GitLab CI/CD ir daļa no platformas, kas paredzēta sadarbÄ«bai pie koda.

Izvēloties CI/CD sistēmu, ir svarÄ«gi ņemt vērā ne tikai tās iespējas, bet arÄ« ieguldÄ«jumus, kas var bÅ«t ar to saistÄ«ti, un to, ar ko precÄ«zi ir pieraduÅ”i strādāt DevOps inženieri, kas atbalsta projektu.

Kurus CI/CD rīkus jūs izmantojat?

Jenkins un GitLab CI/CD cīņa

Jenkins un GitLab CI/CD cīņa

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster