Bitka kod Jenkinsa i GitLab CI/CD

U posljednjem desetljeću učinjen je značajan napredak u razvoju alata za kontinuiranu integraciju (Continuous Integration, CI) i kontinuiranu implementaciju (Continuous Delivery, CD). Razvoj tehnologija za integraciju razvoja i rada softvera (Development Operations, DevOps) doveo je do brzog porasta potražnje za CI/CD alatima. Postojeća rješenja neprestano se usavršavaju, nastojeći ići u korak s vremenom, izlaze njihove nove verzije, u svijetu softvera za osiguranje kvalitete (Quality Assurance, QA) stalno se pojavljuju brojni novi proizvodi. Uz tako bogat izbor, odabir pravog alata nije lak zadatak.

Bitka kod Jenkinsa i GitLab CI/CD

Među svim postojećim CI/CD alatima dva su projekta na koje svakako treba obratiti pažnju nekome tko traži nešto iz ovog područja. Riječ je o Jenkinsu i GitLab CI/CD alatu koji je dio GitLab platforme. Jenkins ima više od 16000 zvijezde na GitHubu. GitLab repozitorij na gitlab.com postigao je nešto više 2000 zvijezde. Ako usporedimo popularnost repozitorija, ispada da je Jenkins osvojio 8 puta više zvjezdica od platforme, koja uključuje GitLab CI / CD. Ali pri odabiru CI / CD alata ovo nije jedini pokazatelj na koji biste trebali obratiti pozornost. Postoji mnogo drugih, a to objašnjava zašto su u mnogim usporedbama Jenkins i GitLab CI/CD vrlo bliski jedni drugima.

Uzmimo, na primjer, podatke s G2 platforme, koja prikuplja recenzije širokog spektra proizvoda i ocjene koje im korisnici daju. Ovdje je prosječna ocjena Jenkins, na temelju 288 recenzija, ima 4,3 zvjezdice. Oh oh GitLab postoji 270 recenzija, prosječna ocjena za ovaj alat je 4,4 zvjezdice. Nećemo pogriješiti ako kažemo da se Jenkins i GitLab CI / CD natječu pod jednakim uvjetima. Zanimljivo je da se projekt Jenkins pojavio 2011. godine i od tada je omiljen alat testera. Ali u isto vrijeme, projekt GitLab CI / CD, pokrenut 2014., zauzeo je svoju poziciju, vrlo visoku, zahvaljujući naprednim značajkama koje nudi ova platforma.

Ako govorimo o popularnosti Jenkinsa u usporedbi s drugim sličnim platformama, napominjemo da smo, nakon što smo objavili članak uspoređujući platforme Travis CI i Jenkins, organizirali anketu. U njemu je sudjelovalo 85 korisnika. Ispitanici su zamoljeni da izaberu CI/CD alat koji im se najviše sviđa. 79% odabralo je Jenkins, 5% Travis CI, a 16% navelo je da preferiraju druge alate.

Bitka kod Jenkinsa i GitLab CI/CD
Rezultati ankete

Od ostalih CI/CD alata najčešće se spominjao GitLab CI/CD.

Ako se ozbiljno bavite DevOpsom, morate pažljivo odabrati odgovarajuće alate, uzimajući u obzir specifičnosti projekta, njegov proračun i druge zahtjeve. Kako bismo vam pomogli da napravite pravi izbor, pregledat ćemo Jenkins i GitLab CI/CD. Nadamo se da će vam ovo pomoći da napravite pravi izbor.

Uvod u Jenkinsa

Bitka kod Jenkinsa i GitLab CI/CD
Jenkins je dobro poznati, fleksibilni CI/CD alat dizajniran za automatizaciju mnogih zadataka povezanih sa softverskim projektima. Jenkins je u potpunosti napisan u Javi i objavljen pod licencom MIT-a. Ima snažan skup značajki usmjerenih na automatizaciju zadataka povezanih s izgradnjom, testiranjem, implementacijom, integracijom i izdavanjem softvera. Ovaj se alat može koristiti na različitim operativnim sustavima. To uključuje macOS, Windows i mnoge distribucije Linuxa kao što su OpenSUSE, Ubuntu i Red Hat. Postoje instalacijski paketi za Jenkins dizajnirani za različite operativne sustave, ovaj se alat može instalirati na Docker i na bilo koji sustav koji ima JRE (Java Runtime Environment).

Jenkins programeri stvorili su još jedan projekt, Jenkins X, koji je dizajniran za rad u Kubernetes okruženju. Jenkins X integrira Helm, Jenkins CI/CD Server, Kubernetes i druge alate za izgradnju CI/CD cjevovoda koji slijede najbolje prakse DevOps-a. Na primjer, ovdje se koristi GitOps.

U riznicu prednosti Jenkinsa možemo dodati i činjenicu da su njegove skripte vrlo dobro strukturirane, razumljive i lake za čitanje. Jenkinsov tim stvorio je oko 1000 dodataka koji imaju za cilj organizirati interakciju Jenkinsa s raznim tehnologijama. Skripte mogu koristiti sustave za provjeru autentičnosti, što vam, na primjer, omogućuje povezivanje s različitim zatvorenim sustavima.

Tijekom rada Jenkinsovog cjevovoda možete promatrati što se događa na svakom koraku, jesu li određene faze rada uspješno završene ili ne. Sve to, međutim, možete gledati bez korištenja određenog grafičkog sučelja, već koristeći mogućnosti terminala.

Značajke Jenkinsa

Među dobro poznatim značajkama Jenkinsa su jednostavnost postavljanja, visoka razina automatizacije raznih operacija i izvrsna dokumentacija. Ako govorimo o rješavanju DevOps zadataka, onda se ovdje Jenkins smatra vrlo pouzdanim alatom, pomoću kojeg u pravilu nema smisla pomno pratiti cijeli proces obrade projekta. To nije slučaj s drugim CI/CD alatima. Razgovarajmo o nekim od najvažnijih značajki Jenkinsa.

▍1. Besplatna podrška za više platformi otvorenog koda

Jenkins može raditi na macOS, Windows i Linux platformama. Također može funkcionirati u Docker okruženju, što vam omogućuje organiziranje uniformnog i brzog izvršavanja automatiziranih zadataka. Ovaj se alat također može pokrenuti kao servlet u spremnicima s omogućenom Javom kao što su Apache Tomcat i GlassFish. Instalacija Jenkinsa kvalitativno dokumentirano.

▍2. Razvijen ekosustav dodataka

Čini se da je Jenkinsov ekosustav dodataka puno zreliji od ekosustava dodataka drugih CI/CD alata. Trenutno postoji preko 1500 dodataka za Jenkins. Ovi su dodaci usmjereni na rješavanje širokog spektra zadataka, uz njihovu pomoć možete automatizirati razne projekte. Bogatstvo besplatnih dodataka koje možete izabrati znači da ako koristite Jenkins, ne morate kupovati skupe plaćene dodatke. Postoji mogućnost integracije Jenkins s mnogo DevOps alata.

▍3. Jednostavna instalacija i postavljanje

Jenkins je prilično jednostavan za instalaciju i konfiguraciju. U isto vrijeme, proces ažuriranja sustava također je vrlo zgodan. Ovdje opet vrijedi spomenuti kvalitetu dokumentacije, budući da u njoj možete pronaći odgovore na razna pitanja vezana uz instalaciju i konfiguraciju Jenkinsa.

▍4. Prijateljska zajednica

Kao što je već spomenuto, Jenkins je projekt otvorenog koda, čiji ekosustav uključuje ogroman broj dodataka. Oko Jenkinsa se razvila velika zajednica korisnika i programera koji pomažu u razvoju projekta. Zajednica je jedan od čimbenika koji pokreću razvoj Jenkinsa.

▍5. Dostupnost REST API-ja

Tijekom rada s Jenkinsom možete koristiti REST API koji proširuje mogućnosti sustava. API za daljinski pristup sustavu predstavljen je u tri verzije: XML, JSON s JSONP podrškom, Python. ovdje je Stranica s dokumentacijom koja pokriva detalje o radu s Jenkins REST API-jem.

▍6. Podrška za paralelno izvršavanje zadataka

Jenkins podržava paralelizaciju DevOps zadataka. Može se jednostavno integrirati s relevantnim alatima i primati obavijesti o rezultatima zadataka. Testiranje koda može se ubrzati organiziranjem paralelne izgradnje projekta korištenjem različitih virtualnih strojeva.

▍7. Podrška za rad u distribuiranim okruženjima

Jenkins vam omogućuje organiziranje distribuiranih nadogradnji pomoću više računala. Ova značajka je primjenjiva u velikim projektima i koristi shemu rada, prema kojoj postoji jedan glavni Jenkins poslužitelj i nekoliko podređenih strojeva. Slave strojevi se također mogu koristiti u situacijama kada je potrebno organizirati testiranje projekta u različitim okruženjima. Ove značajke razlikuju Jenkins od drugih sličnih projekata.

Uvod u GitLab

Bitka kod Jenkinsa i GitLab CI/CD
GitLab CI/CD može se nazvati jednim od najnovijih i najomiljenijih DevOps alata. Ovaj besplatni alat otvorenog koda ugrađen je u GitLab sustav kontrole verzija. Platforma GitLab ima verziju zajednice, podržava upravljanje repozitorijem, alate za praćenje problema, organizaciju pregleda koda, mehanizme usmjerene na dokumentaciju. Tvrtke mogu instalirati GitLab lokalno, povezujući ga s Active Directory i LDAP poslužiteljima za sigurnu autorizaciju i autentifikaciju korisnika.

ovdje je Video vodič koji će vam pomoći da naučite kako stvoriti CI/CD cjevovode koristeći GitLab CI/CD mogućnosti.

GitLab CI/CD izvorno je objavljen kao samostalni projekt, ali je 2015. ovaj skup alata integriran u GitLab 8.0. Jedan GitLab CI/CD poslužitelj može podržati više od 25000 korisnika. Na temelju takvih poslužitelja možete kreirati sustave koji su visoko dostupni.

GitLab CI/CD i glavni GitLab projekt napisani su u Ruby i Go. Pušteni su pod licencom MIT-a. GitLab CI/CD, uz uobičajene značajke CI/CD alata, podržava i dodatne značajke vezane, na primjer, za raspored rada.

Integracija GitLab CI/CD-a u projekt vrlo je jednostavna. Kada koristite GitLab CI/CD, proces obrade koda projekta podijeljen je u faze, od kojih se svaka može sastojati od nekoliko zadataka koji se izvode određenim redoslijedom. Zadaci se mogu fino podešavati.

Zadaci se mogu izvoditi paralelno. Nakon postavljanja slijeda faza i zadataka, CI/CD cjevovod je spreman za rad. Njegov napredak možete pratiti praćenjem statusa zadataka. Kao rezultat toga, korištenje GitLab CI / CD je vrlo zgodno, možda praktičnije od drugih sličnih alata.

Značajke GitLab CI/CD i GitLab

GitLab CI/CD jedan je od najpopularnijih DevOps alata. Projekt se odlikuje visokokvalitetnom dokumentacijom, njegove značajke su jednostavne i praktične za korištenje. Ako još niste upoznati s GitLab CI/CD, sljedeći popis značajki ovog alata dat će vam opću ideju o tome što možete očekivati ​​od njega. Treba napomenuti da su mnoge od ovih značajki povezane sa samom GitLab platformom, u koju je GitLab CI / CD integriran.

▍1. Popularnost

GitLab CI/CD je relativno novi alat koji je našao široku primjenu. GitLab CI/CD polako je postao vrlo popularan CI/CD alat koji se koristi za automatizirano testiranje i implementaciju softvera. Jednostavno se postavlja. Također je besplatan CI/CD alat ugrađen u GitLab platformu.

▍2. Podrška za GitLab Pages i Jekyll

Jekyll je generator statičnih stranica koji se može koristiti unutar sustava GitLab Pages za izradu stranica temeljenih na GitLab repozitoriju. Sustav uzima izvorne materijale i na temelju njih generira gotovu statičnu stranicu. Možete kontrolirati izgled i značajke takvih stranica uređivanjem datoteke _config.yml, koristi ga Jekyll.

▍3. Mogućnosti projektnog planiranja

Zahvaljujući mogućnosti planiranja faza projekta, povećava se pogodnost praćenja problema i njihovih grupa. To vam omogućuje upravljanje organizacijom rada na projektima, planiranje njihove provedbe na određeni datum.

▍4. Automatsko skaliranje CI trkača

Zahvaljujući automatskom skaliranju runnera odgovornih za obavljanje određenih zadataka, možete znatno uštedjeti na troškovima najma serverskih kapaciteta. To je vrlo važno, pogotovo kada su u pitanju okruženja u kojima se projekti testiraju paralelno. Osim toga, ovo je važno za velike projekte koji se sastoje od nekoliko repozitorija.

▍5. Alati za praćenje problema

Snažne GitLabove mogućnosti praćenja problema dovele su do toga da mnogi projekti otvorenog koda koriste platformu. GitLab CI/CD omogućuje paralelno testiranje različitih grana koda. Rezultati testa praktično se analiziraju u sučelju sustava. Time se GitLab CI/CD razlikuje od Jenkinsa.

▍6. Ograničavanje pristupa spremištima

GitLab platforma podržava ograničavanje pristupa repozitoriju. Na primjer, onima koji surađuju na projektu u repozitoriju mogu se dodijeliti dopuštenja koja odgovaraju njihovim ulogama. To posebno vrijedi za korporativne projekte.

▍7. Aktivna podrška zajednice

Oko GitLaba razvila se aktivna zajednica koja pridonosi razvoju ove platforme i njezinih alata, posebice GitLab CI/CD. Duboka integracija GitLab CI/CD i GitLaba, između ostalog, olakšava pronalaženje odgovora na pitanja koja se javljaju pri radu s GitLab CI/CD.

▍8. Podrška za različite sustave kontrole verzija

GitLab CI/CD je sustav koji može raditi s više od samog koda koji se nalazi u GitLab repozitoriju. Na primjer, kod se može pohraniti u GitHub repozitorij, a CI / CD cjevovod može se organizirati na temelju GitLaba koristeći GitLab CI / CD.

Usporedba Jenkins i GitLab CI/CD

Jenkins i GitLab CI/CD vrlo su dobri alati, a oba su sposobna omogućiti glatko funkcioniranje CI/CD cjevovoda. No ako ih usporedite, ispada da, iako su u mnogočemu slični, po nečemu se međusobno razlikuju.

Karakterizacija
Jenkins
GitLab CI/CD

Otvoreni ili zatvoreni izvor
otvoreni izvor
otvoreni izvor

Instalacija
Potreban.
Nije potrebno jer je ovo ugrađena značajka platforme GitLab.

Jedinstvene značajke
Podrška za dodatke.
Duboka integracija u sustav kontrole verzija.

podrška
Odsutan.
Dostupno.

Instalacija i konfiguracija
Poteškoće ne uzrokuju
Poteškoće ne uzrokuju

Samostalno postavljanje sustava
Ovo je jedini način korištenja sustava.
Podržano.

Stvaranje CI/CD cjevovoda
Podržano, koristeći Jenkinsov cjevovod.
Podržano.

Praćenje performansi aplikacije
Odsutan.
Dostupno.

Ekosustav
Postoji preko 1000 dodataka.
Sustav se razvija unutar GitLaba.

API
Podržava napredni API sustav.
Nudi API za dublju integraciju u projekte.

JavaScript podrška
Dostupno.
Dostupno.

Integracija s drugim alatima
Podržana je integracija s drugim alatima i platformama (Slack, GitHub).
Mnogi alati za integraciju sa sustavima trećih strana, posebno - s GitHub i Kubernetes.

Kontrola kvalitete koda
Podržano - korištenje dodatka SonarQube i drugih dodataka.
Podržano.

Razlike između Jenkinsa i GitLab CI/CD

Nakon što smo opisali i usporedili Jenkins i GitLab CI/CD, usredotočimo se na razlike između ovih DevOps alata. Poznavanje ovih razlika pomoći će vam razumjeti one koji preferiraju jedan od ovih alata u odnosu na drugi.

  • GitLab CI/CD može u potpunosti kontrolirati Git repozitorije. Govorimo o upravljanju ograncima repozitorija i nekim drugim značajkama. Ali Jenkins, iako može raditi sa repozitorijima, ne daje istu razinu kontrole nad njima kao GitLab CI / CD.
  • Jenkins je besplatni projekt otvorenog koda. Onaj tko ga izabere samostalno ga postavlja. I GitLab CI / CD je uključen u GitLab platformu, ovo je rješenje ključ u ruke.
  • GitLab CI/CD podržava napredne alate za upravljanje zadacima koji rade na razini projekta. Ova strana Jenkinsa je manje razvijena.

Jenkins i GitLab CI/CD: prednosti i slabosti

Sada imate neku ideju o Jenkinsu i GitLab CI/CD. Sada, da bismo vas još bolje upoznali s ovim alatima, pogledajmo njihove prednosti i slabosti. Pretpostavljamo da ste već odlučili koji alat trebate. Nadamo se da će vam ovaj odjeljak omogućiti da se testirate.

▍Jake strane Jenkinsa

  • Veliki broj dodataka.
  • Potpuna kontrola nad ugradnjom alata.
  • Jednostavno otklanjanje pogrešaka trkača.
  • Jednostavno postavljanje čvora.
  • Jednostavna implementacija koda.
  • Vrlo dobar sustav upravljanja vjerodajnicama.
  • Fleksibilnost i svestranost.
  • Podrška za razne programske jezike.
  • Sustav je razumljiv na intuitivnoj razini.

▍Slabosti Jenkinsa

  • Dodaci mogu biti nezgodni za korištenje.
  • Kada koristite Jenkins u malim projektima, vrijeme potrebno da ga sami konfigurirate može biti nerazumno veliko.
  • Nedostatak općih analitičkih informacija o CI/CD lancima.

▍Snage GitLab CI/CD

  • Dobra integracija s Dockerom.
  • Jednostavno skaliranje trkača.
  • Paralelno izvršavanje zadataka koji su dio faza CI/CD cjevovoda.
  • Korištenje modela usmjerenog acikličkog grafa pri postavljanju odnosa zadataka.
  • Visoka razina skalabilnosti zbog mogućnosti paralelnog izvođenja runnera.
  • Lakoća dodavanja zadataka.
  • Jednostavno rješavanje sukoba.
  • Pouzdan sigurnosni sustav.

▍Slabosti GitLab CI/CD

  • Za svaki zadatak trebate opisati i učitati / preuzeti artefakte.
  • Ne možete testirati rezultate spajanja grana prije nego što se stvarno spoje.
  • Pri opisivanju faza CI/CD cjevovoda još nije moguće izdvojiti pojedine faze u njima.

Rezultati

I Jenkins i GitLab CI/CD imaju prednosti i slabosti. Odgovor na pitanje što odabrati ovisi o potrebama i karakteristikama pojedinog projekta. Svaki od danas pregledanih CI/CD alata ima određene značajke, iako su ti alati stvoreni za rješavanje istog problema. Istovremeno, Jenkins je samostalni alat, a GitLab CI / CD dio je platforme dizajnirane za suradnju na kodu.

Prilikom odabira CI / CD sustava, osim njegovih mogućnosti, vrijedi uzeti u obzir troškove koji mogu biti povezani s njim i s čime su DevOps inženjeri koji podržavaju projekt navikli raditi.

Koje CI/CD alate koristite?

Bitka kod Jenkinsa i GitLab CI/CD

Bitka kod Jenkinsa i GitLab CI/CD

Izvor: www.habr.com

Dodajte komentar