Slach by Jenkins en GitLab CI / CD

Yn 'e lêste desennia binne wichtige foarútgong makke yn' e ûntwikkeling fan ark foar trochgeande yntegraasje (Continuous Integration, CI) en trochgeande ynset (Continuous Delivery, CD). De ûntwikkeling fan technologyen foar it yntegrearjen fan softwareûntwikkeling en operaasje (Development Operations, DevOps) hat laat ta in rappe tanimming fan fraach nei CI / CD-ark. Besteande oplossingen wurde hieltyd ferbettere, besykje te hâlden mei de tiden, har nije ferzjes wurde frijlitten, yn 'e wrâld fan software foar kwaliteitssoarch (Quality Assurance, QA), in protte nije produkten ferskine konstant. Mei sa'n rykdom oan kar is it kiezen fan it juste ark net in maklike taak.

Slach by Jenkins en GitLab CI / CD

Under alle besteande CI / CD-ark binne d'r twa projekten dy't perfoarst de muoite wurdich binne om omtinken te jaan oan ien dy't wat út dit gebiet siket. Wy prate oer Jenkins en it GitLab CI / CD-ark, dat diel útmakket fan it GitLab-platfoarm. Jenkins hat mear as 16000 stjerren op GitHub. It GitLab-repository op gitlab.com skoarde in bytsje mear 2000 stjerren. As wy de populariteit fan 'e repositories fergelykje, docht bliken dat Jenkins 8 kear mear stjerren skoarde dan it platfoarm, dat GitLab CI / CD omfettet. Mar as jo in CI / CD-ark kieze, is dit fier fan de ienige yndikator wêrop jo oandacht moatte jaan. D'r binne genôch oaren, en dit ferklearret wêrom't yn in protte fergelikingen Jenkins en GitLab CI / CD heul tichtby elkoar binne.

Nim bygelyks gegevens fan it G2-platfoarm, dat beoardielingen sammelt fan in breed ferskaat oan produkten en de wurdearrings dy't brûkers har jouwe. Hjir is de gemiddelde wurdearring Jenkins, basearre op 288 resinsjes, is 4,3 stjerren. Oh oh GitLab der binne 270 resinsjes, de gemiddelde wurdearring foar dit ark is 4,4 stjerren. Wy sille net fersinne wurde troch te sizzen dat Jenkins en GitLab CI / CD op gelikense betingsten mei elkoar konkurrearje. It is nijsgjirrich om te notearjen dat it Jenkins-projekt yn 2011 ferskynde en sûnt dy tiid is it in favoryt ark foar testers. Mar tagelyk hat it GitLab CI / CD-projekt, lansearre yn 2014, syn posysje ynnommen, heul heech, troch de avansearre funksjes oanbean troch dit platfoarm.

As wy prate oer de populariteit fan Jenkins yn ferliking mei oare ferlykbere platfoarms, konstatearje wy dat wy, nei't wy in artikel publisearre hawwe dy't de Travis CI- en Jenkins-platfoarms fergelykje, in enkête organisearre. 85 brûkers diene der oan mei. Respondinten waarden frege it CI/CD-ark te kiezen dat se it meast leuk fine. 79% keas Jenkins, 5% keas Travis CI, en 16% oanjûn dat se leaver oare ark.

Slach by Jenkins en GitLab CI / CD
Poll resultaten

Under oare CI / CD-ark waard GitLab CI / CD it meast neamd.

As jo ​​serieus binne oer DevOps, dan moatte jo de passende ark foarsichtich selektearje, rekken hâldend mei de spesifikaasjes fan it projekt, syn budzjet en oare easken. Om jo te helpen de juste kar te meitsjen, sille wy Jenkins en GitLab CI / CD besjen. Dit sil jo hooplik helpe om de juste kar te meitsjen.

Yntroduksje ta Jenkins

Slach by Jenkins en GitLab CI / CD
Jenkins is in bekend, fleksibele CI / CD ark ûntwurpen foar in automate in protte taken yn ferbân mei software projekten. Jenkins is folslein yn Java skreaun en frijjûn ûnder de MIT-lisinsje. It hat in krêftige set funksjes dy't rjochte binne op it automatisearjen fan de taken dy't ferbûn binne mei it bouwen, testen, ynsette, yntegrearje en frijjaan fan software. Dit ark kin brûkt wurde op ferskate bestjoeringssystemen. Dizze omfetsje macOS, Windows, en in protte Linux-distribúsjes lykas OpenSUSE, Ubuntu en Red Hat. D'r binne ynstallaasjepakketten foar Jenkins ûntworpen foar ferskate OS's, dit ark kin ynstalleare wurde op Docker en op elk systeem dat in JRE (Java Runtime Environment) hat.

De Jenkins-ûntwikkelders hawwe in oar projekt makke, Jenkins X, dat is ûntworpen om te wurkjen yn in Kubernetes-omjouwing. Jenkins X yntegreart Helm, Jenkins CI/CD Server, Kubernetes, en oare ark om CI/CD-pipelines te bouwen dy't DevOps best practices folgje. GitOps wurdt hjir bygelyks brûkt.

Men kin tafoegje oan 'e skatkiste fan' e foardielen fan Jenkins it feit dat har skripts heul goed struktureare, begryplik en maklik te lêzen binne. It Jenkins-team hat sawat 1000 plugins makke dy't rjochte binne op it organisearjen fan de ynteraksje fan Jenkins mei in breed ferskaat oan technologyen. Skripten kinne gebrûk meitsje fan autentikaasjesystemen, wêrtroch jo bygelyks kinne ferbine mei ferskate sletten systemen.

Tidens de eksploitaasje fan 'e Jenkins-pipeline kinne jo observearje wat der bart by elke stap, oft bepaalde stadia fan wurk mei súkses foltôge binne of net. Jo kinne dit alles besjen, lykwols, sûnder in bepaalde grafyske ynterface te brûken, mar mei de mooglikheden fan 'e terminal.

Funksjes fan Jenkins

Under de bekende funksjes fan Jenkins binne gemak fan opset, in heech nivo fan automatisearring fan ferskate operaasjes, en treflike dokumintaasje. As wy prate oer it oplossen fan DevOps-taken, dan wurdt Jenkins hjir beskôge as in heul betrouber ark, wêrby't, as regel, it gjin sin hat om it heule proses fan projektferwurking nau te kontrolearjen. Dit is net it gefal mei oare CI / CD-ark. Litte wy prate oer guon fan 'e wichtichste funksjes fan Jenkins.

▍1. Fergees, iepen boarne, multi-platfoarm stipe

Jenkins kin rinne op macOS, Windows en Linux platfoarms. It kin ek funksjonearje yn in Docker-omjouwing, wêrtroch jo unifoarme en rappe útfiering fan automatisearre taken kinne organisearje. Dit ark kin ek rinne as in servlet yn Java-ynskeakele konteners lykas Apache Tomcat en GlassFish. Ynstallaasje fan Jenkins kwalitatyf dokumintearre.

▍2. Ûntwikkele plugin ekosysteem

It Jenkins-plugin-ekosysteem liket folle folwoeksener te wêzen dan de plugin-ekosystemen fan oare CI / CD-ark. D'r binne op it stuit mear as 1500 plugins foar Jenkins. Dizze plugins binne rjochte op it oplossen fan in breed skala oan taken, mei har help kinne jo in ferskaat oan projekten automatisearje. De rykdom oan fergese plugins om út te kiezen betsjut dat as jo Jenkins brûke, jo gjin djoere betelle plugins hoege te keapjen. Der is in mooglikheid yntegraasje Jenkins mei in protte DevOps-ark.

▍3. Maklike ynstallaasje en opset

Jenkins is frij maklik te ynstallearjen en te konfigurearjen. Tagelyk is it proses fan it bywurkjen fan it systeem ek heul handich. Hjir, wer, is it wurdich te neamen de kwaliteit fan 'e dokumintaasje, om't dêryn jo antwurden kinne fine op in ferskaat oan fragen yn ferbân mei it ynstallearjen en konfigurearjen fan Jenkins.

▍4. Freonlike mienskip

Lykas al neamd, is Jenkins in iepen boarne projekt, wêrfan it ekosysteem in enoarm oantal plugins omfettet. In grutte mienskip fan brûkers en ûntwikkelders hat ûntwikkele om Jenkins te helpen ûntwikkeljen it projekt. De mienskip is ien fan 'e faktoaren dy't de ûntwikkeling fan Jenkins driuwt.

▍5. Beskikberens fan REST API

Wylst jo wurkje mei Jenkins, kinne jo de REST API brûke, dy't de mooglikheden fan it systeem útwreidet. API foar tagong op ôfstân ta it systeem wurdt presintearre yn trije ferzjes: XML, JSON mei JSONP-stipe, Python. hjir Dokumintaasjeside mei details oer wurkjen mei de Jenkins REST API.

▍6. Stipe foar parallelle útfiering fan taken

Jenkins stipet parallelisaasje fan DevOps-taken. It kin maklik wurde yntegrearre mei relevante ark en ûntfange notifikaasjes oer de resultaten fan taken. Koadetesten kinne wurde fersneld troch it organisearjen fan in parallelle bou fan it projekt mei ferskate firtuele masines.

▍7. Stipe foar wurk yn ferspraat omjouwings

Jenkins lit jo ferdielde builds organisearje mei meardere kompjûters. Dizze funksje is fan tapassing yn grutte projekten en brûkt in skema fan wurk, neffens dêr't der is ien master Jenkins tsjinner en ferskate slave masines. Slavemasines kinne ek brûkt wurde yn situaasjes wêr't it nedich is om testen fan in projekt yn ferskate omjouwings te organisearjen. Dizze funksjes ûnderskiede Jenkins fan oare ferlykbere projekten.

Yntroduksje ta GitLab

Slach by Jenkins en GitLab CI / CD
GitLab CI/CD kin ien fan 'e nijste en meast leafste DevOps-ark wurde neamd. Dit fergese iepen boarne-ark is ynboud yn it GitLab-ferzjekontrôlesysteem. It GitLab-platfoarm hat in mienskipferzje, it stipet repositorybehear, ark foar it folgjen fan problemen, organisaasje fan koadebeoardieling, dokumintaasje-rjochte meganismen. Bedriuwen kinne GitLab lokaal ynstallearje, it keppelje oan Active Directory en LDAP-tsjinners foar feilige brûkersautorisaasje en autentikaasje.

hjir In fideo-tutorial om jo te helpen learen hoe't jo CI / CD-pipelines kinne meitsje mei GitLab CI / CD-mooglikheden.

GitLab CI/CD waard oarspronklik útbrocht as in standalone projekt, mar yn 2015 waard dizze set ark yntegrearre yn GitLab 8.0. In inkele GitLab CI / CD-tsjinner kin mear dan 25000 brûkers stypje. Op grûn fan sokke servers kinne jo systemen oanmeitsje dy't heech beskikber binne.

GitLab CI / CD en it haad GitLab-projekt binne skreaun yn Ruby and Go. Se wurde frijjûn ûnder de MIT-lisinsje. GitLab CI / CD, neist de gewoane skaaimerken fan CI / CD-ark, stipet ek ekstra funksjes yn ferbân mei bygelyks wurkplanning.

GitLab CI / CD yntegrearje yn in projekt is heul maklik. By it brûken fan GitLab CI / CD, wurdt it proses fan projektkoade ferwurke yn stadia, elk fan dat kin bestean út ferskate taken útfierd yn in bepaalde folchoarder. Taken kinne fine-tuned.

Taken kinne parallel rinne. Nei it ynstellen fan de folchoarder fan stadia en taken, is de CI / CD-pipeline klear om te gean. Jo kinne de foarútgong kontrolearje troch de status fan taken te kontrolearjen. As resultaat is it brûken fan GitLab CI / CD heul handich, miskien handiger dan oare ferlykbere ark.

Funksjes fan GitLab CI / CD en GitLab

GitLab CI / CD is ien fan 'e populêrste DevOps-ark. It projekt wurdt ûnderskieden troch hege kwaliteit dokumintaasje, syn funksjes binne maklik en handich te brûken. As jo ​​​​noch net bekend binne mei GitLab CI / CD, sil de folgjende list mei funksjes fan dit ark jo in algemien idee jaan fan wat jo derfan kinne ferwachtsje. It moat opmurken wurde dat in protte fan dizze funksjes relatearre binne oan it GitLab-platfoarm sels, wêryn GitLab CI / CD is yntegreare.

▍1. Populariteit

GitLab CI / CD is in relatyf nij ark dat wiidferspraat gebrûk fûn hat. GitLab CI / CD is stadichoan in heul populêr CI / CD-ark wurden dat wurdt brûkt foar automatisearre testen en software-ynset. It is ienfâldich yn te stellen. It is ek in fergese CI / CD-ark ynboud yn it GitLab-platfoarm.

▍2. Stipe foar GitLab-siden en Jekyll

Jekyll is in statyske side-generator dy't kin wurde brûkt binnen it GitLab Pages-systeem om siden te meitsjen basearre op GitLab-repositories. It systeem nimt de boarne materialen en generearret in ready-made statyske side basearre op harren. Jo kinne it uterlik en funksjes fan sokke siden kontrolearje troch it bestân te bewurkjen _config.yml, brûkt troch Jekyll.

▍3. Project planning mooglikheden

Mei tank oan de mooglikheid om de stadia fan projekten te plannen, nimt it gemak fan it folgjen fan problemen en har groepen ta. Hjirmei kinne jo de organisaasje fan wurk oan projekten beheare, har útfiering planne op in spesifike datum.

▍4. Automatysk skaalfergrutting fan CI runners

Mei tank oan de automatyske skaalfergrutting fan runners ferantwurdlik foar it útfieren fan spesifike taken, kinne jo in protte besparje op 'e kosten fan it hieren fan serverkapasiteiten. Dit is heul wichtich, benammen as it giet om omjouwings wêr't projekten parallel wurde hifke. Dêrneist is dit wichtich foar grutte projekten besteande út ferskate repositories.

▍5. Utjefte tracking ark

GitLab's krêftige mooglikheden foar it folgjen fan problemen hawwe in protte iepen boarne-projekten laat om it platfoarm te brûken. GitLab CI / CD lit parallel testen fan ferskate koade tûken. Testresultaten wurde maklik analysearre yn 'e systeemynterface. Dit stelt GitLab CI / CD apart fan Jenkins.

▍6. Beheine tagong ta repositories

It GitLab-platfoarm stipet it beheinen fan tagong ta repositories. Bygelyks, dejingen dy't gearwurkje oan in projekt yn in repository kinne tagongsrjochten wurde tawiisd oan har rollen. Dit is benammen wier foar bedriuwsprojekten.

▍7. Aktive mienskip stipe

In aktive mienskip hat ûntwikkele om GitLab, dy't bydraacht oan de ûntwikkeling fan dit platfoarm en har ark, yn it bysûnder GitLab CI / CD. Djippe yntegraasje fan GitLab CI / CD en GitLab, ûnder oare, makket it maklik om antwurden te finen op fragen dy't ûntsteane by it wurkjen mei GitLab CI / CD.

▍8. Stipe foar ferskate ferzjekontrôlesystemen

GitLab CI / CD is in systeem dat kin wurkje mei mear dan allinich koade hosted yn GitLab repositories. Bygelyks, de koade kin wurde opslein yn in GitHub-repository, en de CI / CD-pipeline kin wurde organisearre op basis fan GitLab mei GitLab CI / CD.

Fergeliking fan Jenkins en GitLab CI / CD

Jenkins en GitLab CI / CD binne heul goede ark, dy't beide yn steat binne om de CI / CD-pipeline soepel te meitsjen. Mar as jo se fergelykje, docht bliken dat, hoewol se op in protte manieren fergelykber binne, se op guon manieren fan elkoar ferskille.

Eigenskippen
Jenkins
GitLab CI/CD

Iepen boarne of sletten boarne
iepen Boarne
iepen Boarne

ynstelling
Required.
Net fereaske, om't dit in ynboude funksje is fan it GitLab-platfoarm.

Unike eigenskippen
Plugin stipe.
Djippe yntegraasje yn ferzje kontrôle systeem.

stipe
Mist.
Beskikber.

Ynstallaasje en konfiguraasje
Swierrichheden net feroarsaakje
Swierrichheden net feroarsaakje

Self-ynset fan it systeem
Dit is de ienige manier om it systeem te brûken.
Stipe.

It meitsjen fan CI / CD pipelines
Stipe, mei Jenkins Pipeline.
Stipe.

Applikaasje prestaasjes monitoring
Mist.
Beskikber.

Ekosysteem
D'r binne mear as 1000 plugins.
It systeem wurdt ûntwikkele binnen GitLab.

API
Unterstützt in avansearre API-systeem.
Biedt in API foar djipper yntegraasje yn projekten.

JavaScript stipe
Beskikber.
Beskikber.

Yntegraasje mei oare ark
Yntegraasje mei oare ark en platfoarms wurdt stipe (Slack, GitHub).
In protte ark foar yntegraasje mei systemen fan tredden, benammen - mei GitHub en Kubernetes.

Koade kwaliteit kontrôle
Stipe - mei de SonarQube-plugin en oare plugins.
Stipe.

Ferskillen tusken Jenkins en GitLab CI / CD

Neidat Jenkins en GitLab CI/CD beskreaun en fergelike binne, litte wy ús rjochtsje op de ferskillen tusken dizze DevOps-ark. Troch dizze ferskillen te kennen sil jo dejingen helpe te begripen dy't ien fan dizze ark leaver hawwe boppe de oare.

  • GitLab CI / CD kin Git repositories folslein kontrolearje. Wy prate oer it behearen fan repository-tûken en wat oare funksjes. Mar Jenkins, hoewol it kin wurkje mei repositories, jout net itselde nivo fan kontrôle oer har as GitLab CI / CD.
  • Jenkins is in fergees iepen boarne projekt. Dejinge dy't it kiest set it selsstannich yn. En GitLab CI / CD is opnommen yn it GitLab-platfoarm, dit is in turnkey-oplossing.
  • GitLab CI / CD stipet avansearre ark foar taakbehear dy't wurkje op projektnivo. Dizze kant fan Jenkins is minder ûntwikkele.

Jenkins en GitLab CI / CD: sterke en swakke punten

No hawwe jo wat idee oer Jenkins en GitLab CI / CD. No, om jo noch better yn 'e kunde te krijen mei dizze ark, litte wy har sterke en swakke punten besjen. Wy geane der fan út dat jo al besletten hawwe hokker ark jo nedich hawwe. Hooplik sil dizze seksje jo josels kinne testen.

▍ Sterkte fan Jenkins

  • In grut oantal plugins.
  • Folsleine kontrôle oer ark ynstallaasje.
  • Ienfâldige debuggen fan runners.
  • Maklike knooppunt opset.
  • Maklike koade ynset.
  • Hiel goed credential behear systeem.
  • Fleksibiliteit en veelzijdigheid.
  • Stipe foar ferskate programmeartalen.
  • It systeem is begryplik op in yntuïtyf nivo.

▍Swakke punten fan Jenkins

  • Plugins kinne lestich wêze om te brûken.
  • By it brûken fan Jenkins yn lytse projekten, kin de tiid nedich om it sels te konfigurearjen ûnferstannich grut wêze.
  • Gebrek oan algemiene analytyske ynformaasje oer CI / CD keatlingen.

▍ Sterkte fan GitLab CI / CD

  • Goede yntegraasje mei Docker.
  • Ienfâldige skaalfergrutting fan runners.
  • Parallelle útfiering fan taken dy't diel útmeitsje fan 'e stadia fan' e CI / CD-pipeline.
  • Gebrûk fan it rjochte acyclyske grafykmodel by it opsetten fan taakrelaasjes.
  • Heech nivo fan skalberens troch de mooglikheid fan parallelle útfiering fan runners.
  • Gemak fan it tafoegjen fan taken.
  • Ienfâldige konflikt oplossing.
  • Betrouber feiligens systeem.

▍Swakke punten fan GitLab CI/CD

  • Foar elke taak moatte jo artefakten beskriuwe en uploade / downloade.
  • Jo kinne de resultaten fan it fusearjen fan tûken net testen foardat se werklik wurde gearfoege.
  • By it beskriuwen fan 'e stadia fan' e CI / CD-pipeline is it noch net mooglik om yndividuele stadia dêryn te ûnderskieden.

Resultaten

Sawol Jenkins as GitLab CI / CD hawwe sterke en swakke punten. It antwurd op de fraach fan wat te kiezen hinget ôf fan de behoeften en skaaimerken fan in bepaald projekt. Elk fan 'e hjoed besjoen CI / CD-ark hat bepaalde funksjes, hoewol dizze ark binne makke om itselde probleem op te lossen. Tagelyk is Jenkins in standalone ark, en GitLab CI / CD is diel fan in platfoarm ûntworpen foar gearwurkjen oan koade.

By it kiezen fan in CI / CD-systeem is it, neist syn mooglikheden, it wurdich om rekken te hâlden mei de kosten dy't dermei kinne wurde ferbûn, en wat krekt DevOps-yngenieurs dy't it projekt stypje, binne wend om te wurkjen.

Hokker CI/CD-ark brûke jo?

Slach by Jenkins en GitLab CI / CD

Slach by Jenkins en GitLab CI / CD

Boarne: www.habr.com

Add a comment