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.
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
Paimkite, pavyzdžiui, duomenis iš G2 platformos, kurioje kaupiamos įvairiausių produktų apžvalgos ir vartotojų jiems suteikiami įvertinimai. Čia yra vidutinis įvertinimas
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.
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ą
„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
▍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ė
▍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.
▍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“.
„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?
Šaltinis: www.habr.com