{"id":96161,"date":"2020-10-08T19:42:48","date_gmt":"2020-10-08T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd"},"modified":"2020-10-08T19:42:48","modified_gmt":"2020-10-08T17:42:48","slug":"bitva-jenkins-i-gitlab-ci-cd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","title":{"rendered":"Kampen mellem Jenkins og GitLab CI\/CD","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I det sidste \u00e5rti er der gjort betydelige fremskridt inden for udviklingen af v\u00e6rkt\u00f8jer til kontinuerlig integration (Continuous Integration, CI) og kontinuerlig levering (Continuous Delivery, CD). Udviklingen af teknologier til integration af softwareudvikling og drift (Development Operations, DevOps) har f\u00f8rt til en hurtig stigning i eftersp\u00f8rgslen efter CI\/CD-v\u00e6rkt\u00f8jer. Eksisterende l\u00f8sninger forbedres konstant i bestr\u00e6belserne p\u00e5 at f\u00f8lge med tiden, nye versioner bliver lancieret, og der dukker l\u00f8bende mange nye produkter op i verden af softwarekvalitetssikring (Quality Assurance, QA). Med s\u00e5 mange valg kan det v\u00e6re en udfordrende opgave at finde det rette v\u00e6rkt\u00f8j.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\"><img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/6cf6dfa92ebec7d6e44776e9c9bfbb6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Blandt alle eksisterende CI\/CD-v\u00e6rkt\u00f8jer er der to projekter, som helt sikkert er v\u00e6rd at se n\u00e6rmere p\u00e5 for dem, der s\u00f8ger noget inden for dette omr\u00e5de. Det drejer sig om Jenkins og GitLab CI\/CD-v\u00e6rkt\u00f8jet, som er en del af GitLab-platformen. Jenkins har mere end <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jenkinsci\/jenkins\">16000<\/a><\/noindex> stjerner p\u00e5 GitHub. GitLab-repositoriet p\u00e5 gitlab.com har f\u00e5et lidt over <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\">2000<\/a><\/noindex> stjerner. Hvis man sammenligner populariteten af repositoryerne, vil man finde ud af, at Jenkins har f\u00e5et 8 gange flere stjerner end platformen, som GitLab CI\/CD er en del af. Men ved valg af CI\/CD-v\u00e6rkt\u00f8j er dette langt fra den eneste indikator, man skal tage hensyn til. Der er mange andre, og det forklarer, hvorfor Jenkins og GitLab CI\/CD ofte ligger meget t\u00e6t p\u00e5 hinanden i mange sammenligninger.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLad os tage data fra platformen G2, som indsamler anmeldelser af forskellige produkter og de vurderinger, brugerne giver dem. Her er den gennemsnitlige vurdering <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/jenkins\/reviews\">Jenkins<\/a><\/noindex>, baseret p\u00e5 288 anmeldelser, 4,3 stjerner. Og her findes der 270 anmeldelser, som giver dette v\u00e6rkt\u00f8j en gennemsnitsvurdering p\u00e5 4,4 stjerner. Vi vil ikke tage fejl, hvis vi siger, at Jenkins og GitLab CI\/CD konkurrerer p\u00e5 lige vilk\u00e5r. Det er interessant at bem\u00e6rke, at Jenkins-projektet blev lanceret i 2011 og siden da har v\u00e6ret et yndlingsv\u00e6rkt\u00f8j for testere. Men samtidig har GitLab CI\/CD-projektet, som blev startet i 2014, taget en meget h\u00f8j position takket v\u00e6re de avancerede funktioner, som denne platform tilbyder. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/gitlab\/reviews\">GitLab<\/a><\/noindex> Her er der 270 anmeldelser, og den gennemsnitlige vurdering af dette v\u00e6rkt\u00f8j er 4,4 stjerner. Vi g\u00f8r ikke en fejl ved at sige, at Jenkins og GitLab CI\/CD konkurrerer p\u00e5 lige vilk\u00e5r. Det er interessant at bem\u00e6rke, at Jenkins-projektet blev introduceret i 2011, og siden da har det v\u00e6ret et foretrukket v\u00e6rkt\u00f8j blandt testere. P\u00e5 den anden side har GitLab CI\/CD, som blev lanceret i 2014, taget en meget h\u00f8j position takket v\u00e6re de avancerede funktioner, som platformen tilbyder.<\/p>\n<p>N\u00e5r man taler om Jenkins' popularitet sammenlignet med andre lignende platforme, m\u00e5 vi n\u00e6vne, at vi offentliggjorde en artikel, hvor vi sammenlignede platformene Travis CI og Jenkins, og gennemf\u00f8rte en unders\u00f8gelse. 85 brugere deltog i den. Respondenterne blev bedt om at v\u00e6lge det CI\/CD-v\u00e6rkt\u00f8j, de bedst kunne lide. 79% valgte Jenkins, 5% valgte Travis CI, og 16% indikerede, at de foretrak andre v\u00e6rkt\u00f8jer.<\/p>\n<p><img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/b66b5d3d5f27f3310c8bf0fc68f4c636.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Unders\u00f8gelsesresultater<\/i><\/p>\n<p>Blandt andre CI\/CD-v\u00e6rkt\u00f8jer blev GitLab CI\/CD oftest n\u00e6vnt.<\/p>\n<p>Hvis du seri\u00f8st besk\u00e6ftiger dig med DevOps, skal du n\u00f8je v\u00e6lge de relevante v\u00e6rkt\u00f8jer, idet du overvejer projektets karakteristika, budget og andre krav. For at hj\u00e6lpe dig med at tr\u00e6ffe den rigtige beslutning vil vi gennemf\u00f8re en analyse af Jenkins og GitLab CI\/CD. Dette vil forh\u00e5bentlig hj\u00e6lpe dig med at tr\u00e6ffe den rette beslutning.<\/p>\n<h2>Introduktion til Jenkins<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/f7df92d1fb3f81f785fc59da82a943b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/\">Jenkins<\/a><\/noindex> \u2013 er et velkendt, fleksibelt CI\/CD-v\u00e6rkt\u00f8j designet til at automatisere mange opgaver relateret til softwareprojekter. Jenkins er helt skrevet i Java og udgivet under MIT-licensen. Det har et kraftfuldt s\u00e6t funktioner rettet mod at automatisere opgaver relateret til bygning, test, implementering, integration og frigivelse af software. Dette v\u00e6rkt\u00f8j kan bruges p\u00e5 forskellige operativsystemer, herunder macOS, Windows og mange Linux-distributioner, s\u00e5som OpenSUSE, Ubuntu og Red Hat. Der findes installationspakker for Jenkins til forskellige OS, og v\u00e6rkt\u00f8jet kan installeres i Docker og p\u00e5 ethvert system, hvor der er JRE (Java Runtime Environment).<\/p>\n<p>Udviklerne af Jenkins har ogs\u00e5 skabt et andet projekt, Jenkins X, der er designet til at fungere i Kubernetes-milj\u00f8et. I Jenkins X er Helm, Jenkins CI\/CD-serveren, Kubernetes og andre v\u00e6rkt\u00f8jer integreret for at skabe CI\/CD-pipelines, der er i overensstemmelse med bedste praksis inden for DevOps. For eksempel anvendes GitOps her.<\/p>\n<p>Blandt fordelene ved Jenkins kan man ogs\u00e5 n\u00e6vne, at dets scripts er meget godt struktureret, forst\u00e5eligt og letl\u00e6seligt. Jenkins-teamet har skabt omkring 1000 plugins, der har til form\u00e5l at organisere samspillet mellem Jenkins og en r\u00e6kke forskellige teknologier. I scripts kan man anvende autentifikationssystemer, hvilket for eksempel g\u00f8r det muligt at oprette forbindelse til forskellige lukkede systemer.<\/p>\n<p>Under arbejdet med Jenkins-pipelinen kan man overv\u00e5ge, hvad der sker i hvert trin, og se om de forskellige faser af arbejdet er afsluttet med succes eller ej. Man kan overv\u00e5ge alt dette uden at bruge et grafisk interface, ved at udnytte terminalens muligheder.<\/p>\n<h2>Jenkins' funktioner<\/h2>\n<p>\nBlandt de velkendte funktioner ved Jenkins er nem ops\u00e6tning, h\u00f8j grad af automatisering af forskellige opgaver og fremragende dokumentation. N\u00e5r det kommer til at l\u00f8se DevOps-opgaver, betragtes Jenkins som et meget p\u00e5lideligt v\u00e6rkt\u00f8j, hvor man som regel ikke beh\u00f8ver at overv\u00e5ge hele projektbearbejdningsprocessen n\u00f8je. Dette er ikke tilf\u00e6ldet med andre CI\/CD-v\u00e6rkt\u00f8jer. Lad os tale om nogle af Jenkins' vigtigste funktioner.<\/p>\n<h3>\u258d1. Gratis, open source, underst\u00f8ttelse af mange platforme<\/h3>\n<p>\nJenkins kan k\u00f8re p\u00e5 macOS, Windows og Linux. Det kan ogs\u00e5 fungere i en Docker-milj\u00f8, hvilket giver mulighed for ensartet og hurtig udf\u00f8relse af automatiserede opgaver. Dette v\u00e6rkt\u00f8j kan desuden k\u00f8re som et servlet i containere, der underst\u00f8tter Java, s\u00e5som Apache Tomcat og GlassFish. Installationen af Jenkins er grundigt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/installing\/\">dokumenteret<\/a><\/noindex>.<\/p>\n<h3>\u258d2. Udviklet \u00f8kosystem af plugins<\/h3>\n<p>\nJenkins' plugin-\u00f8kosystem virker langt mere udviklet sammenlignet med \u00f8kosystemerne af tilsluttede moduler i andre CI\/CD-v\u00e6rkt\u00f8jer. I \u00f8jeblikket findes der mere end 1500 plugins til Jenkins. Disse plugins er designet til at l\u00f8se et bredt spektrum af opgaver og kan hj\u00e6lpe med at automatisere forskellige projekter. Rigdommen af gratis tilsluttede moduler betyder, at Jenkins-brugere ikke har et akut behov for at k\u00f8be dyre betalte plugins. Der er mulighed for <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lambdatest.com\/support\/docs\/jenkins-with-lambdatest\/\">integration<\/a><\/noindex> Jenkins sammen med mange DevOps-v\u00e6rkt\u00f8jer.<\/p>\n<h3>\u258d3. Nem installation og ops\u00e6tning<\/h3>\n<p>\nJenkins er ret enkel at installere og konfigurere. Desuden er opdateringsprocessen ogs\u00e5 meget bekvem. Her b\u00f8r man igen n\u00e6vne kvaliteten af dokumentationen, da man kan finde svar p\u00e5 mange forskellige sp\u00f8rgsm\u00e5l relateret til installation og ops\u00e6tning af Jenkins.<\/p>\n<h3>\u258d4. Venligt f\u00e6llesskab<\/h3>\n<p>\nSom allerede n\u00e6vnt er Jenkins et open source-projekt, hvis \u00f8kosystem omfatter et stort antal plugins. Der er opbygget et stort f\u00e6llesskab af brugere og udviklere omkring Jenkins, der hj\u00e6lper med at udvikle projektet. F\u00e6llesskabet er en af de faktorer, der bidrager til Jenkins' udvikling.<\/p>\n<h3>\u258d5. Tilstedev\u00e6relse af REST API<\/h3>\n<p>\nUnder arbejdet med Jenkins kan man udnytte REST API, hvilket udvider systemets muligheder. API'et til fjernadgang til systemet findes i tre varianter: XML, JSON med st\u00f8tte til JSONP, Python. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/using\/remote-access-api\/\">Her er<\/a><\/noindex> dokumentationsside, der afsl\u00f8rer detaljer om brugen af REST API Jenkins.<\/p>\n<h3>\u258d6. Underst\u00f8ttelse af parallel udf\u00f8relse af opgaver<\/h3>\n<p>\nJenkins underst\u00f8tter parallelisering af DevOps-opgaver. Det kan nemt integreres med de relevante v\u00e6rkt\u00f8jer og modtage beskeder om resultaterne af opgavens udf\u00f8relse. Udf\u00f8relsen af kode-test kan fremskyndes ved at organisere parallel bygning af projektet ved hj\u00e6lp af forskellige virtuelle maskiner.<\/p>\n<h3>\u258d7. Underst\u00f8ttelse af funktion i distribuerede milj\u00f8er<\/h3>\n<p>\nJenkins g\u00f8r det muligt at organisere distribuerede builds ved hj\u00e6lp af flere computere. Denne mulighed er relevant i store projekter og anvender et arbejds-skema, hvor der findes en hoved Jenkins-server og flere underordnede maskiner. Underordnede maskiner kan ogs\u00e5 bruges i situationer, hvor det er n\u00f8dvendigt at organisere testning af projektet i forskellige milj\u00f8er. Disse muligheder adskiller Jenkins fordelagtigt fra andre lignende projekter.<\/p>\n<h2>Introduktion til GitLab<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/aa89f462b8378c8efefef142ff0ca6be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/\">GitLab CI\/CD<\/a><\/noindex> kan betragtes som et af de nyeste og mest popul\u00e6re DevOps-v\u00e6rkt\u00f8jer. Dette gratis open source-v\u00e6rkt\u00f8j er integreret i GitLab versionskontrolsystemet. GitLab-platformen har en community-version, der underst\u00f8tter repository management, issue tracking, organisering af kodegennemgang, mekanismer fokuseret p\u00e5 at skabe dokumentation. Virksomheder kan installere GitLab lokalt og forbinde dette system med Active Directory og LDAP-servere for at organisere sikker autorisation og autentificering af brugere.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/3quCZ7ZMg0Y\">Her er<\/a><\/noindex> videoguide, der vil hj\u00e6lpe dig med at l\u00e6re om, hvordan man opretter CI\/CD-pipelines ved hj\u00e6lp af GitLab CI\/CD's funktioner.<\/p>\n<p>Oprindeligt blev GitLab CI\/CD udgivet som et selvst\u00e6ndigt projekt, men i 2015 blev dette v\u00e6rkt\u00f8jss\u00e6t integreret i GitLab 8.0. En separat GitLab CI\/CD-server kan underst\u00f8tte mere end 25.000 brugere. Baseret p\u00e5 s\u00e5danne servere kan der opbygges systemer med h\u00f8j tilg\u00e6ngelighed.<\/p>\n<p>GitLab CI\/CD og hovedprojektet GitLab er skrevet i Ruby og Go. De er udgivet under MIT-licensen. Udover de s\u00e6dvanlige funktioner i CI\/CD-v\u00e6rkt\u00f8jer underst\u00f8tter GitLab CI\/CD ogs\u00e5 yderligere muligheder relateret til for eksempel planl\u00e6gning af opgaver.<\/p>\n<p>Det er meget nemt at integrere GitLab CI\/CD i et projekt. N\u00e5r man bruger GitLab CI\/CD, opdeles behandlingen af projektkoden i faser, hvor hver fase kan best\u00e5 af flere opgaver, der udf\u00f8res i en bestemt r\u00e6kkef\u00f8lge. Opgaverne kan finjusteres.<\/p>\n<p>Opgaverne kan udf\u00f8res parallelt. Efter indstillingen af r\u00e6kkef\u00f8lgen af faser og opgaver er CI\/CD-pipeline klar til brug. Man kan f\u00f8lge udf\u00f8relsen ved at overv\u00e5ge opgavernes status. Derfor er det meget praktisk at bruge GitLab CI\/CD, m\u00e5ske endda mere praktisk end med andre lignende v\u00e6rkt\u00f8jer.<\/p>\n<h2>Funktioner ved GitLab CI\/CD og GitLab<\/h2>\n<p>\nGitLab CI\/CD er et af de mest popul\u00e6re DevOps-v\u00e6rkt\u00f8jer. Projektet har omfattende dokumentation, og dets funktioner er lette og praktiske at bruge. Hvis du endnu ikke er bekendt med GitLab CI\/CD, vil den f\u00f8lgende liste over dets funktioner give dig en generel id\u00e9 om, hvad du kan forvente. Det skal bem\u00e6rkes, at mange af disse funktioner relaterer sig til selve GitLab-platformen, hvor GitLab CI\/CD er integreret.<\/p>\n<h3>\u258d1. Popularitet<\/h3>\n<p>\nGitLab CI\/CD er et forholdsvis nyt v\u00e6rkt\u00f8j, der har fundet bred anvendelse. GitLab CI\/CD er gradvist blevet et ekstremt popul\u00e6rt CI\/CD-v\u00e6rkt\u00f8j, der bruges til automatiseret test og implementering af software. Det er nemt at konfigurere, og det er desuden et gratis CI\/CD-v\u00e6rkt\u00f8j, der er indbygget i GitLab-platformen.<\/p>\n<h3>\u258d2. Underst\u00f8ttelse af GitLab Pages og Jekyll<\/h3>\n<p>\nJekyll er en generator til statiske websites, som kan bruges inden for systemet GitLab Pages til at oprette sites baseret p\u00e5 GitLab-repositorier. Systemet tager de originale materialer og genererer p\u00e5 baggrund af dem et klart statisk site. Man kan styre udseendet og funktionerne p\u00e5 s\u00e5danne websites ved at redigere filen <code>_config.yml<\/code>, der bruges af Jekyll.<\/p>\n<h3>\u258d3. Projektplanl\u00e6gningsmuligheder<\/h3>\n<p>\nMed muligheden for at planl\u00e6gge projektfaser \u00f8ges bekvemmeligheden ved at spore problemer og deres grupper. Det g\u00f8r det muligt at styre arbejdsorganiseringen for projekter og planl\u00e6gge deres udf\u00f8relse til bestemte datoer.<\/p>\n<h3>\u258d4. Automatisk skalerings CI-runner<\/h3>\n<p>\nVed automatisk skalering af de runnere, der er ansvarlige for at udf\u00f8re specifikke opgaver, kan man betydeligt spare p\u00e5 omkostningerne til leje af serverkapacitet. Dette er s\u00e6rligt vigtigt, n\u00e5r det drejer sig om milj\u00f8er, hvor projekttest udf\u00f8res parallelt. Desuden er det vigtigt for store projekter, der best\u00e5r af flere repositories.<\/p>\n<h3>\u258d5. V\u00e6rkt\u00f8jer til problemtracking<\/h3>\n<p>\nDe kraftfulde muligheder for problemtracking i GitLab har f\u00f8rt til, at mange open source-projekter bruger denne platform. GitLab CI\/CD muligg\u00f8r parallelt test af forskellige kodegrene. Testresultaterne kan nemt analyseres i systemets interface. Dette skiller GitLab CI\/CD ud fra Jenkins.<\/p>\n<h3>\u258d6. Adgangsbegr\u00e6nsning til repositories<\/h3>\n<p>\nGitLab-platformen underst\u00f8tter adgangsbegr\u00e6nsning til repositories. For eksempel kan dem, der samarbejder om et projekt i et bestemt repository, tildeles rettigheder, der svarer til deres roller. Dette er s\u00e6rligt relevant i forbindelse med virksomheders projekter.<\/p>\n<h3>\u258d7. Aktiv st\u00f8tte fra f\u00e6llesskabet<\/h3>\n<p>\nDer er dannet et aktivt f\u00e6llesskab omkring GitLab, som fremmer udviklingen af denne platform og dens v\u00e6rkt\u00f8jer, herunder GitLab CI\/CD. Den dybe integration mellem GitLab CI\/CD og GitLab g\u00f8r det desuden lettere at finde svar p\u00e5 sp\u00f8rgsm\u00e5l, der opst\u00e5r under arbejdet med GitLab CI\/CD.<\/p>\n<h3>\u258d8. Underst\u00f8ttelse af forskellige versionskontrolsystemer<\/h3>\n<p>\nGitLab CI\/CD er et system, der kan arbejde ikke kun med koden, der er placeret i GitLab-repositories. For eksempel kan koden opbevares i et GitHub-repository, mens CI\/CD-pipelines kan organiseres p\u00e5 basis af GitLab ved hj\u00e6lp af GitLab CI\/CD.<\/p>\n<h2>Sammenligning af Jenkins og GitLab CI\/CD<\/h2>\n<p>\nJenkins og GitLab CI\/CD er begge fremragende v\u00e6rkt\u00f8jer, der hver is\u00e6r kan sikre en velfungerende CI\/CD-pipeline. Men ved at sammenligne dem vil man opdage, at de, selvom de ligner hinanden meget, ogs\u00e5 adskiller sig p\u00e5 nogle punkter.<\/p>\n<p><strong>Specifikation<\/strong><br \/>\n<strong>Jenkins<\/strong><br \/>\n<strong>GitLab CI\/CD<\/strong><\/p>\n<p>\u00c5ben eller lukket kode<br \/>\n\u00c5ben kildekode<br \/>\n\u00c5ben kildekode<\/p>\n<p>Installation<br \/>\nN\u00f8dvendigt.<br \/>\nDet er ikke n\u00f8dvendigt, da dette er en indbygget funktion i GitLab-platformen.<\/p>\n<p>Unikke funktioner<br \/>\nUnderst\u00f8ttelse af plugins.<br \/>\nDyb integration i versionsstyringssystemet.<\/p>\n<p>Support<br \/>\nManglende.<br \/>\nFindes.<\/p>\n<p>Installation og konfiguration<br \/>\nIngen vanskeligheder<br \/>\nIngen vanskeligheder<\/p>\n<p>Selvst\u00e6ndig deployment af systemet<br \/>\nDette er den eneste anvendelsesmulighed for systemet.<br \/>\nUnderst\u00f8ttes.<\/p>\n<p>Oprettelse af CI\/CD-pipelines<br \/>\nUnderst\u00f8ttes, anvender Jenkins Pipeline.<br \/>\nUnderst\u00f8ttes.<\/p>\n<p>Overv\u00e5gning af applikationsydelse<br \/>\nManglende.<br \/>\nFindes.<\/p>\n<p>\u00d8kosystem<br \/>\nDer findes over 1000 plugins.<br \/>\nSystemet udvikler sig inden for rammerne af GitLab.<\/p>\n<p>API<br \/>\nUnderst\u00f8tter et udviklet API-system.<br \/>\nTilbyder API til dybere integration i projekter.<\/p>\n<p>Underst\u00f8ttelse af JavaScript<br \/>\nFindes.<br \/>\nFindes.<\/p>\n<p>Integration med andre v\u00e6rkt\u00f8jer<br \/>\nDer er st\u00f8tte til integration med andre v\u00e6rkt\u00f8jer og platforme (Slack, GitHub).<br \/>\nEn r\u00e6kke v\u00e6rkt\u00f8jer til integration med tredjepartssystemer, blandt andet med GitHub og Kubernetes.<\/p>\n<p>Kvalitetskontrol af kode<br \/>\nUnderst\u00f8ttes ved hj\u00e6lp af SonarQube-plugin og andre plugins.<br \/>\nUnderst\u00f8ttes.<\/p>\n<p><\/p>\n<h2>Forskelle mellem Jenkins og GitLab CI\/CD<\/h2>\n<p>\nEfter at have beskrevet og sammenlignet Jenkins og GitLab CI\/CD, lad os fokusere p\u00e5 forskellene mellem disse DevOps-v\u00e6rkt\u00f8jer. At kende disse forskelle vil g\u00f8re det lettere at forst\u00e5 dem, der foretr\u00e6kker det ene v\u00e6rkt\u00f8j frem for det andet.<\/p>\n<ul>\n<li>GitLab CI\/CD kan fuldt ud kontrollere Git-repositorier. Dette handler om styring af brancher i repositorierne og nogle andre funktioner. Jenkins kan arbejde med repositorier, men det giver ikke samme grad af kontrol over dem som GitLab CI\/CD.<\/li>\n<li>Jenkins er et gratis open source-projekt. Den, der v\u00e6lger det, skal selv implementere det. GitLab CI\/CD er integreret i GitLab-platformen, det er en klar l\u00f8sning.<\/li>\n<li>GitLab CI\/CD underst\u00f8tter udviklede opgavestyringsv\u00e6rkt\u00f8jer, der arbejder p\u00e5 projektniveau. Denne del af Jenkins er mindre udviklet.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jenkins og GitLab CI\/CD: Styrker og svagheder<\/h2>\n<p>\nNu har du et indtryk af Jenkins og GitLab CI\/CD. For bedre at kende disse v\u00e6rkt\u00f8jer, lad os se p\u00e5 deres styrker og svagheder. Vi antager, at du allerede har besluttet, hvilket v\u00e6rkt\u00f8j du har brug for. Vi h\u00e5ber, at dette afsnit hj\u00e6lper dig med at evaluere dig selv.<\/p>\n<h3>\u258dStyrker ved Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Et stort antal plugins.<\/li>\n<li>Fuld kontrol over installationen af v\u00e6rkt\u00f8jet.<\/li>\n<li>Nem fejlfinding af runners.<\/li>\n<li>Nem ops\u00e6tning af nodes.<\/li>\n<li>Nem deployment af kode.<\/li>\n<li>Meget godt system til h\u00e5ndtering af brugeroplysninger.<\/li>\n<li>Fleksibilitet og alsidighed.<\/li>\n<li>Underst\u00f8ttelse af forskellige programmeringssprog.<\/li>\n<li>Systemet er intuitivt forst\u00e5eligt.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dJenkins' svagheder<\/h3>\n<p><\/p>\n<ul>\n<li>Der kan opst\u00e5 vanskeligheder ved brug af plugins.<\/li>\n<li>I sm\u00e5 projekter kan tidsomkostningerne til ops\u00e6tning af Jenkins v\u00e6re uforholdsm\u00e6ssigt h\u00f8je.<\/li>\n<li>Mangel p\u00e5 overordnede analytiske oplysninger om CI\/CD-k\u00e6der.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dGitLab CI\/CD's styrker<\/h3>\n<p><\/p>\n<ul>\n<li>God integration med Docker.<\/li>\n<li>Simpel skalering af runnere.<\/li>\n<li>Parallel udf\u00f8relse af opgaver i CI\/CD-pipelinen.<\/li>\n<li>Brug af en rettet acyklisk graf til at definere forholdet mellem opgaver.<\/li>\n<li>H\u00f8j skalerbarhed takket v\u00e6re muligheden for parallel udf\u00f8relse af runnere.<\/li>\n<li>Nem tilf\u00f8jelse af opgaver.<\/li>\n<li>Let l\u00f8sning af konflikter.<\/li>\n<li>P\u00e5lidelig sikkerhedssystem.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dGitLab CI\/CD's svagheder<\/h3>\n<p><\/p>\n<ul>\n<li>For hver opgave skal artefakter beskrives og uploades\/downloades.<\/li>\n<li>Det er ikke muligt at teste resultaterne af sammensmeltning af grene f\u00f8r deres faktiske sammensmeltning.<\/li>\n<li>N\u00e5r man beskriver stadier i CI\/CD-pipelinen, kan man endnu ikke adskille individuelle faser.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Resum\u00e9<\/h2>\n<p>\nB\u00e5de Jenkins og GitLab CI\/CD har styrker og svagheder. Svaret p\u00e5, hvad man skal v\u00e6lge, afh\u00e6nger af behovene og karakteristikaene ved det specifikke projekt. Hvert af de i dag betragtede CI\/CD-v\u00e6rkt\u00f8jer adskiller sig ved bestemte funktioner, selvom de er skabt til at l\u00f8se det samme problem. Jenkins er et fritst\u00e5ende v\u00e6rkt\u00f8j, mens GitLab CI\/CD er en del af en platform designet til samarbejde om kode.<\/p>\n<p>N\u00e5r man v\u00e6lger et CI\/CD-system, skal man ud over dets muligheder ogs\u00e5 tage h\u00f8jde for de omkostninger, der kan v\u00e6re forbundet med det, samt hvad DevOps-ingeni\u00f8rerne, der underst\u00f8tter projektet, er vant til at arbejde med.<\/p>\n<p>Hvilke CI\/CD-v\u00e6rkt\u00f8jer bruger du?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd#order\"><img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/cc25a9353b43773d11028a7a2caf96f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub\/news\/read\/123?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd\"><img decoding=\"async\" alt=\"Kampen mellem Jenkins og GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/efaafe7301c2f6a2fb00a22e7a0fa41a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD). \u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u041f\u041e (Development Operations, DevOps) \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0440\u043e\u0441\u0442\u0443 \u0441\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 CI\/CD-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442\u0441\u044f, \u0441\u0442\u0440\u0435\u043c\u044f\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043d\u043e\u0433\u0443 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043c\u0438\u0440\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kampen mellem Jenkins og GitLab CI\/CD | ProHoster","description":"I det seneste \u00e5rti er der gjort betydelige fremskridt inden for udviklingen af v\u00e6rkt\u00f8jer til kontinuerlig integration (Continuous Integration, CI) og kontinuerlig levering (Continuous Delivery, CD).","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster","og:description":"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-08T17:42:48+00:00","article:modified_time":"2020-10-08T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96161","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:00","updated":"2026-08-11 12:50:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/96161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=96161"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/96161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/96162"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=96161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=96161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=96161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}