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.
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
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
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.
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
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
▍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
▍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.
▍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
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?
Kilde: www.habr.com