Bitka pri Jenkinsu in GitLab CI/CD

V zadnjem desetletju je bil dosežen pomemben napredek pri razvoju orodij za stalno integracijo (CI) in stalno uvajanje (CD). Razvoj tehnologij za integracijo razvoja in delovanja programske opreme (Development Operations, DevOps) je povzročil hitro povečanje povpraševanja po orodjih CI/CD. Obstoječe rešitve se nenehno izboljšujejo in skušajo iti v korak s časom, izhajajo nove različice, v svetu zagotavljanja kakovosti programske opreme (QA) pa se pojavljajo številni novi izdelki. Pri tako bogati izbiri izbira pravega orodja ni lahka naloga.

Bitka pri Jenkinsu in GitLab CI/CD

Med vsemi obstoječimi CI/CD orodji sta dva projekta, ki sta vsekakor vredna pozornosti za tiste, ki iščete nekaj na tem področju. Govorimo o Jenkinsu in orodju GitLab CI/CD, ki je del platforme GitLab. Jenkins ima več kot 16000 zvezde na GitHubu. Repozitorij GitLab na gitlab.com je pridobil malo več 2000 zvezde Če primerjamo priljubljenost repozitorijev, se izkaže, da je Jenkins dosegel 8-krat več zvezdic kot platforma, ki vključuje GitLab CI/CD. Toda pri izbiri orodja CI/CD to še zdaleč ni edini kazalnik, na katerega je vredno biti pozoren. Obstaja veliko drugih, kar pojasnjuje, zakaj sta Jenkins in GitLab CI/CD v mnogih primerjavah zelo blizu drug drugemu.

Vzemimo za primer podatke s platforme G2, ki zbira ocene najrazličnejših izdelkov in ocene, ki jim jih uporabniki dodelijo. Tukaj je povprečna ocena Jenkins, ki izhaja iz 288 ocen, je 4,3 zvezdice. Oh GitLab Tukaj je 270 ocen, povprečna ocena za to orodje pa je 4,4 zvezdice. Ne bi se zmotili, če bi rekli, da Jenkins in GitLab CI/CD tekmujeta pod enakimi pogoji. Zanimivo je, da se je projekt Jenkins pojavil leta 2011 in od takrat je priljubljeno orodje preizkuševalcev. Toda hkrati je projekt GitLab CI/CD, ki se je začel leta 2014, zaradi naprednih zmogljivosti, ki jih ponuja ta platforma, zavzel svoj položaj, zelo visok.

Če govorimo o priljubljenosti Jenkins v primerjavi z drugimi podobnimi platformami, ugotavljamo, da smo po objavi članka o primerjavi platform Travis CI in Jenkins organizirali raziskavo. Udeležilo se ga je 85 uporabnikov. Anketirance so prosili, naj izberejo orodje CI/CD, ki jim je najbolj všeč. 79 % jih je izbralo Jenkins, 5 % Travis CI, 16 % pa je navedlo, da imajo raje druga orodja.

Bitka pri Jenkinsu in GitLab CI/CD
Rezultati ankete

Med ostalimi CI/CD orodji je največkrat omenjen GitLab CI/CD.

Če resno razmišljate o DevOps, morate skrbno izbrati ustrezna orodja ob upoštevanju značilnosti projekta, njegovega proračuna in drugih zahtev. Da bi vam pomagali narediti pravo izbiro, bomo analizirali Jenkins in GitLab CI/CD. Upam, da vam bo to pomagalo narediti pravo izbiro.

Predstavljamo Jenkinsa

Bitka pri Jenkinsu in GitLab CI/CD
Jenkins je znano, prilagodljivo orodje CI/CD, zasnovano za avtomatizacijo številnih nalog, povezanih s projekti programske opreme. Jenkins je v celoti napisan v Javi in ​​je izdan pod licenco MIT. Ima zmogljiv nabor zmogljivosti, namenjenih avtomatizaciji opravil, povezanih z gradnjo, testiranjem, uvajanjem, integracijo in izdajo programske opreme. To orodje se lahko uporablja v različnih operacijskih sistemih. Sem spadajo macOS, Windows in številne distribucije Linuxa, kot so OpenSUSE, Ubuntu in Red Hat. Obstajajo namestitveni paketi Jenkins, zasnovani za različne operacijske sisteme, to orodje je mogoče namestiti na Docker in na kateri koli sistem, ki ima JRE (Java Runtime Environment).

Jenkinsovi razvijalci so ustvarili še en projekt, Jenkins X, ki je zasnovan za delo v okolju Kubernetes. Jenkins X združuje Helm, Jenkins CI/CD Server, Kubernetes in druga orodja, zasnovana za gradnjo cevovodov CI/CD, ki sledijo najboljšim praksam DevOps. Tu se na primer uporablja GitOps.

Eni od prednosti Jenkinsa lahko dodamo dejstvo, da so njegovi skripti zelo dobro strukturirani, razumljivi in ​​lahko berljivi. Ekipa Jenkins je ustvarila približno 1000 vtičnikov, ki so namenjeni organizaciji interakcije Jenkins z različnimi tehnologijami. V skriptih lahko uporabite sisteme za preverjanje pristnosti, ki vam na primer omogočajo povezavo z različnimi zaprtimi sistemi.

Med delovanjem Jenkinsovega cevovoda lahko opazujete, kaj se dogaja na vsakem koraku, ali so bile določene faze dela uspešno zaključene ali ne. Vse to lahko opazujete, vendar ne z uporabo neke vrste grafičnega vmesnika, ampak z uporabo zmogljivosti terminala.

Lastnosti Jenkinsa

Med znanimi lastnostmi Jenkinsa so enostavnost konfiguracije, visoka stopnja avtomatizacije različnih operacij in odlična dokumentacija. Če govorimo o reševanju težav DevOps, potem Jenkins velja za zelo zanesljivo orodje, s katerim praviloma ni smiselno natančno spremljati celotnega procesa obdelave projekta. To ne velja za druga orodja CI/CD. Pogovorimo se o nekaterih najpomembnejših značilnostih Jenkinsa.

▍1. Brezplačno, odprtokodno, podprto za več platform

Jenkins lahko deluje na platformah macOS, Windows in Linux. Lahko deluje tudi v okolju Docker, ki vam omogoča enotno in hitro organiziranje avtomatiziranih opravil. Orodje se lahko izvaja tudi kot servlet v vsebnikih, ki podpirajo Javo, kot sta Apache Tomcat in GlassFish. Učinkovito namestite Jenkins dokumentirano.

▍2. Razvit ekosistem vtičnikov

Zdi se, da je ekosistem vtičnikov Jenkins veliko bolj zrel v primerjavi z ekosistemi vtičnikov drugih orodij CI/CD. Trenutno obstaja več kot 1500 vtičnikov za Jenkins. Ti vtičniki so namenjeni reševanju najrazličnejših problemov; z njihovo pomočjo lahko avtomatizirate najrazličnejše projekte. Bogastvo brezplačnih vtičnikov, med katerimi lahko izbirate, pomeni, da kdorkoli, ki uporablja Jenkins, nima nujne potrebe po nakupu dragih plačljivih vtičnikov. Obstaja možnost integracije Jenkins s številnimi orodji DevOps.

▍3. Enostavna namestitev in nastavitev

Jenkins je zelo enostaven za namestitev in konfiguracijo. Hkrati je zelo priročen tudi postopek posodabljanja sistema. Tukaj velja ponovno omeniti kakovost dokumentacije, saj lahko odgovori na različna vprašanja v zvezi z namestitvijo in konfiguracijo Jenkinsa.

▍4. Prijazna skupnost

Kot že omenjeno, je Jenkins odprtokodni projekt, katerega ekosistem vključuje ogromno vtičnikov. Okoli Jenkinsa obstaja velika skupnost uporabnikov in razvijalcev, ki pomagajo pri razvoju projekta. Skupnost je eden od dejavnikov, ki poganja Jenkinsov razvoj.

▍5. Razpoložljivost REST API

Pri delu z Jenkinsom lahko uporabite REST API, ki razširi zmogljivosti sistema. API za oddaljeni dostop do sistema je predstavljen v treh različicah: XML, JSON s podporo JSONP, Python. Tu stran z dokumentacijo, ki zajema podrobnosti o delu z API-jem Jenkins REST.

▍6. Podpora za vzporedne naloge

Jenkins podpira paralelizacijo nalog DevOps. Preprosto ga je mogoče integrirati s povezanimi orodji in prejemati obvestila o rezultatih nalog. Testiranje kode je mogoče pospešiti z organiziranjem vzporednih gradenj projektov z uporabo različnih virtualnih strojev.

▍7. Podpora za delo v porazdeljenih okoljih

Jenkins vam omogoča organiziranje porazdeljenih gradenj z uporabo več računalnikov. Ta funkcija je uporabna v velikih projektih in uporablja delovno shemo, v kateri je en glavni strežnik Jenkins in več podrejenih strojev. Podrejeni stroji se lahko uporabljajo tudi v situacijah, ko je treba organizirati testiranje projekta v različnih okoljih. Te lastnosti ločujejo Jenkinsa od drugih podobnih projektov.

Predstavljamo GitLab

Bitka pri Jenkinsu in GitLab CI/CD
GitLab CI / CD lahko imenujemo eno najnovejših in najbolj priljubljenih orodij inženirjev DevOps. To brezplačno, odprtokodno orodje je vgrajeno v sistem za nadzor različic GitLab. Platforma GitLab ima različico skupnosti, podpira upravljanje repozitorija, orodja za sledenje težavam, organiziranje pregledov kode in mehanizme, osredotočene na ustvarjanje dokumentacije. Podjetja lahko namestijo GitLab na mestu uporabe in ga povežejo s strežniki Active Directory in LDAP za varno avtorizacijo in avtentikacijo uporabnikov.

Tu Video vadnica, ki vam bo pomagala naučiti sestavljati cevovode CI/CD z uporabo zmogljivosti GitLab CI/CD.

GitLab CI/CD je bil prvotno izdan kot samostojen projekt, leta 2015 pa je bil nabor orodij integriran v GitLab 8.0. Posamezen strežnik GitLab CI/CD lahko podpira več kot 25000 uporabnikov. Na osnovi takih strežnikov lahko ustvarite sisteme, ki so visoko razpoložljivi.

GitLab CI/CD in glavni projekt GitLab sta napisana v Ruby in Go. Izdani so pod licenco MIT. GitLab CI/CD poleg običajnih zmožnosti orodij CI/CD podpira tudi dodatne zmožnosti, povezane na primer z načrtovanjem dela.

Integracija GitLab CI/CD v vaš projekt je zelo enostavna. Pri uporabi GitLab CI/CD je proces obdelave projektne kode razdeljen na stopnje, od katerih je vsaka lahko sestavljena iz več nalog, izvedenih v določenem vrstnem redu. Naloge je mogoče natančno prilagoditi.

Naloge se lahko izvajajo vzporedno. Po nastavitvi zaporedja stopenj in nalog je cevovod CI/CD pripravljen za uporabo. Njegov napredek lahko spremljate tako, da spremljate stanje nalog. Posledično je uporaba GitLab CI/CD zelo priročna, morda bolj priročna kot druga podobna orodja.

Funkcije GitLab CI/CD in GitLab

GitLab CI/CD je eno najbolj priljubljenih orodij DevOps. Projekt odlikuje kakovostna dokumentacija, njegove zmogljivosti so enostavne in priročne za uporabo. Če ste novinec v GitLab CI/CD, vam bo naslednji seznam funkcij orodja dal splošno predstavo o tem, kaj lahko od njega pričakujete. Opozoriti je treba, da je veliko teh funkcij povezanih s samo platformo GitLab, v katero je integriran GitLab CI/CD.

▍1. Priljubljenost

GitLab CI/CD je razmeroma novo orodje, ki je našlo široko uporabo. GitLab CI/CD je postopoma postal izjemno priljubljeno orodje CI/CD, ki se uporablja za avtomatizirano testiranje in uvajanje programske opreme. Nastavitev je enostavna. Je tudi brezplačno orodje CI/CD, vgrajeno v platformo GitLab.

▍2. Podpora za GitLab Pages in Jekyll

Jekyll je generator statičnih spletnih mest, ki se lahko uporablja znotraj sistema GitLab Pages za ustvarjanje spletnih mest, ki temeljijo na repozitorijih GitLab. Sistem vzame izvorne materiale in na njihovi podlagi ustvari že pripravljeno statično spletno mesto. Z urejanjem datoteke lahko nadzirate videz in zmogljivosti takšnih mest _config.yml, ki ga uporablja Jekyll.

▍3. Zmogljivosti projektnega načrtovanja

Zahvaljujoč zmožnosti načrtovanja stopenj projekta se poveča udobje sledenja težavam in njihovim skupinam. To vam omogoča upravljanje organizacije dela na projektih in načrtovanje njihove izvedbe za določen datum.

▍4. Samodejno skaliranje tekačev CI

Zahvaljujoč samodejnemu skaliranju tekačev, ki so odgovorni za izvajanje določenih nalog, lahko resno prihranite pri stroških najema strežniških zmogljivosti. To je zelo pomembno, zlasti ko gre za okolja, kjer se projekti testirajo vzporedno. Poleg tega je to pomembno za velike projekte, sestavljene iz več skladišč.

▍5. Orodja za sledenje težavam

GitLabove zmogljive zmožnosti sledenja težavam so vodile do številnih odprtokodnih projektov, ki uporabljajo platformo. GitLab CI/CD vam omogoča vzporedno testiranje različnih vej kode. Rezultate testov je mogoče priročno analizirati v sistemskem vmesniku. To ločuje GitLab CI/CD od Jenkinsa.

▍6. Omejitev dostopa do skladišč

Platforma GitLab podpira omejevanje dostopa do repozitorijev. Na primer, tistim, ki sodelujejo pri projektu v repozitoriju, se lahko dodelijo pravice, ki ustrezajo njihovim vlogam. To še posebej velja za korporativne projekte.

▍7. Aktivna podpora skupnosti

Okoli GitLaba se je razvila aktivna skupnost, ki prispeva k razvoju te platforme in njenih orodij, zlasti GitLab CI/CD. Globoka integracija med GitLab CI/CD in GitLab med drugim omogoča lažje iskanje odgovorov na vprašanja, ki se porajajo pri delu z GitLab CI/CD.

▍8. Podpora za delo z različnimi sistemi za nadzor različic

GitLab CI/CD je sistem, ki lahko deluje ne samo s kodo, ki gostuje v repozitorijih GitLab. Na primer, kodo je mogoče shraniti v repozitorij GitHub, cevovod CI/CD pa je mogoče organizirati na podlagi GitLaba z uporabo GitLab CI/CD.

Primerjava Jenkins in GitLab CI/CD

Jenkins in GitLab CI/CD sta zelo dobri orodji, od katerih je vsako sposobno zagotoviti normalno delovanje cevovoda CI/CD. A če ju primerjaš, se izkaže, da se, čeprav sta si v marsičem podobna, v nečem razlikujeta.

Karakterizacija
Jenkins
GitLab CI / CD

Odprta ali zaprta koda
Odprtokodno
Odprtokodno

Namestitev
Obvezno.
Ni potrebno, saj je to vgrajena funkcija platforme GitLab.

Edinstvene lastnosti
Podpora za vtičnike.
Globoka integracija v sistem za nadzor različic.

Podpora
Odsoten.
Na voljo.

Namestitev in konfiguracija
Ne povzroča nobenih težav
Ne povzroča nobenih težav

Samopostavitev sistema
To je edina možnost uporabe sistema.
Podprto.

Ustvarjanje cevovodov CI/CD
Podpira in uporablja Jenkins Pipeline.
Podprto.

Spremljanje delovanja aplikacije
Odsoten.
Na voljo.

Ekosistema
Obstaja več kot 1000 vtičnikov.
Sistem se razvija v okviru GitLaba.

API
Podpira napreden sistem API.
Ponuja API za globljo integracijo v projekte.

podpora za JavaScript
Na voljo.
Na voljo.

Integracija z drugimi orodji
Podprta je integracija z drugimi orodji in platformami (Slack, GitHub).
Veliko orodij za integracijo s sistemi tretjih oseb, zlasti z GitHub in Kubernetes.

Kontrola kakovosti kode
Podprto - z uporabo vtičnika SonarQube in drugih vtičnikov.
Podprto.

Razlike med Jenkinsom in GitLab CI/CD

Ko smo opisali in primerjali Jenkins in GitLab CI/CD, se osredotočimo na razlike med tema orodji DevOps. Poznavanje teh razlik bo omogočilo vpogled v tiste, ki imajo raje eno od teh orodij pred drugim.

  • GitLab CI/CD lahko v celoti nadzoruje repozitorije Git. Govorimo o upravljanju vej repozitorija in nekaterih drugih funkcijah. Toda Jenkins, čeprav lahko deluje z repozitoriji, ne zagotavlja enake ravni nadzora nad njimi kot GitLab CI/CD.
  • Jenkins je brezplačen, odprtokodni projekt. Tisti, ki ga izbere, ga sam razgrne. In GitLab CI/CD je vključen v platformo GitLab, je že pripravljena rešitev.
  • GitLab CI/CD podpira napredna orodja za upravljanje težav, ki delujejo na ravni projekta. Ta stran Jenkinsa je manj razvita.

Jenkins in GitLab CI/CD: prednosti in slabosti

Zdaj imate nekaj pojma o Jenkinsu in GitLab CI/CD. Da bi se še bolje seznanili s temi orodji, si poglejmo njihove prednosti in slabosti. Verjamemo, da ste se že odločili, katero orodje potrebujete. Upam, da vam bo ta razdelek omogočil, da se preizkusite.

▍Jenkinsove prednosti

  • Veliko število vtičnikov.
  • Popoln nadzor nad namestitvijo orodja.
  • Enostavno odpravljanje napak tekačev.
  • Enostavna nastavitev vozlišča.
  • Enostavna uvedba kode.
  • Zelo dober sistem za upravljanje poverilnic.
  • Prilagodljivost in vsestranskost.
  • Podpora za različne programske jezike.
  • Sistem je razumljiv na intuitivni ravni.

▍Jenkinsove slabosti

  • Pri uporabi vtičnikov se lahko pojavijo težave.
  • Pri uporabi Jenkinsa v majhnih projektih je lahko čas, potreben za samostojno nastavitev, nerazumno velik.
  • Pomanjkanje splošnih analitičnih informacij o verigah CI/CD.

▍ Prednosti GitLab CI/CD

  • Dobra integracija z Dockerjem.
  • Enostavno skaliranje tekačev.
  • Vzporedno izvajanje nalog, vključenih v stopnje cevovoda CI/CD.
  • Uporaba modela usmerjenega acikličnega grafa pri postavljanju odnosov nalog.
  • Visoka stopnja skalabilnosti zaradi možnosti vzporednega izvajanja tekačev.
  • Enostavnost dodajanja nalog.
  • Preprosto reševanje konfliktov.
  • Zanesljiv varnostni sistem.

▍Slabosti GitLab CI/CD

  • Za vsako nalogo morate opisati in naložiti/odložiti artefakte.
  • Ne morete preizkusiti rezultatov združevanja vej, preden jih dejansko združite.
  • Pri opisu stopenj cevovoda CI/CD še ni mogoče ločiti posameznih stopenj.

Rezultati

Tako Jenkins kot GitLab CI/CD imata prednosti in slabosti. Odgovor na vprašanje, kaj izbrati, je odvisen od potreb in značilnosti posameznega projekta. Vsako od danes razpravljanih orodij CI/CD se razlikuje po določenih funkcijah, čeprav so bila ta orodja ustvarjena za reševanje istega problema. Hkrati je Jenkins samostojno orodje, GitLab CI/CD pa je del platforme, zasnovane za sodelovanje pri kodiranju.

Pri izbiri sistema CI/CD je poleg njegovih zmogljivosti vredno upoštevati stroške, ki so lahko povezani z njim, in s čim točno so DevOps inženirji, ki podpirajo projekt, navajeni delati.

Katera orodja CI/CD uporabljate?

Bitka pri Jenkinsu in GitLab CI/CD

Bitka pri Jenkinsu in GitLab CI/CD

Vir: www.habr.com

Dodaj komentar