Jenkinso mūšis ir GitLab CI / CD

Per pastarąjį dešimtmetį buvo padaryta didelė pažanga kuriant nuolatinės integracijos (Continuous Integration, CI) ir nuolatinio diegimo (Continuous Delivery, CD) įrankius. Programinės įrangos kūrimo ir eksploatavimo integravimo technologijų (Development Operations, DevOps) plėtra lėmė spartų CI / CD įrankių paklausos augimą. Esami sprendimai nuolat tobulinami, stengiamasi žengti koja kojon su laiku, išleidžiamos naujos jų versijos, kokybės užtikrinimo programinės įrangos (Quality Assurance, QA) pasaulyje nuolat atsiranda daug naujų produktų. Turint tokį gausų pasirinkimą, išsirinkti tinkamą įrankį nėra lengva užduotis.

Jenkinso mūšis ir GitLab CI / CD

Tarp visų esamų CI / CD įrankių yra du projektai, kurie tikrai verti dėmesio tam, kas ko nors ieško iš šios srities. Mes kalbame apie Jenkins ir GitLab CI / CD įrankį, kuris yra GitLab platformos dalis. Jenkinsas turi daugiau nei 16000 žvaigždės „GitHub“. „GitLab“ saugykla svetainėje gitlab.com surinko šiek tiek daugiau 2000 žvaigždės. Jei palyginsime saugyklų populiarumą, paaiškėja, kad Jenkins surinko 8 kartus daugiau žvaigždučių nei platforma, kurioje yra GitLab CI / CD. Tačiau renkantis CI / CD įrankį tai toli gražu nėra vienintelis rodiklis, į kurį turėtumėte atkreipti dėmesį. Yra daugybė kitų, ir tai paaiškina, kodėl daugelyje palyginimų Jenkins ir GitLab CI / CD yra labai arti vienas kito.

Paimkite, pavyzdžiui, duomenis iš G2 platformos, kurioje kaupiamos įvairiausių produktų apžvalgos ir vartotojų jiems suteikiami įvertinimai. Čia yra vidutinis įvertinimas Jenkins, remiantis 288 atsiliepimais, yra 4,3 žvaigždutės. Oi oi GitLab Yra 270 atsiliepimų, vidutinis šio įrankio įvertinimas yra 4,4 žvaigždutės. Nesuklysime sakydami, kad Jenkins ir GitLab CI / CD konkuruoja tarpusavyje vienodomis sąlygomis. Įdomu pastebėti, kad Jenkins projektas pasirodė 2011 m. ir nuo tada jis buvo mėgstamiausias testuotojų įrankis. Tačiau tuo pačiu metu GitLab CI / CD projektas, pradėtas 2014 m., užėmė labai aukštas pozicijas dėl šios platformos siūlomų pažangių funkcijų.

Jei kalbėtume apie Jenkins populiarumą lyginant su kitomis panašiomis platformomis, pastebime, kad paskelbę straipsnį, kuriame lyginamos Travis CI ir Jenkins platformos, surengėme apklausą. Jame dalyvavo 85 vartotojai. Respondentų buvo paprašyta pasirinkti jiems labiausiai patinkantį CI/CD įrankį. 79 % rinkosi Jenkins, 5 % – Travis CI, o 16 % nurodė, kad pirmenybę teikia kitoms priemonėms.

Jenkinso mūšis ir GitLab CI / CD
Apklausos rezultatai

Tarp kitų CI/CD įrankių dažniausiai buvo minimas GitLab CI/CD.

Jei rimtai žiūrite į „DevOps“, tuomet turite atidžiai pasirinkti tinkamus įrankius, atsižvelgiant į projekto specifiką, biudžetą ir kitus reikalavimus. Kad padėtume jums padaryti teisingą pasirinkimą, apžvelgsime Jenkins ir GitLab CI / CD. Tikimės, kad tai padės jums padaryti teisingą pasirinkimą.

Įvadas į Jenkinsą

Jenkinso mūšis ir GitLab CI / CD
Jenkins yra gerai žinomas lankstus CI/CD įrankis, skirtas automatizuoti daugelį užduočių, susijusių su programinės įrangos projektais. „Jenkins“ yra visiškai parašyta „Java“ ir išleista pagal MIT licenciją. Jame yra galingas funkcijų rinkinys, skirtas automatizuoti užduotis, susijusias su programinės įrangos kūrimu, testavimu, diegimu, integravimu ir išleidimu. Šis įrankis gali būti naudojamas įvairiose operacinėse sistemose. Tai apima „MacOS“, „Windows“ ir daugelį „Linux“ paskirstymų, tokių kaip „OpenSUSE“, „Ubuntu“ ir „Red Hat“. Yra Jenkins diegimo paketų, skirtų įvairioms OS, šį įrankį galima įdiegti Docker ir bet kurioje sistemoje, kurioje yra JRE (Java Runtime Environment).

„Jenkins“ kūrėjai sukūrė kitą projektą „Jenkins X“, kuris skirtas dirbti Kubernetes aplinkoje. „Jenkins X“ integruoja „Helm“, „Jenkins“ CI / CD serverį, „Kubernetes“ ir kitus įrankius, kad sukurtų CI / CD vamzdynus, atitinkančius „DevOps“ geriausią praktiką. Pavyzdžiui, čia naudojamas GitOps.

Prie Jenkins pranašumų lobyno galima pridėti ir tai, kad jos scenarijai yra labai gerai struktūruoti, suprantami ir lengvai skaitomi. Jenkins komanda sukūrė apie 1000 įskiepių, skirtų organizuoti Jenkins sąveiką su įvairiausiomis technologijomis. Scenarijai gali naudoti autentifikavimo sistemas, kurios, pavyzdžiui, leidžia prisijungti prie įvairių uždarų sistemų.

Jenkins dujotiekio veikimo metu galite stebėti, kas vyksta kiekviename žingsnyje, ar tam tikri darbų etapai buvo sėkmingai atlikti, ar ne. Tačiau visa tai galite žiūrėti nenaudodami tam tikros grafinės sąsajos, o naudodami terminalo galimybes.

Jenkins savybės

Tarp gerai žinomų Jenkins ypatybių yra paprastas sąranka, aukštas įvairių operacijų automatizavimo lygis ir puiki dokumentacija. Jei mes kalbame apie „DevOps“ užduočių sprendimą, „Jenkins“ laikomas labai patikimu įrankiu, kurį naudojant, kaip taisyklė, nėra prasmės atidžiai stebėti viso projekto apdorojimo proceso. Taip nėra su kitais CI/CD įrankiais. Pakalbėkime apie kai kurias svarbiausias Jenkins savybes.

▍1. Nemokamas, atvirojo kodo, kelių platformų palaikymas

„Jenkins“ gali veikti „MacOS“, „Windows“ ir „Linux“ platformose. Jis taip pat gali veikti Docker aplinkoje, kuri leidžia organizuoti vienodą ir greitą automatizuotų užduočių vykdymą. Šis įrankis taip pat gali veikti kaip servletas „Java“ įgalintuose konteineriuose, tokiuose kaip „Apache Tomcat“ ir „GlassFish“. Kokybiškas Jenkins montavimas dokumentuota.

▍2. Sukurta įskiepio ekosistema

Atrodo, kad Jenkins papildinių ekosistema yra daug brandesnė nei kitų CI / CD įrankių papildinių ekosistemos. Šiuo metu yra daugiau nei 1500 „Jenkins“ papildinių. Šie įskiepiai skirti spręsti įvairiausias užduotis, jų pagalba galima automatizuoti įvairius projektus. Daugybė nemokamų įskiepių, kuriuos galite rinktis, reiškia, kad jei naudojate „Jenkins“, jums nereikės pirkti brangių mokamų įskiepių. Yra galimybė integracija Jenkins su daugybe DevOps įrankių.

▍3. Lengvas montavimas ir nustatymas

„Jenkins“ yra gana lengva įdiegti ir konfigūruoti. Tuo pačiu metu sistemos atnaujinimo procesas taip pat yra labai patogus. Čia vėlgi verta paminėti dokumentacijos kokybę, nes joje galite rasti atsakymus į įvairius klausimus, susijusius su Jenkins diegimu ir konfigūravimu.

▍4. Draugiška bendruomenė

Kaip jau minėta, „Jenkins“ yra atvirojo kodo projektas, kurio ekosistema apima daugybę papildinių. Aplink Jenkins susikūrė didelė vartotojų ir kūrėjų bendruomenė, kuri padėtų vystyti projektą. Bendruomenė yra vienas iš veiksnių, skatinančių Jenkins vystymąsi.

▍5. REST API prieinamumas

Dirbdami su Jenkins galite naudoti REST API, kuri išplečia sistemos galimybes. API nuotolinei prieigai prie sistemos pateikiama trimis versijomis: XML, JSON su JSONP palaikymu, Python. Čia Dokumentacijos puslapis, kuriame pateikiama informacija apie darbą su Jenkins REST API.

▍6. Parama lygiagrečiam užduočių vykdymui

Jenkins palaiko DevOps užduočių lygiagretavimą. Jį galima lengvai integruoti su atitinkamais įrankiais ir gauti pranešimus apie užduočių rezultatus. Kodo testavimą galima paspartinti organizuojant lygiagrečią projekto kūrimą naudojant skirtingas virtualias mašinas.

▍7. Pagalba darbui paskirstytoje aplinkoje

„Jenkins“ leidžia organizuoti paskirstytas versijas naudojant kelis kompiuterius. Ši funkcija taikoma dideliuose projektuose ir naudoja darbo schemą, pagal kurią yra vienas pagrindinis Jenkins serveris ir kelios verginės mašinos. Verginės mašinos taip pat gali būti naudojamos situacijose, kai reikia organizuoti projekto testavimą įvairiose aplinkose. Šios savybės išskiria Jenkins iš kitų panašių projektų.

Įvadas į „GitLab“.

Jenkinso mūšis ir GitLab CI / CD
GitLab CI / CD galima vadinti vienu naujausių ir mylimiausių DevOps įrankių. Šis nemokamas atvirojo kodo įrankis yra integruotas į GitLab versijos valdymo sistemą. GitLab platforma turi bendruomenės versiją, ji palaiko saugyklų valdymą, problemų sekimo įrankius, kodo peržiūros organizavimą, į dokumentaciją orientuotus mechanizmus. Įmonės gali įdiegti „GitLab“ vietoje, susiedamos ją su „Active Directory“ ir LDAP serveriais, kad užtikrintų saugų vartotojo autorizavimą ir autentifikavimą.

Čia Vaizdo pamoka, padėsianti išmokti kurti CI/CD konvejerius naudojant GitLab CI/CD galimybes.

„GitLab CI/CD“ iš pradžių buvo išleistas kaip atskiras projektas, tačiau 2015 m. šis įrankių rinkinys buvo integruotas į „GitLab 8.0“. Vienas GitLab CI / CD serveris gali palaikyti daugiau nei 25000 XNUMX vartotojų. Remdamiesi tokiais serveriais galite sukurti labai prieinamas sistemas.

GitLab CI/CD ir pagrindinis GitLab projektas parašyti Ruby and Go. Jie išleidžiami pagal MIT licenciją. GitLab CI/CD, be įprastų CI/CD įrankių funkcijų, taip pat palaiko papildomas funkcijas, susijusias, pavyzdžiui, su darbo planavimu.

Integruoti GitLab CI/CD į projektą labai paprasta. Naudojant GitLab CI/CD, projekto kodo apdorojimo procesas yra padalintas į etapus, kurių kiekvienas gali susidėti iš kelių tam tikra tvarka atliekamų užduočių. Užduotys gali būti tikslinamos.

Užduotys gali būti vykdomos lygiagrečiai. Nustačius etapų ir užduočių seką, CI/CD konvejeris yra paruoštas naudoti. Galite stebėti jo eigą stebėdami užduočių būseną. Todėl naudoti GitLab CI / CD yra labai patogu, galbūt patogiau nei kiti panašūs įrankiai.

„GitLab CI/CD“ ir „GitLab“ funkcijos

„GitLab CI/CD“ yra vienas populiariausių „DevOps“ įrankių. Projektas išsiskiria kokybiška dokumentacija, jo ypatybėmis paprasta ir patogu naudotis. Jei dar nesate susipažinę su GitLab CI / CD, toliau pateiktas šio įrankio funkcijų sąrašas suteiks jums bendrą supratimą, ko galite iš jo tikėtis. Reikėtų pažymėti, kad daugelis šių funkcijų yra susijusios su pačia GitLab platforma, kurioje yra integruotas GitLab CI / CD.

▍1. Populiarumas

GitLab CI / CD yra palyginti naujas įrankis, kuris buvo plačiai naudojamas. GitLab CI / CD pamažu tapo labai populiariu CI / CD įrankiu, naudojamu automatizuotam testavimui ir programinės įrangos diegimui. Jį paprasta nustatyti. Tai taip pat nemokamas CI / CD įrankis, integruotas į GitLab platformą.

▍2. „GitLab“ puslapių ir „Jekyll“ palaikymas

Jekyll yra statinis svetainių generatorius, kurį galima naudoti „GitLab Pages“ sistemoje kuriant svetaines pagal „GitLab“ saugyklas. Sistema paima pirmines medžiagas ir pagal jas sukuria paruoštą statinę svetainę. Redaguodami failą galite valdyti tokių svetainių išvaizdą ir funkcijas _config.yml, naudojo Jekyll.

▍3. Projekto planavimo galimybės

Dėl galimybės planuoti projektų etapus padidėja problemų ir jų grupių sekimo patogumas. Tai leidžia valdyti projektų darbų organizavimą, planuoti jų įgyvendinimą konkrečia data.

▍4. Automatinis CI bėgikų mastelio keitimas

Dėl automatinio bėgikų, atsakingų už konkrečių užduočių atlikimą, mastelio galite sutaupyti daug serverio talpos nuomos išlaidų. Tai labai svarbu, ypač kalbant apie aplinkas, kuriose projektai testuojami lygiagrečiai. Be to, tai svarbu dideliems projektams, susidedantiems iš kelių saugyklų.

▍5. Problemų stebėjimo įrankiai

Galingos „GitLab“ problemų stebėjimo galimybės paskatino daugelį atvirojo kodo projektų naudoti platformą. GitLab CI/CD leidžia lygiagrečiai testuoti skirtingas kodo šakas. Testo rezultatai patogiai analizuojami sistemos sąsajoje. Tai išskiria GitLab CI / CD nuo Jenkins.

▍6. Prieigos prie saugyklų ribojimas

„GitLab“ platforma palaiko prieigos prie saugyklų apribojimą. Pavyzdžiui, tiems, kurie bendradarbiauja prie projekto saugykloje, gali būti priskirti leidimai, atitinkantys jų vaidmenis. Tai ypač pasakytina apie įmonių projektus.

▍7. Aktyvus bendruomenės palaikymas

Aplink GitLab susikūrė aktyvi bendruomenė, kuri prisideda prie šios platformos ir jos įrankių, ypač GitLab CI / CD, kūrimo. Gilus GitLab CI/CD ir GitLab integravimas, be kita ko, leidžia lengvai rasti atsakymus į klausimus, kylančius dirbant su GitLab CI/CD.

▍8. Įvairių versijų valdymo sistemų palaikymas

GitLab CI / CD yra sistema, kuri gali veikti ne tik su kodu, esančiu GitLab saugyklose. Pavyzdžiui, kodas gali būti saugomas „GitHub“ saugykloje, o CI / CD dujotiekis gali būti organizuojamas „GitLab“ pagrindu naudojant „GitLab CI / CD“.

Jenkins ir GitLab CI / CD palyginimas

Jenkins ir GitLab CI / CD yra labai geri įrankiai, kurie abu gali užtikrinti, kad CI / CD dujotiekis veiktų sklandžiai. Bet jei palyginsite, paaiškės, kad nors jie daugeliu atžvilgių yra panašūs, kai kuriais aspektais jie skiriasi vienas nuo kito.

Charakteristika
Jenkins
GitLab CI / CD

Atviras šaltinis arba uždaras šaltinis
atviro kodo
atviro kodo

Montavimas
Privaloma.
Nereikalaujama, nes tai yra integruota „GitLab“ platformos funkcija.

Unikalios savybės
Papildinių palaikymas.
Gilus integravimas į versijų valdymo sistemą.

Remti
Trūksta.
Yra.

Diegimas ir konfigūravimas
Sunkumai nesukelia
Sunkumai nesukelia

Savarankiškas sistemos diegimas
Tai vienintelis būdas naudotis sistema.
Palaikoma.

CI/CD konvejerių kūrimas
Palaikoma naudojant Jenkins Pipeline.
Palaikoma.

Programos veikimo stebėjimas
Trūksta.
Yra.

Ekosistemos
Yra daugiau nei 1000 papildinių.
Sistema kuriama GitLab.

API
Palaiko pažangią API sistemą.
Siūlo API gilesnei integracijai į projektus.

JavaScript palaikymas
Yra.
Yra.

Integracija su kitais įrankiais
Palaikoma integracija su kitais įrankiais ir platformomis („Slack“, „GitHub“).
Daugelis įrankių, skirtų integracijai su trečiųjų šalių sistemomis, ypač su „GitHub“ ir „Kubernetes“.

Kodo kokybės kontrolė
Palaikoma – naudojant SonarQube įskiepį ir kitus papildinius.
Palaikoma.

Skirtumai tarp Jenkins ir GitLab CI / CD

Aprašę ir palyginę „Jenkins“ ir „GitLab“ CI/CD, sutelkime dėmesį į šių „DevOps“ įrankių skirtumus. Žinodami šiuos skirtumus, galėsite suprasti tuos, kurie teikia pirmenybę vienai iš šių priemonių, o ne kitai.

  • „GitLab“ CI / CD gali visiškai valdyti „Git“ saugyklas. Kalbame apie saugyklų filialų valdymą ir kai kurias kitas funkcijas. Tačiau Jenkins, nors ir gali dirbti su saugyklomis, nesuteikia tokio pat valdymo lygio kaip GitLab CI / CD.
  • Jenkins yra nemokamas atvirojo kodo projektas. Tas, kuris jį pasirenka, diegia jį savarankiškai. Ir GitLab CI / CD yra įtrauktas į GitLab platformą, tai yra raktų sprendimas.
  • „GitLab CI/CD“ palaiko pažangius užduočių valdymo įrankius, kurie veikia projekto lygiu. Ši Jenkinso pusė yra mažiau išvystyta.

Jenkins ir GitLab CI / CD: stipriosios ir silpnosios pusės

Dabar jūs turite idėją apie Jenkins ir GitLab CI / CD. Dabar, norėdami dar geriau susipažinti su šiomis priemonėmis, pažvelkime į jų stipriąsias ir silpnąsias puses. Manome, kad jau nusprendėte, kokio įrankio jums reikia. Tikimės, kad šis skyrius leis jums išbandyti save.

▍Jenkinso stipriosios pusės

  • Daug priedų.
  • Visiška įrankių montavimo kontrolė.
  • Paprastas bėgikų derinimas.
  • Lengvas mazgo nustatymas.
  • Lengvas kodo diegimas.
  • Labai gera kredencialų valdymo sistema.
  • Lankstumas ir universalumas.
  • Įvairių programavimo kalbų palaikymas.
  • Sistema suprantama intuityviu lygmeniu.

▍Jenkinso trūkumai

  • Papildinius gali būti sudėtinga naudoti.
  • Naudojant Jenkins mažuose projektuose, laikas, reikalingas pačiam konfigūruoti, gali būti nepagrįstai didelis.
  • Trūksta bendros analitinės informacijos apie CI/CD grandines.

▍GitLab CI/CD stipriosios pusės

  • Gera integracija su Docker.
  • Paprastas bėgikų mastelio keitimas.
  • Lygiagretus užduočių, kurios yra CI/CD konvejerio etapų dalis, vykdymas.
  • Nukreipto aciklinio grafiko modelio naudojimas nustatant užduočių ryšius.
  • Didelis mastelio keitimo lygis dėl galimybės lygiagrečiai vykdyti bėgikus.
  • Lengva pridėti užduotis.
  • Paprastas konfliktų sprendimas.
  • Patikima apsaugos sistema.

▍GitLab CI/CD trūkumai

  • Kiekvienai užduočiai reikia aprašyti ir įkelti / atsisiųsti artefaktus.
  • Negalite patikrinti filialų sujungimo rezultatų, kol jie nėra iš tikrųjų sujungti.
  • Aprašant CI / CD konvejerio etapus, dar negalima išskirti atskirų jose etapų.

rezultatai

Tiek Jenkins, tiek GitLab CI / CD turi stipriąsias ir silpnąsias puses. Atsakymas į klausimą, ką pasirinkti, priklauso nuo konkretaus projekto poreikių ir savybių. Kiekvienas iš šiandien apžvelgtų CI / CD įrankių turi tam tikrų funkcijų, nors šios priemonės buvo sukurtos tai pačiai problemai išspręsti. Tuo pačiu metu „Jenkins“ yra atskiras įrankis, o „GitLab CI / CD“ yra platformos, skirtos bendradarbiauti kuriant kodą, dalis.

Renkantis CI / CD sistemą, be jos galimybių, verta atsižvelgti ir į išlaidas, kurios gali būti su ja susijusios, ir su kuo konkrečiai yra įpratę dirbti projektą palaikantys „DevOps“ inžinieriai.

Kokius CI/CD įrankius naudojate?

Jenkinso mūšis ir GitLab CI / CD

Jenkinso mūšis ir GitLab CI / CD

Šaltinis: www.habr.com

Добавить комментарий