Bitka kod Dženkinsa i GitLab CI/CD

U posljednjoj deceniji ostvaren 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 povećanja potražnje za CI/CD alatima. Postojeća rješenja se stalno unapređuju, pokušavaju ići u korak s vremenom, izdaju se njihove nove verzije, u svijetu softvera za osiguranje kvalitete (Quality Assurance, QA), stalno se pojavljuju mnogi novi proizvodi. Uz toliki izbor, odabir pravog alata nije lak zadatak.

Bitka kod Dženkinsa i GitLab CI/CD

Među svim postojećim CI/CD alatima, postoje dva projekta koja svakako vredi obratiti pažnju nekome ko traži nešto iz ove oblasti. Riječ je o Jenkinsu i GitLab CI/CD alatu, koji je dio GitLab platforme. Dženkins ima više od 16000 zvijezde na GitHubu. GitLab repozitorij na gitlab.com postigao je malo više 2000 zvijezde. Ako uporedimo 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 je daleko od jedinog pokazatelja na koji biste trebali obratiti pažnju. Postoji mnogo drugih, a to objašnjava zašto su u mnogim poređenjima Jenkins i GitLab CI/CD veoma bliski jedno drugom.

Uzmimo, na primjer, podatke sa G2 platforme, koja akumulira recenzije širokog spektra proizvoda i ocjene koje im korisnici daju. Evo prosječne ocjene Jenkins, na osnovu 288 recenzija, ima 4,3 zvjezdice. Oh oh GitLab ima 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 takmiče jedni s drugima pod jednakim uvjetima. Zanimljivo je da se projekt Jenkins pojavio 2011. godine i od tada je omiljen alat za testere. Ali u isto vrijeme, GitLab CI/CD projekat, pokrenut 2014. godine, zauzeo je svoju poziciju, veoma visoku, zahvaljujući naprednim funkcijama koje nudi ova platforma.

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

Bitka kod Dženkinsa i GitLab CI/CD
Rezultati ankete

Među ostalim CI/CD alatima najčešće se pominje GitLab CI/CD.

Ako se ozbiljno bavite DevOps-om, onda morate pažljivo odabrati odgovarajuće alate, uzimajući u obzir specifičnosti projekta, njegov budžet i druge zahtjeve. Kako bismo vam pomogli da napravite pravi izbor, pregledat ćemo Jenkins i GitLab CI/CD. Ovo će vam, nadamo se, pomoći da napravite pravi izbor.

Uvod u Jenkinsa

Bitka kod Dženkinsa i GitLab CI/CD
Jenkins je dobro poznat, fleksibilan CI/CD alat dizajniran za automatizaciju mnogih zadataka povezanih sa softverskim projektima. Jenkins je u potpunosti napisan na Javi i objavljen pod MIT licencom. Ima moćan skup funkcija usmjerenih na automatizaciju zadataka povezanih sa izgradnjom, testiranjem, implementacijom, integracijom i izdavanjem softvera. Ovaj alat se može koristiti na različitim operativnim sistemima. To uključuje macOS, Windows i mnoge Linux distribucije kao što su OpenSUSE, Ubuntu i Red Hat. Postoje instalacioni paketi za Jenkins dizajnirani za različite OS, ovaj alat se može instalirati na Docker i na bilo koji sistem koji ima JRE (Java Runtime Environment).

Jenkins programeri su kreirali još jedan projekat, Jenkins X, koji je dizajniran za rad u Kubernetes okruženju. Jenkins X integriše Helm, Jenkins CI/CD Server, Kubernetes i druge alate za izgradnju CI/CD cevovoda koji prate najbolje prakse DevOps-a. Na primjer, ovdje se koristi GitOps.

U riznicu prednosti Jenkinsa može se dodati i činjenica da su njegove skripte vrlo dobro strukturirane, razumljive i lake za čitanje. Jenkinsov tim je kreirao oko 1000 dodataka koji imaju za cilj organiziranje interakcije Jenkinsa sa širokim spektrom tehnologija. Skripte mogu koristiti sisteme autentikacije, koji vam, na primjer, omogućavaju povezivanje na različite zatvorene sisteme.

Tokom rada Jenkinsovog cevovoda, možete pratiti šta se dešava na svakom koraku, da li su određene faze rada uspešno završene ili ne. Sve ovo, međutim, možete gledati bez korištenja određenog grafičkog sučelja, već koristeći mogućnosti terminala.

Karakteristike Jenkinsa

Među dobro poznatim karakteristikama Jenkinsa su jednostavnost podešavanja, visok nivo automatizacije raznih operacija i odlična 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. Hajde da razgovaramo o nekim od najvažnijih karakteristika Jenkinsa.

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

Jenkins može raditi na macOS, Windows i Linux platformama. Takođe može da funkcioniše u Docker okruženju, što vam omogućava da organizujete ujednačeno i brzo izvršavanje automatizovanih zadataka. Ovaj alat se također može pokrenuti kao servlet u Java-omogućenim kontejnerima kao što su Apache Tomcat i GlassFish. Instalacija Jenkinsa kvalitetno dokumentovano.

▍2. Razvijen ekosistem dodataka

Čini se da je ekosistem dodataka Jenkins mnogo zreliji od ekosistema dodataka drugih CI/CD alata. Trenutno postoji preko 1500 dodataka za Jenkins. Ovi dodaci su 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 integracija Jenkins sa mnogim DevOps alatima.

▍3. Jednostavna instalacija i podešavanje

Jenkins se prilično lako instalira i konfiguriše. Istovremeno, proces ažuriranja sistema je takođe veoma zgodan. Ovdje, opet, vrijedi spomenuti kvalitet dokumentacije, jer u njoj možete pronaći odgovore na razna pitanja vezana za instalaciju i konfiguraciju Jenkinsa.

▍4. Prijateljska zajednica

Kao što je već spomenuto, Jenkins je projekat otvorenog koda, čiji ekosistem uključuje ogroman broj dodataka. Velika zajednica korisnika i programera razvila se oko Jenkinsa kako bi pomogla u razvoju projekta. Zajednica je jedan od faktora koji pokreće razvoj Dženkinsa.

▍5. Dostupnost REST API-ja

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

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

Jenkins podržava paralelizaciju DevOps zadataka. Može se lako integrirati s relevantnim alatima i primati obavijesti o rezultatima zadataka. Testiranje koda može se ubrzati organiziranjem paralelne izrade projekta koristeći različite virtuelne mašine.

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

Jenkins vam omogućava da organizujete distribuirane verzije koristeći više računara. Ova karakteristika je primenljiva u velikim projektima i koristi šemu rada, prema kojoj postoji jedan glavni Jenkins server i nekoliko slave mašina. Slave mašine se takođe mogu koristiti u situacijama kada je potrebno organizovati testiranje projekta u različitim okruženjima. Ove karakteristike izdvajaju Jenkinsa od drugih sličnih projekata.

Uvod u GitLab

Bitka kod Dženkinsa 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 sistem kontrole verzija. GitLab platforma ima verziju zajednice, podržava upravljanje repozitorijumom, alate za praćenje problema, organizaciju pregleda koda, mehanizme orijentisane na dokumentaciju. Kompanije mogu instalirati GitLab lokalno, povezujući ga sa Active Directory i LDAP serverima za sigurnu autorizaciju korisnika i autentifikaciju.

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

GitLab CI/CD je prvobitno objavljen kao samostalan projekat, ali je 2015. ovaj set alata integrisan u GitLab 8.0. Jedan GitLab CI/CD server može podržati preko 25000 korisnika. Na osnovu takvih servera možete kreirati sisteme koji su visoko dostupni.

GitLab CI/CD i glavni GitLab projekat su napisani u Ruby and Go. Izdaju se pod licencom MIT-a. GitLab CI/CD, pored uobičajenih karakteristika CI/CD alata, podržava i dodatne funkcije vezane za, na primjer, zakazivanje rada.

Integracija GitLab CI/CD-a u projekat je vrlo jednostavna. Kada se koristi GitLab CI/CD, proces obrade koda projekta podijeljen je u faze, od kojih se svaka može sastojati od nekoliko zadataka koji se obavljaju određenim redoslijedom. Zadaci se mogu fino podesiti.

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

Karakteristike GitLab CI/CD i GitLab

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

▍1. Popularnost

GitLab CI/CD je relativno nov alat koji je našao široku upotrebu. GitLab CI/CD je polako postao veoma popularan CI/CD alat koji se koristi za automatizovano testiranje i implementaciju softvera. Jednostavan je za postavljanje. To je također besplatni CI/CD alat ugrađen u GitLab platformu.

▍2. Podrška za GitLab Pages i Jekyll

Jekyll je generator statičkog sajta koji se može koristiti unutar GitLab Pages sistema za kreiranje sajtova zasnovanih na GitLab repozitorijumima. Sistem uzima izvorne materijale i na osnovu njih generiše gotovu statičku lokaciju. Možete kontrolisati izgled i karakteristike takvih stranica uređivanjem datoteke _config.yml, koju koristi Jekyll.

▍3. Mogućnosti planiranja projekta

Zahvaljujući mogućnosti planiranja faza projekata, povećava se praktičnost praćenja problema i njihovih grupa. To vam omogućava da upravljate organizacijom rada na projektima, planirate njihovu implementaciju na određeni datum.

▍4. Automatsko skaliranje CI vodilica

Zahvaljujući automatskom skaliranju trkača odgovornih za obavljanje određenih zadataka, možete mnogo uštedjeti na troškovima iznajmljivanja serverskih kapaciteta. Ovo je veoma važno, posebno 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 spremišta.

▍5. Alati za praćenje problema

GitLab-ove moćne mogućnosti praćenja problema dovele su mnoge projekte otvorenog koda do upotrebe platforme. GitLab CI/CD omogućava paralelno testiranje različitih grana koda. Rezultati testa se jednostavno analiziraju u interfejsu sistema. Ovo izdvaja GitLab CI/CD od Jenkinsa.

▍6. Ograničavanje pristupa spremištima

GitLab platforma podržava ograničavanje pristupa spremištima. Na primjer, onima koji sarađuju na projektu u spremištu mogu se dodijeliti dozvole koje odgovaraju njihovim ulogama. Ovo posebno važi za korporativne projekte.

▍7. Aktivna podrška zajednice

Oko GitLaba razvila se aktivna zajednica koja doprinosi razvoju ove platforme i njenih alata, posebno 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 sa GitLab CI/CD.

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

GitLab CI/CD je sistem koji može raditi sa više od koda koji se nalazi u GitLab repozitorijumima. Na primjer, kod se može pohraniti u GitHub spremište, a CI/CD cevovod se može organizirati na bazi GitLaba koristeći GitLab CI/CD.

Poređenje Jenkinsa i GitLab CI/CD

Jenkins i GitLab CI/CD su veoma dobri alati, od kojih oba mogu da učine da CI/CD cevovod radi glatko. Ali ako ih uporedite, ispada da, iako su po mnogo čemu slični, na neki način se međusobno razlikuju.

Характеристика
Jenkins
GitLab CI/CD

Otvorenog ili zatvorenog koda
open source
open source

postavljanje
Trebuetsâ.
Nije potrebno jer je ovo ugrađena karakteristika GitLab platforme.

Jedinstvene karakteristike
Podrška za dodatke.
Duboka integracija u sistem kontrole verzija.

podrška
Ništa.
Dostupan.

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

Samostalna implementacija sistema
Ovo je jedini način za korištenje sistema.
Podržano.

Kreiranje CI/CD cjevovoda
Podržano, koristeći Jenkins Pipeline.
Podržano.

Praćenje performansi aplikacije
Ništa.
Dostupan.

Ekosistem
Postoji preko 1000 dodataka.
Sistem se razvija u okviru GitLaba.

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

JavaScript podrška
Dostupan.
Dostupan.

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

Kontrola kvaliteta koda
Podržano - korištenjem dodatka SonarQube i drugih dodataka.
Podržano.

Razlike između Jenkinsa i GitLab CI/CD

Nakon što smo opisali i uporedili Jenkins i GitLab CI/CD, fokusirajmo se na razlike između ovih DevOps alata. Poznavanje ovih razlika pomoći će vam da shvatite one koji više vole jedan od ovih alata u odnosu na drugi.

  • GitLab CI/CD može u potpunosti kontrolirati Git repozitorije. Govorimo o upravljanju granama repozitorija i nekim drugim karakteristikama. Ali Jenkins, iako može raditi sa repozitorijumima, ne daje isti nivo kontrole nad njima kao GitLab CI/CD.
  • Jenkins je besplatni projekat otvorenog koda. Onaj ko ga odabere postavlja ga samostalno. A GitLab CI / CD je uključen u GitLab platformu, ovo je rješenje po sistemu ključ u ruke.
  • GitLab CI/CD podržava napredne alate za upravljanje zadacima koji rade na nivou projekta. Ova strana Dženkinsa je manje razvijena.

Jenkins i GitLab CI/CD: prednosti i slabosti

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

▍Snage Dženkinsove

  • Veliki broj dodataka.
  • Potpuna kontrola nad ugradnjom alata.
  • Jednostavno otklanjanje grešaka u trkačima.
  • Jednostavno podešavanje čvora.
  • Jednostavna implementacija koda.
  • Vrlo dobar sistem upravljanja vjerodajnicama.
  • Fleksibilnost i svestranost.
  • Podrška za različite programske jezike.
  • Sistem je razumljiv na intuitivnom nivou.

▍ Jenkinsove slabosti

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

▍ Prednosti GitLab CI/CD-a

  • Dobra integracija sa Dockerom.
  • Jednostavno skaliranje trkača.
  • Paralelno izvršavanje zadataka koji su dio faza CI/CD cjevovoda.
  • Korištenje modela usmjerenog acikličkog grafa prilikom postavljanja odnosa zadataka.
  • Visok nivo skalabilnosti zbog mogućnosti paralelnog izvođenja trkača.
  • Jednostavnost dodavanja zadataka.
  • Jednostavno rješavanje sukoba.
  • Pouzdan sigurnosni sistem.

▍Slabosti GitLab CI/CD-a

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

Ishodi

I Jenkins i GitLab CI/CD imaju prednosti i slabosti. Odgovor na pitanje šta odabrati ovisi o potrebama i karakteristikama određenog projekta. Svaki od danas pregledanih CI/CD alata ima određene karakteristike, iako su ovi alati kreirani da riješe isti problem. Istovremeno, Jenkins je samostalan alat, a GitLab CI/CD dio je platforme dizajnirane za suradnju na kodu.

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

Koje CI/CD alate koristite?

Bitka kod Dženkinsa i GitLab CI/CD

Bitka kod Dženkinsa i GitLab CI/CD

izvor: www.habr.com

Dodajte komentar