Battle of Jenkins og GitLab CI/CD

I det sidste årti er der sket betydelige fremskridt i udviklingen af ​​værktøjer til kontinuerlig integration (Continuous Integration, CI) og kontinuerlig implementering (Continuous Delivery, CD). Udviklingen af ​​teknologier til at integrere softwareudvikling og drift (Development Operations, DevOps) har ført til en hurtig stigning i efterspørgslen efter CI/CD-værktøjer. Eksisterende løsninger bliver konstant forbedret, forsøger at følge med tiden, deres nye versioner frigives, i en verden af ​​kvalitetssikringssoftware (Quality Assurance, QA), dukker der konstant mange nye produkter op. Med sådan et væld af valgmuligheder er det ikke en let opgave at vælge det rigtige værktøj.

Battle of Jenkins og GitLab CI/CD

Blandt alle de eksisterende CI/CD-værktøjer er der to projekter, som bestemt er værd at være opmærksomme på til en, der leder efter noget fra dette område. Vi taler om Jenkins og GitLab CI/CD-værktøjet, som er en del af GitLab-platformen. Jenkins har mere end 16000 stjerner på GitHub. GitLab-depotet på gitlab.com scorede lidt mere 2000 stjerner. Hvis vi sammenligner populariteten af ​​depoterne, viser det sig, at Jenkins scorede 8 gange flere stjerner end platformen, som inkluderer GitLab CI / CD. Men når du vælger et CI / CD-værktøj, er dette langt fra den eneste indikator, du skal være opmærksom på. Der er masser af andre, og det forklarer, hvorfor Jenkins og GitLab CI/CD i mange sammenligninger er meget tæt på hinanden.

Tag for eksempel data fra G2-platformen, som akkumulerer anmeldelser af en lang række produkter og de vurderinger, som brugerne giver dem. Her er gennemsnitskarakteren Jenkins, baseret på 288 anmeldelser, er 4,3 stjerner. Åh åh GitLab der er 270 anmeldelser, den gennemsnitlige bedømmelse af dette værktøj er 4,4 stjerner. Vi vil ikke tage fejl af at sige, at Jenkins og GitLab CI/CD konkurrerer med hinanden på lige vilkår. Det er interessant at bemærke, at Jenkins-projektet dukkede op i 2011, og siden da har det været et yndet værktøj for testere. Men samtidig har GitLab CI/CD-projektet, der blev lanceret i 2014, indtaget sin position, meget højt, takket være de avancerede funktioner, som denne platform tilbyder.

Hvis vi taler om Jenkins' popularitet sammenlignet med andre lignende platforme, bemærker vi, at vi, efter at have offentliggjort en artikel, der sammenligner Travis CI- og Jenkins-platformene, arrangerede en undersøgelse. 85 brugere deltog i det. Respondenterne blev bedt om at vælge det CI/CD-værktøj, de kunne lide mest. 79 % valgte Jenkins, 5 % valgte Travis CI, og 16 % angav, at de foretrækker andre værktøjer.

Battle of Jenkins og GitLab CI/CD
Afstemningsresultater

Blandt andre CI/CD-værktøjer blev GitLab CI/CD nævnt oftest.

Hvis du er seriøs omkring DevOps, skal du omhyggeligt vælge de passende værktøjer under hensyntagen til projektets detaljer, dets budget og andre krav. For at hjælpe dig med at træffe det rigtige valg vil vi gennemgå Jenkins og GitLab CI/CD. Dette vil forhåbentlig hjælpe dig med at træffe det rigtige valg.

Introduktion til Jenkins

Battle of Jenkins og GitLab CI/CD
Jenkins er et velkendt, fleksibelt CI/CD-værktøj designet til at automatisere mange opgaver relateret til softwareprojekter. Jenkins er skrevet udelukkende i Java og udgivet under MIT-licensen. Den har et kraftfuldt sæt funktioner, der sigter mod at automatisere de opgaver, der er forbundet med at bygge, teste, implementere, integrere og frigive software. Dette værktøj kan bruges på forskellige operativsystemer. Disse inkluderer macOS, Windows og mange Linux-distributioner såsom OpenSUSE, Ubuntu og Red Hat. Der er installationspakker til Jenkins designet til forskellige operativsystemer, dette værktøj kan installeres på Docker og på ethvert system, der har et JRE (Java Runtime Environment).

Jenkins-udviklerne har skabt et andet projekt, Jenkins X, som er designet til at fungere i et Kubernetes-miljø. Jenkins X integrerer Helm, Jenkins CI/CD Server, Kubernetes og andre værktøjer til at bygge CI/CD-pipelines, der følger DevOps bedste praksis. For eksempel bruges GitOps her.

Man kan tilføje til skatkammeret af fordelene ved Jenkins, at dets scripts er meget velstrukturerede, forståelige og lette at læse. Jenkins-teamet har skabt omkring 1000 plugins, der har til formål at organisere samspillet mellem Jenkins med en bred vifte af teknologier. Scripts kan bruge autentificeringssystemer, som for eksempel giver dig mulighed for at oprette forbindelse til forskellige lukkede systemer.

Under driften af ​​Jenkins-pipelinen kan du observere, hvad der sker på hvert trin, uanset om visse stadier af arbejdet er blevet gennemført med succes eller ej. Du kan dog se alt dette uden at bruge en bestemt grafisk grænseflade, men ved at bruge terminalens muligheder.

Egenskaber ved Jenkins

Blandt de velkendte funktioner i Jenkins er nem opsætning, et højt niveau af automatisering af forskellige operationer og fremragende dokumentation. Hvis vi taler om at løse DevOps-opgaver, så betragtes Jenkins her som et meget pålideligt værktøj, hvor det som regel ikke giver nogen mening at nøje overvåge hele processen med projektbehandling. Dette er ikke tilfældet med andre CI/CD-værktøjer. Lad os tale om nogle af de vigtigste egenskaber ved Jenkins.

▍1. Gratis, open source, multi-platform support

Jenkins kan køre på macOS, Windows og Linux platforme. Det kan også fungere i et Docker-miljø, som giver dig mulighed for at organisere ensartet og hurtig udførelse af automatiserede opgaver. Dette værktøj kan også køre som en servlet i Java-aktiverede containere såsom Apache Tomcat og GlassFish. Installation af Jenkins kvalitativt dokumenteret.

▍2. Udviklet plugin-økosystem

Jenkins plugin-økosystemet ser ud til at være meget mere modent end plugin-økosystemerne i andre CI/CD-værktøjer. Der er i øjeblikket over 1500 plugins til Jenkins. Disse plugins er rettet mod at løse en bred vifte af opgaver, med deres hjælp kan du automatisere en række projekter. Rigdommen af ​​gratis plugins at vælge imellem betyder, at hvis du bruger Jenkins, behøver du ikke købe dyre betalte plugins. Der er en mulighed integration Jenkins med mange DevOps-værktøjer.

▍3. Nem installation og opsætning

Jenkins er ret nem at installere og konfigurere. Samtidig er processen med at opdatere systemet også meget praktisk. Her er det igen værd at nævne kvaliteten af ​​dokumentationen, da du i den kan finde svar på en række spørgsmål relateret til installation og konfiguration af Jenkins.

▍4. Venligt fællesskab

Som allerede nævnt er Jenkins et open source-projekt, hvis økosystem inkluderer et stort antal plugins. Et stort fællesskab af brugere og udviklere har udviklet sig omkring Jenkins for at hjælpe med at udvikle projektet. Fællesskabet er en af ​​de faktorer, der driver udviklingen af ​​Jenkins.

▍5. Tilgængelighed af REST API

Mens du arbejder med Jenkins, kan du bruge REST API, som udvider systemets muligheder. API til fjernadgang til systemet præsenteres i tre versioner: XML, JSON med JSONP-understøttelse, Python. her Dokumentationsside, der dækker detaljer om arbejde med Jenkins REST API.

▍6. Support til parallel udførelse af opgaver

Jenkins understøtter parallelisering af DevOps-opgaver. Det kan nemt integreres med relevante værktøjer og modtage meddelelser om resultaterne af opgaver. Kodetestning kan accelereres ved at organisere en parallel opbygning af projektet ved hjælp af forskellige virtuelle maskiner.

▍7. Støtte til arbejde i distribuerede miljøer

Jenkins giver dig mulighed for at organisere distribuerede builds ved hjælp af flere computere. Denne funktion er anvendelig i store projekter og bruger et arbejdsskema, ifølge hvilket der er en master Jenkins-server og flere slavemaskiner. Slavemaskiner kan også bruges i situationer, hvor det er nødvendigt at organisere test af et projekt i forskellige miljøer. Disse funktioner adskiller Jenkins fra andre lignende projekter.

Introduktion til GitLab

Battle of Jenkins og GitLab CI/CD
GitLab CI/CD kan kaldes et af de nyeste og mest elskede DevOps-værktøjer. Dette gratis open source-værktøj er indbygget i GitLab-versionskontrolsystemet. GitLab-platformen har en fællesskabsversion, den understøtter lagerstyring, problemsporingsværktøjer, organisation af kodegennemgang, dokumentationsorienterede mekanismer. Virksomheder kan installere GitLab lokalt ved at linke det til Active Directory og LDAP-servere for sikker brugerautorisation og -godkendelse.

her En videotutorial, der hjælper dig med at lære, hvordan du opretter CI/CD-pipelines ved hjælp af GitLab CI/CD-funktioner.

GitLab CI/CD blev oprindeligt udgivet som et selvstændigt projekt, men i 2015 blev dette sæt værktøjer integreret i GitLab 8.0. En enkelt GitLab CI/CD-server kan understøtte over 25000 brugere. Baseret på sådanne servere kan du oprette systemer, der er yderst tilgængelige.

GitLab CI/CD og hoved GitLab-projektet er skrevet i Ruby and Go. De er frigivet under MIT-licensen. GitLab CI/CD understøtter, udover de sædvanlige funktioner i CI/CD-værktøjer, også yderligere funktioner relateret til for eksempel arbejdsplanlægning.

Det er meget nemt at integrere GitLab CI/CD i et projekt. Ved brug af GitLab CI/CD er projektkodebehandlingsprocessen opdelt i faser, som hver kan bestå af flere opgaver udført i en bestemt rækkefølge. Opgaver kan finjusteres.

Opgaver kan køre sideløbende. Efter opsætning af sekvensen af ​​stadier og opgaver er CI/CD-pipelinen klar til at gå. Du kan overvåge dens fremskridt ved at overvåge status for opgaver. Som et resultat er det meget praktisk at bruge GitLab CI / CD, måske mere praktisk end andre lignende værktøjer.

Funktioner i GitLab CI/CD og GitLab

GitLab CI/CD er et af de mest populære DevOps-værktøjer. Projektet er kendetegnet ved dokumentation af høj kvalitet, dets funktioner er nemme og bekvemme at bruge. Hvis du endnu ikke er bekendt med GitLab CI/CD, vil følgende liste over dette værktøjs funktioner give dig en generel idé om, hvad du kan forvente af det. Det skal bemærkes, at mange af disse funktioner er relateret til selve GitLab-platformen, hvori GitLab CI/CD er integreret.

▍1. Popularitet

GitLab CI/CD er et relativt nyt værktøj, der har fundet udbredt brug. GitLab CI/CD er langsomt blevet et enormt populært CI/CD-værktøj, der bruges til automatiseret test og softwareimplementering. Den er enkel at sætte op. Det er også et gratis CI/CD-værktøj indbygget i GitLab-platformen.

▍2. Support til GitLab Pages og Jekyll

Jekyll er en statisk webstedsgenerator, der kan bruges i GitLab Pages-systemet til at oprette websteder baseret på GitLab-lagre. Systemet tager kildematerialerne og genererer et færdigt statisk websted baseret på dem. Du kan kontrollere udseendet og funktionerne på sådanne websteder ved at redigere filen _config.yml, brugt af Jekyll.

▍3. Projektplanlægningsevner

Takket være evnen til at planlægge projektfaserne øges bekvemmeligheden ved at spore problemer og deres grupper. Dette giver dig mulighed for at styre tilrettelæggelsen af ​​arbejdet med projekter, planlægge deres implementering på en bestemt dato.

▍4. Automatisk skalering af CI løbere

Takket være den automatiske skalering af løbere, der er ansvarlige for at udføre specifikke opgaver, kan du spare meget på udgifterne til leje af serverkapacitet. Dette er meget vigtigt, især når det kommer til miljøer, hvor projekter testes sideløbende. Derudover er dette vigtigt for store projekter bestående af flere depoter.

▍5. Udsted sporingsværktøjer

GitLabs kraftfulde problemsporingsfunktioner har fået mange open source-projekter til at bruge platformen. GitLab CI/CD tillader parallel test af forskellige kodegrene. Testresultater analyseres bekvemt i systemgrænsefladen. Dette adskiller GitLab CI/CD fra Jenkins.

▍6. Begrænsning af adgang til arkiver

GitLab-platformen understøtter begrænsning af adgang til repositories. For eksempel kan de, der samarbejder om et projekt i et lager, få tildelt tilladelser, der passer til deres roller. Dette gælder især for virksomhedsprojekter.

▍7. Aktiv samfundsstøtte

Et aktivt fællesskab har udviklet sig omkring GitLab, som bidrager til udviklingen af ​​denne platform og dens værktøjer, især GitLab CI/CD. Dyb integration af blandt andet GitLab CI/CD og GitLab gør det nemt at finde svar på spørgsmål, der opstår, når man arbejder med GitLab CI/CD.

▍8. Support til forskellige versionskontrolsystemer

GitLab CI/CD er et system, der kan arbejde med mere end blot kode, der hostes i GitLab-lagre. For eksempel kan koden gemmes i et GitHub-lager, og CI/CD-pipelinen kan organiseres på basis af GitLab ved hjælp af GitLab CI/CD.

Sammenligning af Jenkins og GitLab CI/CD

Jenkins og GitLab CI/CD er meget gode værktøjer, som begge er i stand til at få CI/CD-pipelinen til at køre problemfrit. Men hvis vi sammenligner dem, viser det sig, at selvom de ligner hinanden på mange måder, så adskiller de sig fra hinanden på nogle måder.

Karakterisering
Jenkins
GitLab CI/CD

Open source eller lukket kilde
Åben kilde
Åben kilde

Installation
Påkrævet.
Ikke påkrævet, da dette er en indbygget funktion i GitLab-platformen.

Unikke funktioner
Plugin support.
Dyb integration i versionskontrolsystem.

Support
Ikke tilgængelig.
Ledig.

Installation og konfiguration
Vanskeligheder forårsager ikke
Vanskeligheder forårsager ikke

Selvudrulning af systemet
Dette er den eneste måde at bruge systemet på.
Understøttet.

Oprettelse af CI/CD-pipelines
Understøttet ved hjælp af Jenkins Pipeline.
Understøttet.

Overvågning af applikationens ydeevne
Ikke tilgængelig.
Ledig.

Økosystem
Der er over 1000 plugins.
Systemet udvikles i GitLab.

API
Understøtter et avanceret API-system.
Tilbyder en API til dybere integration i projekter.

JavaScript support
Ledig.
Ledig.

Integration med andre værktøjer
Integration med andre værktøjer og platforme er understøttet (Slack, GitHub).
Mange værktøjer til integration med tredjepartssystemer, især - med GitHub og Kubernetes.

Kode kvalitetskontrol
Understøttet - ved hjælp af SonarQube plugin og andre plugins.
Understøttet.

Forskelle mellem Jenkins og GitLab CI/CD

Efter at have beskrevet og sammenlignet Jenkins og GitLab CI/CD, lad os fokusere på forskellene mellem disse DevOps-værktøjer. At kende disse forskelle vil hjælpe dig med at forstå dem, der foretrækker et af disse værktøjer frem for det andet.

  • GitLab CI/CD kan fuldt ud kontrollere Git repositories. Vi taler om styring af depotafdelinger og nogle andre funktioner. Men Jenkins, selvom det kan arbejde med repositories, giver ikke det samme niveau af kontrol over dem som GitLab CI/CD.
  • Jenkins er et gratis open source-projekt. Den, der vælger det, implementerer det selvstændigt. Og GitLab CI / CD er inkluderet i GitLab platformen, dette er en nøglefærdig løsning.
  • GitLab CI/CD understøtter avancerede opgavestyringsværktøjer, der fungerer på projektniveau. Denne side af Jenkins er mindre udviklet.

Jenkins og GitLab CI/CD: styrker og svagheder

Nu har du en idé om Jenkins og GitLab CI/CD. Lad os nu tage et kig på deres styrker og svagheder for at gøre dig endnu bedre bekendt med disse værktøjer. Vi går ud fra, at du allerede har besluttet, hvilket værktøj du skal bruge. Forhåbentlig vil dette afsnit give dig mulighed for at teste dig selv.

▍ Styrker ved Jenkins

  • Et stort antal plugins.
  • Fuld kontrol over installation af værktøj.
  • Simpel debugging af løbere.
  • Nem opsætning af node.
  • Nem kodeimplementering.
  • Meget godt legitimationsstyringssystem.
  • Fleksibilitet og alsidighed.
  • Understøttelse af forskellige programmeringssprog.
  • Systemet er forståeligt på et intuitivt niveau.

▍Svagheder ved Jenkins

  • Plugins kan være vanskelige at bruge.
  • Når du bruger Jenkins i små projekter, kan den tid, der kræves til at konfigurere den selv, være urimelig stor.
  • Mangel på generel analytisk information om CI/CD-kæder.

▍ Styrker ved GitLab CI/CD

  • God integration med Docker.
  • Enkel skalering af løbere.
  • Parallel udførelse af opgaver, der indgår i faserne af CI/CD pipeline.
  • Brug af den rettede acykliske grafmodel ved opsætning af opgaverelationer.
  • Høj grad af skalerbarhed på grund af muligheden for parallel udførelse af løbere.
  • Nem at tilføje opgaver.
  • Simpel konfliktløsning.
  • Pålideligt sikkerhedssystem.

▍Svagheder ved GitLab CI/CD

  • For hver opgave skal du beskrive og uploade/downloade artefakter.
  • Du kan ikke teste resultaterne af fletning af filialer, før de rent faktisk er flettet.
  • Når man beskriver stadierne i CI/CD-pipelinen, er det endnu ikke muligt at udskille individuelle stadier i dem.

Resultaterne af

Både Jenkins og GitLab CI/CD har styrker og svagheder. Svaret på spørgsmålet om, hvad man skal vælge, afhænger af et bestemt projekts behov og egenskaber. Hvert af de CI/CD-værktøjer, der er gennemgået i dag, har visse funktioner, selvom disse værktøjer blev skabt for at løse det samme problem. Samtidig er Jenkins et selvstændigt værktøj, og GitLab CI/CD er en del af en platform designet til at samarbejde om kode.

Når du vælger et CI / CD-system, er det ud over dets muligheder værd at tage højde for de omkostninger, der kan være forbundet med det, og hvad præcist DevOps-ingeniører, der understøtter projektet, er vant til at arbejde med.

Hvilke CI/CD-værktøjer bruger du?

Battle of Jenkins og GitLab CI/CD

Battle of Jenkins og GitLab CI/CD

Kilde: www.habr.com

Tilføj en kommentar