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.
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
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
Č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.
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
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
▍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
▍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.
▍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
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?
Vir: www.habr.com