Dženkinsa cīņa un GitLab CI/CD

Pēdējo desmit gadu laikā ir panākts ievērojams progress nepārtrauktas integrācijas (CI) un nepārtrauktas izvietošanas (CD) rīku izstrādē. Programmatūras izstrādes un darbības integrēšanas tehnoloģiju attīstība (Development Operations, DevOps) ir izraisījusi strauju pieprasījuma pieaugumu pēc CI/CD rīkiem. Esošie risinājumi tiek pastāvīgi pilnveidoti, cenšoties iet līdzi laikam, tiek izlaistas jaunas versijas, un programmatūras kvalitātes nodrošināšanas (QA) pasaulē pastāvīgi parādās daudzi jauni produkti. Ar tik lielu izvēles iespēju izvēlēties pareizos rīkus nav viegls uzdevums.

Dženkinsa cīņa un GitLab CI/CD

Starp visiem esošajiem CI/CD rīkiem ir divi projekti, kuriem noteikti ir vērts pievērst uzmanību tiem, kas meklē kaut ko šajā jomā. Mēs runājam par Jenkins un GitLab CI/CD rīku, kas ir daļa no GitLab platformas. Dženkinsam ir vairāk nekā 16000 zvaigznes vietnē GitHub. GitLab repozitorijs vietnē gitlab.com ir ieguvis nedaudz vairāk 2000 zvaigznes Ja salīdzinām repozitoriju popularitāti, izrādās, ka Dženkinss ieguva 8 reizes vairāk zvaigžņu nekā platforma, kas ietver GitLab CI/CD. Bet, izvēloties CI/CD rīku, tas nebūt nav vienīgais rādītājs, kam vērts pievērst uzmanību. Ir daudz citu, kas izskaidro, kāpēc Jenkins un GitLab CI/CD daudzos salīdzinājumos ir ļoti tuvu viens otram.

Ņemiet, piemēram, datus no platformas G2, kurā tiek apkopotas dažādu produktu atsauksmes un lietotāju sniegtie vērtējumi. Šeit ir vidējais vērtējums Jenkins, kas iegūts no 288 atsauksmēm, ir 4,3 zvaigznes. Ak GitLab Šeit ir 270 atsauksmes, un vidējais vērtējums šim rīkam ir 4,4 zvaigznes. Mēs nekļūdītos, sakot, ka Jenkins un GitLab CI/CD konkurē savā starpā ar vienādiem noteikumiem. Interesanti atzīmēt, ka Dženkinsa projekts parādījās 2011. gadā un kopš tā laika ir bijis iecienīts testētāju rīks. Bet tajā pašā laikā GitLab CI/CD projekts, kas tika uzsākts 2014. gadā, ir ieņēmis savas pozīcijas, ļoti augstu, pateicoties šīs platformas piedāvātajām uzlabotajām iespējām.

Ja runājam par Jenkins popularitāti, salīdzinot ar citām līdzīgām platformām, tad atzīmējam, ka pēc Travis CI un Jenkins platformu salīdzināšanas raksta publicēšanas organizējām aptauju. Tajā piedalījās 85 lietotāji. Respondentiem tika lūgts izvēlēties CI/CD rīku, kas viņiem patika vislabāk. 79% izvēlējās Jenkins, 5% izvēlējās Travis CI, un 16% norādīja, ka dod priekšroku citiem instrumentiem.

Dženkinsa cīņa un GitLab CI/CD
Aptaujas rezultāti

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

Ja jūs nopietni domājat par DevOps, tad jums rūpīgi jāizvēlas atbilstošie rīki, ņemot vērā projekta iezīmes, tā budžetu un citas prasības. Lai palīdzētu jums izdarīt pareizo izvēli, mēs analizēsim Jenkins un GitLab CI/CD. Es ceru, ka tas palīdzēs jums izdarīt pareizo izvēli.

Iepazīstinām ar Dženkinsu

Dženkinsa cīņa un GitLab CI/CD
Jenkins Jenkins ir plaši pazīstams, elastīgs CI/CD rīks, kas paredzēts dažādu ar programmatūras projektiem saistītu uzdevumu automatizēšanai. Jenkins ir pilnībā rakstīts Java valodā un izlaists saskaņā ar MIT licenci. Tas piedāvā jaudīgu funkciju kopumu, kas paredzēts programmatūras izveides, testēšanas, izvietošanas, integrēšanas un izlaišanas uzdevumu automatizēšanai. Šo rīku var izmantot dažādās operētājsistēmās. Tās ietver: macOS, Windows un daudzi izplatījumi Linux, piemēram — OpenSUSE, Ubuntu un Red Hat. Jenkins instalācijas pakotnes ir pieejamas dažādām operētājsistēmām, un rīku var instalēt Docker un jebkurā sistēmā ar JRE (Java Runtime Environment).

Jenkins izstrādātāji ir izveidojuši vēl vienu projektu Jenkins X, kas paredzēts darbam Kubernetes vidē. Jenkins X integrē Helm, Jenkins CI/CD serveri, Kubernetes un citus rīkus, kas izstrādāti, lai izveidotu CI/CD konveijerus, kas atbilst DevOps paraugpraksei. Piemēram, šeit tiek izmantots GitOps.

Kā vienu no Jenkins priekšrocībām var pieskaitīt to, ka tā skripti ir ļoti labi strukturēti, saprotami un viegli lasāmi. Jenkins komanda ir izveidojusi aptuveni 1000 spraudņu, kuru mērķis ir organizēt Jenkins mijiedarbību ar dažādām tehnoloģijām. Skriptos var izmantot autentifikācijas sistēmas, kas, piemēram, ļauj pieslēgties dažādām slēgtām sistēmām.

Dženkinsa cauruļvada darbības laikā var novērot, kas notiek katrā solī, vai atsevišķi darba posmi tika veiksmīgi vai nē. To visu var novērot, nevis izmantojot kaut kādu grafisko interfeisu, bet gan izmantojot termināļa iespējas.

Dženkinsa iezīmes

Starp labi zināmajām Jenkins funkcijām ir konfigurācijas vienkāršība, augsts dažādu darbību automatizācijas līmenis un lieliska dokumentācija. Ja mēs runājam par DevOps problēmu risināšanu, tad Jenkins tiek uzskatīts par ļoti uzticamu rīku, kuru izmantojot, kā likums, nav jēgas rūpīgi uzraudzīt visu projekta apstrādes procesu. Tas neattiecas uz citiem CI/CD rīkiem. Parunāsim par dažām svarīgākajām Dženkinsa funkcijām.

▍1. Bezmaksas, atvērtā koda, atbalstītas vairākas platformas

Dženkinss var darboties uz platformām macOS, Windows и LinuxTo var darbināt arī Docker vidē, nodrošinot konsekventu un ātru automatizētu uzdevumu izpildi. Šis rīks var darboties arī kā servlet Java iespējotos konteineros, piemēram, Apache Tomcat un GlassFish. Jenkins instalēšana ir augstas kvalitātes process. dokumentēts.

▍2. Izstrādāta spraudņu ekosistēma

Šķiet, ka Dženkinsa spraudņu ekosistēma ir daudz nobriedušāka salīdzinājumā ar citu CI/CD rīku spraudņu ekosistēmām. Pašlaik ir vairāk nekā 1500 Jenkins spraudņu. Šie spraudņi ir paredzēti dažādu problēmu risināšanai, ar to palīdzību jūs varat automatizēt visdažādākos projektus. Bezmaksas spraudņu izvēle nozīmē, ka ikvienam, kas izmanto Jenkins, nav steidzami jāiegādājas dārgi maksas spraudņi. Pastāv iespēja integrācija Jenkins ar daudziem DevOps rīkiem.

▍3. Viegla uzstādīšana un iestatīšana

Jenkins ir diezgan viegli uzstādīt un konfigurēt. Tajā pašā laikā sistēmas atjaunināšanas process ir arī ļoti ērts. Šeit atkal ir vērts pieminēt dokumentācijas kvalitāti, jo tā var atbildēt 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ā pirmkoda projekts, kura ekosistēma ietver milzīgu skaitu spraudņu. Ap Jenkinsu ir liela lietotāju un izstrādātāju kopiena, kas palīdz izstrādāt projektu. Kopiena ir viens no faktoriem, kas virza Dženkinsa attīstību.

▍5. REST API pieejamība

Strādājot ar Jenkins, varat izmantot REST API, kas paplašina sistēmas iespējas. API attālinātai piekļuvei sistēmai tiek piedāvāts trīs versijās: XML, JSON ar JSONP atbalstu, Python. šeit ir dokumentācijas lapa, kurā sniegta informācija par darbu ar Jenkins REST API.

▍6. Paralēlā uzdevumu atbalsts

Jenkins atbalsta DevOps uzdevumu paralēlizāciju. To var viegli integrēt ar saistītajiem rīkiem un saņemt paziņojumus par uzdevumu rezultātiem. Kodu testēšanu var paātrināt, organizējot paralēlas projektu būves, izmantojot dažādas virtuālās mašīnas.

▍7. Atbalsts darbam izkliedētā vidē

Jenkins ļauj organizēt izplatītas versijas, izmantojot vairākus datorus. Šī funkcija ir piemērojama lielos projektos un izmanto darba shēmu, kurā ir viens galvenais Jenkins serveris un vairākas vergu mašīnas. Vergu mašīnas var izmantot arī situācijās, kad nepieciešams organizēt projekta testēšanu dažādās vidēs. Šīs funkcijas atšķir Jenkins no citiem līdzīgiem projektiem.

Iepazīstinām ar GitLab

Dženkinsa cīņa un GitLab CI/CD
GitLab CI/CD var saukt par vienu no jaunākajiem un DevOps inženieru iecienītākajiem rīkiem. Šis bezmaksas atvērtā pirmkoda rīks ir iebūvēts GitLab versiju kontroles sistēmā. GitLab platformai ir kopienas versija, tā atbalsta repozitoriju pārvaldību, rīkus problēmu izsekošanai, koda pārskatīšanas organizēšanu un mehānismus, kas vērsti uz dokumentācijas izveidi. Uzņēmumi var instalēt GitLab lokāli, saistot to ar Active Directory un LDAP serveriem drošai lietotāju autorizācijai un autentifikācijai.

šeit ir Video pamācība, kas palīdzēs jums uzzināt, kā izveidot CI/CD cauruļvadus, izmantojot GitLab CI/CD iespējas.

GitLab CI/CD sākotnēji tika izlaists kā atsevišķs projekts, taču 2015. gadā rīku kopa tika integrēta GitLab 8.0. Viens GitLab CI/CD serveris var atbalstīt vairāk nekā 25000 XNUMX lietotāju. Pamatojoties uz šādiem serveriem, jūs varat izveidot sistēmas, kas ir ļoti pieejamas.

GitLab CI/CD un galvenais GitLab projekts ir rakstīti Ruby and Go. Tie tiek izlaisti saskaņā ar MIT licenci. GitLab CI/CD papildus parastajām CI/CD rīku iespējām atbalsta arī papildu iespējas, kas saistītas, piemēram, ar darba plānošanu.

GitLab CI/CD integrēšana projektā ir ļoti vienkārša. Izmantojot GitLab CI/CD, projekta koda apstrādes process tiek sadalīts posmos, no kuriem katrs var sastāvēt no vairākiem noteiktā secībā veiktiem uzdevumiem. Uzdevumus var precizēt.

Uzdevumus var izpildīt paralēli. Pēc posmu un uzdevumu secības iestatīšanas CI/CD konveijers ir gatavs darbam. Varat pārraudzīt tā norisi, izsekojot uzdevumu statusam. Rezultātā GitLab CI/CD lietošana ir ļoti ērta, iespējams, ērtāka par citiem līdzīgiem rīkiem.

GitLab CI/CD un GitLab funkcijas

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 esat iesācējs GitLab CI/CD, tālāk sniegtais rīka funkciju saraksts sniegs vispārīgu priekšstatu par to, ko no tā varat sagaidīt. Jāpiebilst, ka daudzas no šīm funkcijām ir saistītas ar pašu GitLab platformu, kurā ir integrēts GitLab CI/CD.

▍1. Popularitāte

GitLab CI/CD ir salīdzinoši jauns rīks, kas ir plaši izmantots. 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 izvietošanai. To ir viegli iestatīt. Tas ir arī bezmaksas CI/CD rīks, kas iebūvēts GitLab platformā.

▍2. GitLab Pages un Jekyll atbalsts

Jekyll ir statisks vietņu ģenerators, ko var izmantot GitLab Pages sistēmā, lai izveidotu vietnes, kuru pamatā ir GitLab repozitoriji. Sistēma ņem izejmateriālus un, pamatojoties uz tiem, ģenerē gatavu statisku vietni. Rediģējot failu, varat kontrolēt šādu vietņu izskatu un iespējas _config.yml, ko izmantoja Jekyll.

▍3. Projektu plānošanas iespējas

Pateicoties iespējai plānot projekta posmus, palielinās problēmu un to grupu izsekošanas ērtība. Tas ļauj vadīt projektu darba organizāciju un plānot to īstenošanu uz konkrētu datumu.

▍4. Automātiska CI skrējēju mērogošana

Pateicoties automātiskai skrējēju mērogošanai, kas ir atbildīgi par konkrētu uzdevumu veikšanu, jūs varat ievērojami ietaupīt servera jaudas nomas izmaksas. Tas ir ļoti svarīgi, jo īpaši, ja runa ir par vidēm, kur projekti tiek testēti paralēli. Turklāt tas ir svarīgi lieliem projektiem, kas sastāv no vairākām krātuvēm.

▍5. Problēmu izsekošanas rīki

GitLab jaudīgās problēmu izsekošanas iespējas ir novedušas pie daudziem atvērtā pirmkoda projektiem, izmantojot platformu. GitLab CI/CD ļauj paralēli testēt dažādus kodu zarus. Testa rezultātus var ērti analizēt sistēmas saskarnē. Tas atšķir GitLab CI/CD no Dženkinsa.

▍6. Piekļuves ierobežošana krātuvēm

GitLab platforma atbalsta piekļuves ierobežošanu krātuvēm. Piemēram, tiem, kas sadarbojas ar projektu repozitorijā, var piešķirt tiesības, kas atbilst viņu lomām. Īpaši tas attiecas uz korporatīvajiem projektiem.

▍7. Aktīvs sabiedrības atbalsts

Ap GitLab ir izveidojusies aktīva kopiena, kas veicina šīs platformas un tās rīku, jo īpaši GitLab CI/CD, izstrādi. Dziļa integrācija starp GitLab CI/CD un GitLab, cita starpā, ļauj vieglāk atrast atbildes 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 var darboties ne tikai ar kodu, kas mitināts GitLab krātuvēs. Piemēram, kodu var saglabāt GitHub repozitorijā, un CI/CD konveijeru var organizēt, pamatojoties uz GitLab, izmantojot GitLab CI/CD.

Dženkinsa un GitLab CI/CD salīdzinājums

Jenkins un GitLab CI/CD ir ļoti labi rīki, no kuriem katrs spēj nodrošināt normālu CI/CD konveijera darbību. Bet, ja tos salīdzina, izrādās, ka, lai gan tie daudzējādā ziņā ir līdzīgi, savā ziņā tie atšķiras viens no otra.

Raksturošana
Jenkins
GitLab CI/CD

Atvērts vai slēgts avots
Atvērtais avots
Atvērtais avots

Uzstādīšana
Obligāti.
Nav nepieciešams, jo šī ir GitLab platformas iebūvēta funkcija.

Unikālas īpašības
Spraudņu atbalsts.
Dziļa integrācija versiju kontroles sistēmā.

Atbalsts
Trūkst.
Pieejams.

Uzstādīšana un konfigurēšana
Nekādas grūtības nesagādā
Nekādas grūtības nesagādā

Sistēmas pašizvietošana
Šī ir vienīgā iespēja izmantot sistēmu.
Atbalstīts.

CI/CD konveijeru izveide
Atbalsta un izmanto Jenkins Pipeline.
Atbalstīts.

Lietojumprogrammu veiktspējas uzraudzība
Trūkst.
Pieejams.

Ekosistēma
Ir vairāk nekā 1000 spraudņu.
Sistēma tiek izstrādāta GitLab ietvaros.

API
Atbalsta uzlaboto API sistēmu.
Piedāvā API dziļākai integrācijai projektos.

JavaScript atbalsts
Pieejams.
Pieejams.

Integrācija ar citiem rīkiem
Tiek atbalstīta integrācija ar citiem rīkiem un platformām (Slack, GitHub).
Daudzi rīki integrācijai ar trešo pušu sistēmām, jo ​​īpaši ar GitHub un Kubernetes.

Koda kvalitātes kontrole
Atbalstīts - izmantojot SonarQube spraudni un citus spraudņus.
Atbalstīts.

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

Pēc Jenkins un GitLab CI/CD aprakstīšanas un salīdzināšanas pievērsīsimies atšķirībām starp šiem DevOps rīkiem. Zinot šīs atšķirības, tiks sniegts ieskats tajos, kuri dod priekšroku vienam no šiem rīkiem, nevis otram.

  • GitLab CI/CD var pilnībā kontrolēt Git repozitorijus. Mēs runājam par repozitorija filiāļu pārvaldību un dažām citām funkcijām. Bet Jenkins, lai gan tas var strādāt ar krātuvēm, nenodrošina tādu pašu kontroles līmeni pār tiem kā GitLab CI/CD.
  • Jenkins ir bezmaksas atvērtā koda projekts. Tas, kurš to izvēlas, pats to izvērš. Un GitLab CI/CD ir iekļauts GitLab platformā, tas ir gatavs risinājums.
  • GitLab CI/CD atbalsta uzlabotus problēmu pārvaldības rīkus, kas darbojas projekta līmenī. Šī Dženkinsa puse ir mazāk attīstīta.

Dženkinss un GitLab CI/CD: stiprās un vājās puses

Tagad jums ir priekšstats par Jenkins un GitLab CI/CD. Tagad, lai jūs vēl labāk iepazītu šos rīkus, apskatīsim to stiprās un vājās puses. Mēs uzskatām, ka jūs jau esat pieņēmis lēmumu par jums nepieciešamo rīku. Es ceru, ka šī sadaļa ļaus jums pārbaudīt sevi.

▍Jenkins stiprās puses

  • Liels skaits spraudņu.
  • Pilnīga instrumenta uzstādīšanas kontrole.
  • Vienkārša skrējēju atkļūdošana.
  • Vienkārša mezgla iestatīšana.
  • Vienkārša koda izvietošana.
  • Ļoti laba akreditācijas datu pārvaldības sistēma.
  • Elastīgums un daudzpusība.
  • Atbalsts dažādām programmēšanas valodām.
  • Sistēma ir saprotama intuitīvā līmenī.

▍Jenkins vājās puses

  • Izmantojot spraudņus, var rasties grūtības.
  • Izmantojot Jenkins mazos projektos, laiks, kas nepieciešams, lai to iestatītu pats, var būt nepamatoti liels.
  • Vispārējas analītiskās informācijas trūkums par CI/CD ķēdēm.

▍GitLab CI/CD stiprās puses

  • Laba integrācija ar Docker.
  • Vienkārša skrējēju mērogošana.
  • CI/CD konveijera posmos iekļauto uzdevumu paralēla izpilde.
  • Izmantojot virzīto aciklisko grafiku modeli, uzstādot uzdevumu attiecības.
  • Augsts mērogojamības līmenis, pateicoties iespējai paralēli izpildīt skrējējus.
  • Vienkārša uzdevumu pievienošana.
  • Vienkārša konfliktu risināšana.
  • Uzticama drošības sistēma.

▍GitLab CI/CD vājās puses

  • Katram uzdevumam ir jāapraksta un jāaugšupielādē/jāizlādē artefakti.
  • Jūs nevarat pārbaudīt filiāļu apvienošanas rezultātus pirms to faktiskās apvienošanas.
  • Aprakstot CI/CD konveijera posmus, vēl nav iespējams nošķirt atsevišķus posmus.

Rezultāti

Gan Jenkins, gan GitLab CI/CD ir stiprās un vājās puses. Atbilde uz jautājumu, ko izvēlēties, ir atkarīga no konkrētā projekta vajadzībām un īpašībām. Katrs no šodien apspriestajiem CI/CD rīkiem atšķiras ar noteiktām funkcijām, lai gan šie rīki tika izveidoti, lai atrisinātu vienu un to pašu problēmu. Tajā pašā laikā Jenkins ir atsevišķs rīks, un GitLab CI/CD ir daļa no platformas, kas paredzēta sadarbībai ar kodu.

Izvēloties CI/CD sistēmu, papildus tās iespējām ir vērts ņemt vērā izmaksas, kas ar to var būt saistītas, un ar ko īsti ir pieraduši strādāt projektu atbalstošie DevOps inženieri.

Kādus CI/CD rīkus jūs izmantojat?

Dženkinsa cīņa un GitLab CI/CD

Dženkinsa cīņa un GitLab CI/CD

Avots: www.habr.com

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster