Bătălia de la Jenkins și GitLab CI/CD

În ultimul deceniu, s-au înregistrat progrese semnificative în dezvoltarea instrumentelor de integrare continuă (Continuous Integration, CI) și implementare continuă (Continuous Delivery, CD). Dezvoltarea tehnologiilor de integrare a dezvoltării și operațiunii software (Development Operations, DevOps) a condus la o creștere rapidă a cererii de instrumente CI/CD. Soluțiile existente sunt îmbunătățite constant, încercând să țină pasul cu vremurile, sunt lansate noile lor versiuni, în lumea software-ului de asigurare a calității (Asigurarea Calității, QA), apar în mod constant multe produse noi. Cu o asemenea multitudine de opțiuni, alegerea instrumentului potrivit nu este o sarcină ușoară.

Bătălia de la Jenkins și GitLab CI/CD

Printre toate instrumentele CI/CD existente, există două proiecte care merită cu siguranță să acorde atenție cuiva care caută ceva din această zonă. Vorbim despre Jenkins și instrumentul GitLab CI/CD, care face parte din platforma GitLab. Jenkins are mai mult de 16000 stele pe GitHub. Depozitul GitLab de pe gitlab.com a marcat puțin mai mult 2000 stele. Dacă comparăm popularitatea depozitelor, se dovedește că Jenkins a obținut de 8 ori mai multe stele decât platforma, care include GitLab CI/CD. Dar atunci când alegeți un instrument CI / CD, acesta este departe de singurul indicator căruia ar trebui să îi acordați atenție. Există o mulțime de altele, iar asta explică de ce, în multe comparații, Jenkins și GitLab CI / CD sunt foarte aproape unul de celălalt.

Luați, de exemplu, datele de pe platforma G2, care acumulează recenzii pentru o mare varietate de produse și evaluările pe care le acordă utilizatorii. Iată ratingul mediu Jenkins, pe baza a 288 de recenzii, este de 4,3 stele. Oh oh GitLab există 270 de recenzii, evaluarea medie pentru acest instrument este de 4,4 stele. Nu ne vom înșela spunând că Jenkins și GitLab CI/CD concurează între ele în condiții egale. Este interesant de observat că proiectul Jenkins a apărut în 2011 și de atunci a fost un instrument preferat pentru testeri. Dar, în același timp, proiectul GitLab CI/CD, lansat în 2014, și-a luat poziția, foarte sus, datorită caracteristicilor avansate oferite de această platformă.

Dacă vorbim despre popularitatea lui Jenkins în comparație cu alte platforme similare, observăm că noi, după ce am publicat un articol care compară platformele Travis CI și Jenkins, am organizat un sondaj. 85 de utilizatori au participat la ea. Respondenții au fost rugați să aleagă instrumentul CI/CD care le place cel mai mult. 79% au ales Jenkins, 5% au ales Travis CI și 16% au indicat că preferă alte instrumente.

Bătălia de la Jenkins și GitLab CI/CD
Rezultatele sondajului

Printre alte instrumente CI/CD, GitLab CI/CD a fost menționat cel mai des.

Dacă sunteți serios în privința DevOps, atunci trebuie să selectați cu atenție instrumentele adecvate, ținând cont de specificul proiectului, bugetul acestuia și alte cerințe. Pentru a vă ajuta să faceți alegerea corectă, vom analiza Jenkins și GitLab CI/CD. Acest lucru, sperăm, vă va ajuta să faceți alegerea corectă.

Introducere în Jenkins

Bătălia de la Jenkins și GitLab CI/CD
Jenkins este un instrument CI/CD bine-cunoscut, flexibil, conceput pentru a automatiza multe sarcini legate de proiectele software. Jenkins este scris în întregime în Java și eliberat sub licență MIT. Are un set puternic de caracteristici care vizează automatizarea sarcinilor asociate cu construirea, testarea, implementarea, integrarea și lansarea de software. Acest instrument poate fi utilizat pe diferite sisteme de operare. Acestea includ macOS, Windows și multe distribuții Linux, cum ar fi OpenSUSE, Ubuntu și Red Hat. Există pachete de instalare pentru Jenkins concepute pentru diverse sisteme de operare, acest instrument poate fi instalat pe Docker și pe orice sistem care are un JRE (Java Runtime Environment).

Dezvoltatorii Jenkins au creat un alt proiect, Jenkins X, care este conceput să funcționeze într-un mediu Kubernetes. Jenkins X integrează Helm, serverul Jenkins CI/CD, Kubernetes și alte instrumente pentru a construi conducte CI/CD care urmează cele mai bune practici DevOps. De exemplu, GitOps este folosit aici.

Se poate adăuga la vistieria avantajelor lui Jenkins faptul că scenariile sale sunt foarte bine structurate, ușor de înțeles și ușor de citit. Echipa Jenkins a creat aproximativ 1000 de plugin-uri care au ca scop organizarea interacțiunii Jenkins cu o mare varietate de tehnologii. Scripturile pot folosi sisteme de autentificare, care, de exemplu, vă permit să vă conectați la diferite sisteme închise.

În timpul funcționării conductei Jenkins, puteți observa ce se întâmplă la fiecare pas, indiferent dacă anumite etape de lucru au fost finalizate cu succes sau nu. Puteți viziona toate acestea, însă, fără a utiliza o anumită interfață grafică, ci folosind capabilitățile terminalului.

Caracteristicile lui Jenkins

Printre caracteristicile binecunoscute ale lui Jenkins se numără ușurința de configurare, un nivel ridicat de automatizare a diferitelor operațiuni și o documentare excelentă. Dacă vorbim despre rezolvarea sarcinilor DevOps, atunci aici Jenkins este considerat un instrument foarte fiabil, care, de regulă, nu are sens să monitorizezi îndeaproape întregul proces de procesare a proiectului. Acesta nu este cazul altor instrumente CI/CD. Să vorbim despre unele dintre cele mai importante caracteristici ale lui Jenkins.

▍1. Suport gratuit, open source, multi-platformă

Jenkins poate rula pe platformele macOS, Windows și Linux. Poate funcționa și într-un mediu Docker, care vă permite să organizați execuția uniformă și rapidă a sarcinilor automate. Acest instrument poate rula și ca servlet în containere activate pentru Java, cum ar fi Apache Tomcat și GlassFish. Instalarea lui Jenkins calitativ documentat.

▍2. Ecosistem de plugin dezvoltat

Ecosistemul de pluginuri Jenkins pare a fi mult mai matur decât ecosistemele de pluginuri ale altor instrumente CI/CD. În prezent, există peste 1500 de pluginuri pentru Jenkins. Aceste plugin-uri sunt menite să rezolve o gamă largă de sarcini, cu ajutorul lor puteți automatiza o varietate de proiecte. Bogăția de pluginuri gratuite din care să alegeți înseamnă că, dacă utilizați Jenkins, nu trebuie să cumpărați pluginuri scumpe plătite. Există o posibilitate integrări Jenkins cu multe instrumente DevOps.

▍3. Instalare și configurare ușoară

Jenkins este destul de ușor de instalat și configurat. În același timp, procesul de actualizare a sistemului este, de asemenea, foarte convenabil. Aici, din nou, merită menționată calitatea documentației, deoarece în ea puteți găsi răspunsuri la o varietate de întrebări legate de instalarea și configurarea Jenkins.

▍4. Comunitate prietenoasă

După cum am menționat deja, Jenkins este un proiect open source, al cărui ecosistem include un număr mare de plugin-uri. O comunitate mare de utilizatori și dezvoltatori s-a dezvoltat în jurul lui Jenkins pentru a ajuta la dezvoltarea proiectului. Comunitatea este unul dintre factorii care determină dezvoltarea lui Jenkins.

▍5. Disponibilitatea API-ului REST

În timp ce lucrați cu Jenkins, puteți utiliza API-ul REST, care extinde capacitățile sistemului. API pentru accesul de la distanță la sistem este prezentat în trei versiuni: XML, JSON cu suport JSONP, Python. Aici Pagina de documentație care acoperă detalii despre lucrul cu API-ul REST Jenkins.

▍6. Suport pentru executarea paralelă a sarcinilor

Jenkins acceptă paralelizarea sarcinilor DevOps. Poate fi integrat cu ușurință cu instrumente relevante și poate primi notificări despre rezultatele sarcinilor. Testarea codului poate fi accelerată prin organizarea unei versiuni paralele a proiectului folosind diferite mașini virtuale.

▍7. Suport pentru lucrul în medii distribuite

Jenkins vă permite să organizați versiuni distribuite folosind mai multe computere. Această caracteristică este aplicabilă în proiecte mari și utilizează o schemă de lucru, conform căreia există un server Jenkins principal și mai multe mașini sclave. Mașinile slave pot fi utilizate și în situațiile în care este necesar să se organizeze testarea unui proiect în diferite medii. Aceste caracteristici îl deosebesc pe Jenkins de alte proiecte similare.

Introducere în GitLab

Bătălia de la Jenkins și GitLab CI/CD
GitLab CI/CD poate fi numit unul dintre cele mai noi și mai îndrăgite instrumente DevOps. Acest instrument gratuit open source este încorporat în sistemul de control al versiunilor GitLab. Platforma GitLab are o versiune comunitară, acceptă gestionarea depozitelor, instrumente de urmărire a problemelor, organizarea de revizuire a codului, mecanisme orientate spre documentare. Companiile pot instala GitLab local, conectându-l la serverele Active Directory și LDAP pentru autorizarea și autentificarea sigură a utilizatorilor.

Aici Un tutorial video pentru a vă ajuta să învățați cum să creați conducte CI/CD folosind capabilitățile GitLab CI/CD.

GitLab CI/CD a fost lansat inițial ca proiect independent, dar în 2015 acest set de instrumente a fost integrat în GitLab 8.0. Un singur server GitLab CI/CD poate suporta peste 25000 de utilizatori. Pe baza unor astfel de servere, puteți crea sisteme care sunt foarte disponibile.

GitLab CI/CD și proiectul principal GitLab sunt scrise în Ruby and Go. Sunt eliberate sub licența MIT. GitLab CI/CD, pe lângă caracteristicile obișnuite ale instrumentelor CI/CD, acceptă și caracteristici suplimentare legate, de exemplu, de programarea muncii.

Integrarea GitLab CI/CD într-un proiect este foarte ușoară. Când utilizați GitLab CI/CD, procesul de procesare a codului de proiect este împărțit în etape, fiecare dintre acestea putând consta din mai multe sarcini efectuate într-o anumită ordine. Sarcinile pot fi reglate fin.

Sarcinile pot rula în paralel. După configurarea secvenței de etape și sarcini, conducta CI/CD este gata de funcționare. Puteți monitoriza progresul acestuia monitorizând starea sarcinilor. Drept urmare, utilizarea GitLab CI / CD este foarte convenabilă, poate mai convenabilă decât alte instrumente similare.

Caracteristicile GitLab CI/CD și GitLab

GitLab CI/CD este unul dintre cele mai populare instrumente DevOps. Proiectul se distinge prin documentație de înaltă calitate, caracteristicile sale sunt ușor și convenabil de utilizat. Dacă nu sunteți încă familiarizat cu GitLab CI/CD, următoarea listă a caracteristicilor acestui instrument vă va oferi o idee generală despre ce vă puteți aștepta de la acesta. Trebuie remarcat faptul că multe dintre aceste caracteristici sunt legate de platforma GitLab în sine, în care este integrat GitLab CI / CD.

▍1. Popularitate

GitLab CI/CD este un instrument relativ nou care a găsit o utilizare pe scară largă. GitLab CI/CD a devenit treptat un instrument CI/CD extrem de popular folosit pentru testarea automată și implementarea software-ului. Este simplu de configurat. Este, de asemenea, un instrument gratuit CI/CD încorporat în platforma GitLab.

▍2. Suport pentru paginile GitLab și Jekyll

Jekyll este un generator de site static care poate fi utilizat în sistemul GitLab Pages pentru a crea site-uri bazate pe depozite GitLab. Sistemul preia materialele sursă și generează un site static gata făcut pe baza acestora. Puteți controla aspectul și caracteristicile unor astfel de site-uri prin editarea fișierului _config.yml, folosit de Jekyll.

▍3. Capacitate de planificare a proiectelor

Datorită capacității de a planifica etapele proiectelor, confortul de urmărire a problemelor și a grupurilor acestora crește. Acest lucru vă permite să gestionați organizarea lucrărilor pe proiecte, să planificați implementarea lor la o anumită dată.

▍4. Scalare automată a alergătorilor CI

Datorită scalarii automate a alergătorilor responsabili cu îndeplinirea sarcinilor specifice, puteți economisi mult pe costul închirierii capacităților serverului. Acest lucru este foarte important, mai ales când vine vorba de medii în care proiectele sunt testate în paralel. În plus, acest lucru este important pentru proiecte mari care constau din mai multe depozite.

▍5. Instrumente de urmărire a problemelor

Capacitățile puternice de urmărire a problemelor GitLab au determinat multe proiecte open source să utilizeze platforma. GitLab CI/CD permite testarea paralelă a diferitelor ramuri de cod. Rezultatele testelor sunt analizate convenabil în interfața sistemului. Acest lucru diferențiază GitLab CI/CD de Jenkins.

▍6. Restricționarea accesului la depozite

Platforma GitLab acceptă restricționarea accesului la depozite. De exemplu, celor care colaborează la un proiect într-un depozit li se pot atribui permisiuni adecvate rolurilor lor. Acest lucru este valabil mai ales pentru proiectele corporative.

▍7. Sprijin activ al comunității

În jurul GitLab s-a dezvoltat o comunitate activă, care contribuie la dezvoltarea acestei platforme și a instrumentelor sale, în special, GitLab CI/CD. Integrarea profundă a GitLab CI/CD și GitLab, printre altele, face ușor să găsiți răspunsuri la întrebările care apar atunci când lucrați cu GitLab CI/CD.

▍8. Suport pentru diverse sisteme de control al versiunilor

GitLab CI/CD este un sistem care poate funcționa cu mai mult decât doar cod găzduit în depozitele GitLab. De exemplu, codul poate fi stocat într-un depozit GitHub, iar conducta CI/CD poate fi organizată pe baza GitLab folosind GitLab CI/CD.

Comparație între Jenkins și GitLab CI/CD

Jenkins și GitLab CI/CD sunt instrumente foarte bune, ambele fiind capabile să facă conducta CI/CD să funcționeze fără probleme. Dar dacă le compari, se dovedește că, deși sunt asemănătoare în multe privințe, diferă unele de altele în anumite privințe.

Caracterizare
Jenkins
GitLab CI/CD

Sursă deschisă sau sursă închisă
sursa deschisa
sursa deschisa

Instalare
Necesar.
Nu este necesar, deoarece aceasta este o caracteristică încorporată a platformei GitLab.

Caracteristici unice
Suport pentru pluginuri.
Integrare profundă în sistemul de control al versiunilor.

Sprijini
Lipsește.
Disponibil.

Instalare și configurare
Dificultățile nu provoacă
Dificultățile nu provoacă

Autodesfăşurarea sistemului
Acesta este singurul mod de a utiliza sistemul.
Sprijinit.

Crearea conductelor CI/CD
Sprijin, folosind Jenkins Pipeline.
Sprijinit.

Monitorizarea performanței aplicației
Lipsește.
Disponibil.

Ecosistem
Există peste 1000 de pluginuri.
Sistemul este dezvoltat în cadrul GitLab.

API
Acceptă un sistem API avansat.
Oferă un API pentru o integrare mai profundă în proiecte.

Suport JavaScript
Disponibil.
Disponibil.

Integrare cu alte instrumente
Integrarea cu alte instrumente și platforme este acceptată (Slack, GitHub).
Multe instrumente pentru integrarea cu sisteme terțe, în special - cu GitHub și Kubernetes.

Controlul calității codului
Acceptat - folosind plugin-ul SonarQube și alte plugin-uri.
Sprijinit.

Diferențele dintre Jenkins și GitLab CI/CD

După ce am descris și comparat Jenkins și GitLab CI/CD, să ne concentrăm asupra diferențelor dintre aceste instrumente DevOps. Cunoașterea acestor diferențe vă va ajuta să înțelegeți pe cei care preferă unul dintre aceste instrumente față de celălalt.

  • GitLab CI/CD poate controla pe deplin depozitele Git. Vorbim despre gestionarea ramurilor depozitului și despre câteva alte caracteristici. Dar Jenkins, deși poate funcționa cu depozite, nu oferă același nivel de control asupra lor ca GitLab CI / CD.
  • Jenkins este un proiect open source gratuit. Cel care îl alege îl desfășoară independent. Și GitLab CI/CD este inclus în platforma GitLab, aceasta este o soluție la cheie.
  • GitLab CI/CD acceptă instrumente avansate de management al sarcinilor care funcționează la nivel de proiect. Această latură a lui Jenkins este mai puțin dezvoltată.

Jenkins și GitLab CI/CD: puncte forte și puncte slabe

Acum aveți o idee despre Jenkins și GitLab CI/CD. Acum, pentru a vă familiariza și mai bine cu aceste instrumente, să aruncăm o privire asupra punctelor forte și a punctelor slabe ale acestora. Presupunem că ați decis deja ce instrument aveți nevoie. Sperăm că această secțiune vă va permite să vă testați.

▍Puntele forte ale lui Jenkins

  • Un număr mare de plugin-uri.
  • Control deplin asupra instalării instrumentului.
  • Depanare simplă a alergătorilor.
  • Configurare ușoară a nodului.
  • Implementare ușoară a codului.
  • Sistem de gestionare a acreditărilor foarte bun.
  • Flexibilitate și versatilitate.
  • Suport pentru diverse limbaje de programare.
  • Sistemul este de înțeles la nivel intuitiv.

▍Puncțiile slabe ale lui Jenkins

  • Pluginurile pot fi dificil de utilizat.
  • Când utilizați Jenkins în proiecte mici, timpul necesar pentru a-l configura singur poate fi nerezonabil de mare.
  • Lipsa informațiilor analitice generale privind lanțurile CI/CD.

▍Puntele forte ale GitLab CI/CD

  • Bună integrare cu Docker.
  • Scalare simplă a alergătorilor.
  • Executarea paralelă a sarcinilor care fac parte din etapele conductei CI/CD.
  • Utilizarea modelului de grafic aciclic direcționat la stabilirea relațiilor de sarcini.
  • Nivel ridicat de scalabilitate datorită posibilității de execuție paralelă a alergătorilor.
  • Ușurință în adăugarea sarcinilor.
  • Rezolvarea simplă a conflictului.
  • Sistem de securitate fiabil.

▍Puncte slabe ale GitLab CI/CD

  • Pentru fiecare sarcină, trebuie să descrieți și să încărcați/descărcați artefacte.
  • Nu puteți testa rezultatele îmbinării ramurilor înainte ca acestea să fie efectiv îmbinate.
  • Când descrieți etapele conductei CI / CD, nu este încă posibilă evidențierea etapelor individuale ale acestora.

Rezultatele

Atât Jenkins, cât și GitLab CI/CD au puncte tari și puncte slabe. Răspunsul la întrebarea ce să alegeți depinde de nevoile și caracteristicile unui anumit proiect. Fiecare dintre instrumentele CI/CD revizuite astăzi are anumite caracteristici, deși aceste instrumente au fost create pentru a rezolva aceeași problemă. În același timp, Jenkins este un instrument de sine stătător, iar GitLab CI/CD face parte dintr-o platformă concepută pentru colaborarea pe cod.

Atunci când alegeți un sistem CI / CD, pe lângă capabilitățile sale, merită să luați în considerare costurile care pot fi asociate cu acesta și cu ce anume lucrează inginerii DevOps care sprijină proiectul.

Ce instrumente CI/CD folosiți?

Bătălia de la Jenkins și GitLab CI/CD

Bătălia de la Jenkins și GitLab CI/CD

Sursa: www.habr.com

Adauga un comentariu