Labanan ng Jenkins at GitLab CI/CD

Sa huling dekada, makabuluhang pag-unlad ang nagawa sa pagbuo ng mga tool para sa tuluy-tuloy na pagsasama (Continuous Integration, CI) at patuloy na pag-deploy (Continuous Delivery, CD). Ang pagbuo ng mga teknolohiya para sa pagsasama ng software development at pagpapatakbo (Development Operations, DevOps) ay humantong sa isang mabilis na pagtaas ng demand para sa CI / CD tools. Ang mga kasalukuyang solusyon ay patuloy na pinagbubuti, sinusubukang makasabay sa panahon, ang kanilang mga bagong bersyon ay inilabas, sa mundo ng kalidad ng software ng kasiguruhan (Quality Assurance, QA), maraming mga bagong produkto ang patuloy na lumalabas. Sa napakaraming pagpipilian, ang pagpili ng tamang tool ay hindi isang madaling gawain.

Labanan ng Jenkins at GitLab CI/CD

Sa lahat ng umiiral na mga tool sa CI / CD, mayroong dalawang proyekto na talagang nagkakahalaga ng pagbibigay pansin sa isang taong naghahanap ng isang bagay mula sa lugar na ito. Pinag-uusapan natin ang tungkol kay Jenkins at ang tool na GitLab CI / CD, na bahagi ng platform ng GitLab. Si Jenkins ay may higit sa 16000 mga bituin sa GitHub. Ang GitLab repository sa gitlab.com ay nakakuha ng kaunti pa 2000 mga bituin. Kung ihahambing natin ang katanyagan ng mga repositoryo, lumalabas na nakakuha si Jenkins ng 8 beses na mas maraming bituin kaysa sa platform, na kinabibilangan ng GitLab CI / CD. Ngunit kapag pumipili ng isang tool na CI / CD, ito ay malayo sa tanging tagapagpahiwatig na dapat mong bigyang pansin. Marami pang iba, at ipinapaliwanag nito kung bakit sa maraming paghahambing, ang Jenkins at GitLab CI / CD ay napakalapit sa isa't isa.

Kunin, halimbawa, ang data mula sa platform ng G2, na nag-iipon ng mga review ng iba't ibang uri ng mga produkto at ang mga rating na ibinibigay sa kanila ng mga user. Narito ang average na rating Jenkins, batay sa 288 review, ay 4,3 star. Oh oh GitLab mayroong 270 mga review, ang average na rating para sa tool na ito ay 4,4 bituin. Hindi kami magkakamali sa pagsasabing ang Jenkins at GitLab CI / CD ay nakikipagkumpitensya sa isa't isa sa pantay na termino. Kagiliw-giliw na tandaan na ang proyekto ng Jenkins ay lumitaw noong 2011 at mula noon ito ay naging isang paboritong tool para sa mga tester. Ngunit sa parehong oras, ang proyekto ng GitLab CI / CD, na inilunsad noong 2014, ay nakakuha ng posisyon nito, napakataas, salamat sa mga advanced na tampok na inaalok ng platform na ito.

Kung pinag-uusapan natin ang kasikatan ng Jenkins kumpara sa iba pang katulad na mga platform, napapansin namin na kami, na nag-publish ng isang artikulo na naghahambing sa mga platform ng Travis CI at Jenkins, ay nag-ayos ng isang survey. 85 mga gumagamit ang lumahok dito. Hiniling sa mga respondent na piliin ang tool na CI/CD na pinakagusto nila. 79% ang pumili kay Jenkins, 5% ang pumili ng Travis CI, at 16% ang nagpahiwatig na mas gusto nila ang iba pang mga tool.

Labanan ng Jenkins at GitLab CI/CD
Mga resulta ng botohan

Sa iba pang mga tool ng CI/CD, ang GitLab CI/CD ay madalas na binanggit.

Kung seryoso ka sa DevOps, kailangan mong maingat na piliin ang naaangkop na mga tool, isinasaalang-alang ang mga detalye ng proyekto, badyet nito, at iba pang mga kinakailangan. Upang matulungan kang gumawa ng tamang pagpili, susuriin namin ang Jenkins at GitLab CI/CD. Sana ay makakatulong ito sa iyong gumawa ng tamang pagpili.

Panimula kay Jenkins

Labanan ng Jenkins at GitLab CI/CD
Jenkins ay isang kilalang, flexible CI/CD tool na idinisenyo upang i-automate ang maraming gawain na nauugnay sa mga proyekto ng software. Ang Jenkins ay ganap na nakasulat sa Java at inilabas sa ilalim ng lisensya ng MIT. Mayroon itong malakas na hanay ng mga feature na naglalayong i-automate ang mga gawaing nauugnay sa pagbuo, pagsubok, pag-deploy, pagsasama, at pagpapalabas ng software. Ang tool na ito ay maaaring gamitin sa iba't ibang mga operating system. Kabilang dito ang macOS, Windows, at maraming distribusyon ng Linux tulad ng OpenSUSE, Ubuntu, at Red Hat. Mayroong mga pakete ng pag-install para sa Jenkins na idinisenyo para sa iba't ibang mga OS, maaaring mai-install ang tool na ito sa Docker at sa anumang system na mayroong JRE (Java Runtime Environment).

Ang mga developer ng Jenkins ay lumikha ng isa pang proyekto, ang Jenkins X, na idinisenyo upang gumana sa isang kapaligiran ng Kubernetes. Isinasama ng Jenkins X ang Helm, ang Jenkins CI/CD server, Kubernetes, at iba pang mga tool upang bumuo ng mga pipeline ng CI/CD na sumusunod sa pinakamahuhusay na kagawian ng DevOps. Halimbawa, ang GitOps ay ginagamit dito.

Maaaring idagdag ng isa sa treasury ng mga pakinabang ng Jenkins ang katotohanan na ang mga script nito ay napakahusay na nakabalangkas, naiintindihan, at madaling basahin. Ang koponan ng Jenkins ay lumikha ng humigit-kumulang 1000 mga plugin na naglalayong ayusin ang pakikipag-ugnayan ng Jenkins sa iba't ibang uri ng mga teknolohiya. Ang mga script ay maaaring gumamit ng mga sistema ng pagpapatunay, na, halimbawa, ay nagbibigay-daan sa iyo upang kumonekta sa iba't ibang mga saradong sistema.

Sa panahon ng pagpapatakbo ng pipeline ng Jenkins, maaari mong obserbahan kung ano ang nangyayari sa bawat hakbang, kung ang ilang mga yugto ng trabaho ay matagumpay na natapos o hindi. Maaari mong panoorin ang lahat ng ito, gayunpaman, nang hindi gumagamit ng isang tiyak na graphical na interface, ngunit gamit ang mga kakayahan ng terminal.

Mga Tampok ng Jenkins

Kabilang sa mga kilalang feature ng Jenkins ay ang kadalian ng pag-setup, mataas na antas ng automation ng iba't ibang operasyon, at mahusay na dokumentasyon. Kung pinag-uusapan natin ang paglutas ng mga gawain ng DevOps, kung gayon narito ang Jenkins ay itinuturing na isang napaka-maaasahang tool, gamit kung saan, bilang isang panuntunan, walang saysay na malapit na subaybayan ang buong proseso ng pagproseso ng proyekto. Hindi ito ang kaso sa iba pang mga tool sa CI/CD. Pag-usapan natin ang ilan sa mga pinakamahalagang feature ng Jenkins.

▍1. Libre, open source, multi-platform na suporta

Maaaring tumakbo ang Jenkins sa mga platform ng macOS, Windows at Linux. Maaari din itong gumana sa isang kapaligiran ng Docker, na nagbibigay-daan sa iyong ayusin ang pare-pareho at mabilis na pagpapatupad ng mga automated na gawain. Maaari ding tumakbo ang tool na ito bilang isang servlet sa mga container na pinagana ng Java gaya ng Apache Tomcat at GlassFish. Pag-install ng Jenkins nang may husay dokumentado.

▍2. Binuo ang ecosystem ng plugin

Ang ecosystem ng plugin ng Jenkins ay mukhang mas mature kaysa sa mga ecosystem ng plugin ng iba pang mga tool sa CI/CD. Mayroong kasalukuyang higit sa 1500 mga plugin para sa Jenkins. Ang mga plugin na ito ay naglalayong lutasin ang isang malawak na hanay ng mga gawain, sa kanilang tulong maaari mong i-automate ang iba't ibang mga proyekto. Ang kayamanan ng mga libreng plugin na mapagpipilian ay nangangahulugan na kung gumagamit ka ng Jenkins, hindi mo na kailangang bumili ng mga mamahaling bayad na plugin. May posibilidad pagsasama Jenkins na may maraming tool sa DevOps.

▍3. Madaling pag-install at pag-setup

Ang Jenkins ay medyo madaling i-install at i-configure. Kasabay nito, ang proseso ng pag-update ng system ay napaka-maginhawa. Dito, muli, sulit na banggitin ang kalidad ng dokumentasyon, dahil dito makakahanap ka ng mga sagot sa iba't ibang mga katanungan na may kaugnayan sa pag-install at pag-configure ng Jenkins.

▍4. Friendly na komunidad

Tulad ng nabanggit na, ang Jenkins ay isang open source na proyekto, ang ecosystem kung saan kasama ang isang malaking bilang ng mga plugin. Isang malaking komunidad ng mga user at developer ang bumuo sa paligid ng Jenkins upang tumulong sa pagbuo ng proyekto. Ang komunidad ay isa sa mga salik na nagtutulak sa pag-unlad ng Jenkins.

▍5. Availability ng REST API

Habang nagtatrabaho kasama si Jenkins, maaari mong gamitin ang REST API, na nagpapalawak ng mga kakayahan ng system. Ang API para sa malayuang pag-access sa system ay ipinakita sa tatlong bersyon: XML, JSON na may suporta sa JSONP, Python. Dito Ang pahina ng dokumentasyon na sumasaklaw sa mga detalye sa pagtatrabaho sa Jenkins REST API.

▍6. Suporta para sa parallel na pagpapatupad ng mga gawain

Sinusuportahan ng Jenkins ang parallelization ng mga gawain sa DevOps. Madali itong maisama sa mga nauugnay na tool at makatanggap ng mga abiso tungkol sa mga resulta ng mga gawain. Maaaring mapabilis ang pagsubok ng code sa pamamagitan ng pag-aayos ng parallel build ng proyekto gamit ang iba't ibang virtual machine.

▍7. Suporta para sa trabaho sa mga distributed na kapaligiran

Binibigyang-daan ka ni Jenkins na ayusin ang mga distributed build gamit ang maraming computer. Naaangkop ang feature na ito sa malalaking proyekto at gumagamit ng scheme ng trabaho, ayon sa kung saan mayroong isang master Jenkins server at ilang slave machine. Ang mga makina ng alipin ay maaari ding gamitin sa mga sitwasyon kung saan kinakailangan upang ayusin ang pagsubok ng isang proyekto sa iba't ibang mga kapaligiran. Ang mga tampok na ito ay nagtatakda ng Jenkins bukod sa iba pang katulad na mga proyekto.

Panimula sa GitLab

Labanan ng Jenkins at GitLab CI/CD
GitLab CI/CD ay maaaring tawaging isa sa pinakabago at pinakamamahal na tool sa DevOps. Ang libreng open source na tool na ito ay binuo sa GitLab version control system. Ang platform ng GitLab ay may bersyon ng komunidad, sinusuportahan nito ang pamamahala ng repositoryo, mga tool sa pagsubaybay sa isyu, organisasyon ng pagsusuri ng code, mga mekanismong nakatuon sa dokumentasyon. Maaaring i-install ng mga kumpanya ang GitLab nang lokal, i-link ito sa Active Directory at LDAP server para sa secure na awtorisasyon at pagpapatunay ng user.

Dito Isang video tutorial upang matulungan kang matutunan kung paano gumawa ng mga pipeline ng CI/CD gamit ang mga kakayahan ng GitLab CI/CD.

Ang GitLab CI/CD ay orihinal na inilabas bilang isang standalone na proyekto, ngunit noong 2015 ang hanay ng mga tool na ito ay isinama sa GitLab 8.0. Ang nag-iisang GitLab CI/CD server ay kayang suportahan ang mahigit 25000 user. Batay sa mga naturang server, maaari kang lumikha ng mga system na lubos na magagamit.

Ang GitLab CI/CD at ang pangunahing proyekto ng GitLab ay nakasulat sa Ruby at Go. Ang mga ito ay inilabas sa ilalim ng lisensya ng MIT. Ang GitLab CI/CD, bilang karagdagan sa mga karaniwang feature ng CI/CD tool, ay sumusuporta din sa mga karagdagang feature na nauugnay, halimbawa, sa pag-iiskedyul ng trabaho.

Ang pagsasama ng GitLab CI/CD sa isang proyekto ay napakadali. Kapag gumagamit ng GitLab CI/CD, ang proseso ng pagpoproseso ng code ng proyekto ay nahahati sa mga yugto, ang bawat isa ay maaaring binubuo ng ilang mga gawain na isinagawa sa isang tiyak na pagkakasunud-sunod. Maaaring maayos ang mga gawain.

Ang mga gawain ay maaaring tumakbo nang magkatulad. Pagkatapos i-set up ang pagkakasunud-sunod ng mga yugto at mga gawain, handa na ang pipeline ng CI/CD. Maaari mong subaybayan ang pag-unlad nito sa pamamagitan ng pagsubaybay sa katayuan ng mga gawain. Bilang resulta, ang paggamit ng GitLab CI / CD ay napaka-maginhawa, marahil ay mas maginhawa kaysa sa iba pang katulad na mga tool.

Mga tampok ng GitLab CI/CD at GitLab

Ang GitLab CI/CD ay isa sa pinakasikat na tool sa DevOps. Ang proyekto ay nakikilala sa pamamagitan ng mataas na kalidad na dokumentasyon, ang mga tampok nito ay madali at maginhawang gamitin. Kung hindi ka pa pamilyar sa GitLab CI/CD, ang sumusunod na listahan ng mga feature ng tool na ito ay magbibigay sa iyo ng pangkalahatang ideya kung ano ang maaari mong asahan mula dito. Dapat tandaan na marami sa mga feature na ito ay nauugnay sa GitLab platform mismo, kung saan isinama ang GitLab CI / CD.

▍1. Katanyagan

Ang GitLab CI/CD ay isang medyo bagong tool na nakahanap ng malawakang paggamit. Ang GitLab CI/CD ay dahan-dahang naging napakapopular na tool ng CI/CD na ginagamit para sa awtomatikong pagsubok at pag-deploy ng software. Ito ay simpleng i-set up. Isa rin itong libreng CI/CD tool na binuo sa GitLab platform.

▍2. Suporta para sa Mga Pahina ng GitLab at Jekyll

Ang Jekyll ay isang static na site generator na maaaring magamit sa loob ng GitLab Pages system upang lumikha ng mga site batay sa mga repositoryo ng GitLab. Kinukuha ng system ang mga mapagkukunang materyales at bumubuo ng isang handa na static na site batay sa mga ito. Maaari mong kontrolin ang hitsura at mga tampok ng naturang mga site sa pamamagitan ng pag-edit ng file _config.yml, ginamit ni Jekyll.

▍3. Mga kakayahan sa pagpaplano ng proyekto

Salamat sa kakayahang magplano ng mga yugto ng mga proyekto, ang kaginhawahan ng mga problema sa pagsubaybay at ang kanilang mga grupo ay tumataas. Pinapayagan ka nitong pamahalaan ang samahan ng trabaho sa mga proyekto, planuhin ang kanilang pagpapatupad sa isang tiyak na petsa.

▍4. Awtomatikong pag-scale ng mga CI runner

Salamat sa awtomatikong pag-scale ng mga runner na responsable para sa pagsasagawa ng mga partikular na gawain, makakatipid ka ng malaki sa halaga ng pagrenta ng mga kapasidad ng server. Napakahalaga nito, lalo na pagdating sa mga kapaligiran kung saan ang mga proyekto ay sinusuri nang magkatulad. Bilang karagdagan, ito ay mahalaga para sa malalaking proyekto na binubuo ng ilang mga repositoryo.

▍5. Mga tool sa pagsubaybay sa isyu

Ang malakas na kakayahan sa pagsubaybay sa isyu ng GitLab ay humantong sa maraming open source na proyekto upang gamitin ang platform. Pinapayagan ng GitLab CI/CD ang parallel testing ng iba't ibang sangay ng code. Maginhawang sinusuri ang mga resulta ng pagsubok sa interface ng system. Itinatakda nito ang GitLab CI/CD bukod sa Jenkins.

▍6. Paghihigpit sa pag-access sa mga repositoryo

Sinusuportahan ng GitLab platform ang paghihigpit sa pag-access sa mga repositoryo. Halimbawa, ang mga nakikipagtulungan sa isang proyekto sa isang repository ay maaaring mabigyan ng mga pahintulot na naaangkop sa kanilang mga tungkulin. Ito ay totoo lalo na para sa mga proyekto ng korporasyon.

▍7. Aktibong suporta sa komunidad

Isang aktibong komunidad ang nabuo sa paligid ng GitLab, na nag-aambag sa pagbuo ng platform na ito at ng mga tool nito, lalo na, ang GitLab CI / CD. Ang malalim na pagsasama ng GitLab CI/CD at GitLab, bukod sa iba pang mga bagay, ay nagpapadali sa paghahanap ng mga sagot sa mga tanong na lumalabas kapag nagtatrabaho sa GitLab CI/CD.

▍8. Suporta para sa iba't ibang bersyon ng control system

Ang GitLab CI/CD ay isang system na maaaring gumana nang higit pa sa code na naka-host sa mga repositoryo ng GitLab. Halimbawa, ang code ay maaaring iimbak sa isang GitHub repository, at ang CI / CD pipeline ay maaaring ayusin batay sa GitLab gamit ang GitLab CI / CD.

Paghahambing ng Jenkins at GitLab CI/CD

Ang Jenkins at GitLab CI/CD ay napakahusay na tool, na parehong may kakayahang gawing maayos ang pipeline ng CI/CD. Ngunit kung ihahambing natin ang mga ito, lumalabas na, kahit na magkapareho sila sa maraming paraan, naiiba sila sa bawat isa sa ilang mga paraan.

Paglalarawan
Jenkins
GitLab CI/CD

Open source o closed source
Bukas na mapagkukunan
Bukas na mapagkukunan

Instalasyon
Kailangan.
Hindi kinakailangan dahil isa itong built-in na feature ng GitLab platform.

Mga natatanging tampok
Suporta sa plugin.
Malalim na pagsasama sa version control system.

Suporta
Ay nawawala.
Available.

Pag-install at pagsasaayos
Ang mga paghihirap ay hindi sanhi
Ang mga paghihirap ay hindi sanhi

Self-deployment ng system
Ito ang tanging paraan upang magamit ang system.
Sinusuportahan.

Paglikha ng mga pipeline ng CI/CD
Sinusuportahan, gamit ang Jenkins Pipeline.
Sinusuportahan.

Pagsubaybay sa pagganap ng aplikasyon
Ay nawawala.
Available.

Ecosystem
Mayroong higit sa 1000 mga plugin.
Ang sistema ay binuo sa loob ng GitLab.

API
Sinusuportahan ang isang advanced na sistema ng API.
Nag-aalok ng API para sa mas malalim na pagsasama sa mga proyekto.

Suporta sa JavaScript
Available.
Available.

Pagsasama sa iba pang mga tool
Ang pagsasama sa iba pang mga tool at platform ay suportado (Slack, GitHub).
Maraming mga tool para sa pagsasama sa mga third-party na system, sa partikular - sa GitHub at Kubernetes.

Kontrol sa kalidad ng code
Sinusuportahan - gamit ang SonarQube plugin at iba pang mga plugin.
Sinusuportahan.

Mga pagkakaiba sa pagitan ng Jenkins at GitLab CI/CD

Nang mailarawan at maihambing ang Jenkins at GitLab CI/CD, tumuon tayo sa mga pagkakaiba sa pagitan ng mga tool na ito ng DevOps. Ang pag-alam sa mga pagkakaibang ito ay makakatulong sa iyong maunawaan ang mga mas gusto ang isa sa mga tool na ito kaysa sa isa.

  • Maaaring ganap na makontrol ng GitLab CI/CD ang mga repositoryo ng Git. Pinag-uusapan natin ang tungkol sa pamamahala ng mga sangay ng imbakan at ilang iba pang mga tampok. Ngunit ang Jenkins, kahit na maaari itong gumana sa mga repositoryo, ay hindi nagbibigay ng parehong antas ng kontrol sa kanila bilang GitLab CI / CD.
  • Ang Jenkins ay isang libreng open source na proyekto. Ang pumili nito ay nagde-deploy nito nang nakapag-iisa. At ang GitLab CI / CD ay kasama sa GitLab platform, ito ay isang turnkey solution.
  • Sinusuportahan ng GitLab CI/CD ang mga advanced na tool sa pamamahala ng gawain na gumagana sa antas ng proyekto. Ang bahaging ito ng Jenkins ay hindi gaanong binuo.

Jenkins at GitLab CI/CD: mga kalakasan at kahinaan

Ngayon ay mayroon ka nang ideya tungkol sa Jenkins at GitLab CI/CD. Ngayon, para mas maging pamilyar ka sa mga tool na ito, tingnan natin ang kanilang mga kalakasan at kahinaan. Ipinapalagay namin na napagpasyahan mo na kung aling tool ang kailangan mo. Sana, payagan ka ng seksyong ito na subukan ang iyong sarili.

▍Mga Lakas ng Jenkins

  • Ang isang malaking bilang ng mga plugin.
  • Buong kontrol sa pag-install ng tool.
  • Simpleng pag-debug ng mga runner.
  • Madaling pag-setup ng node.
  • Madaling pag-deploy ng code.
  • Napakahusay na sistema ng pamamahala ng kredensyal.
  • Flexibility at versatility.
  • Suporta para sa iba't ibang mga programming language.
  • Ang sistema ay naiintindihan sa isang intuitive na antas.

▍ Mga kahinaan ng Jenkins

  • Maaaring mahirap gamitin ang mga plugin.
  • Kapag gumagamit ng Jenkins sa maliliit na proyekto, ang oras na kinakailangan upang i-configure ito mismo ay maaaring hindi makatwirang malaki.
  • Kakulangan ng pangkalahatang analytical na impormasyon sa CI/CD chain.

▍Mga Lakas ng GitLab CI/CD

  • Magandang pagsasama sa Docker.
  • Simpleng scaling ng mga runner.
  • Parallel na pagpapatupad ng mga gawain na bahagi ng mga yugto ng pipeline ng CI/CD.
  • Gamit ang nakadirekta na modelo ng acyclic graph kapag nagse-set up ng mga relasyon sa gawain.
  • Mataas na antas ng scalability dahil sa posibilidad ng parallel execution ng mga runner.
  • Dali ng pagdaragdag ng mga gawain.
  • Simpleng paglutas ng salungatan.
  • Maaasahang sistema ng seguridad.

▍Mga kahinaan ng GitLab CI/CD

  • Para sa bawat gawain, kailangan mong ilarawan at i-upload / i-download ang mga artifact.
  • Hindi mo maaaring subukan ang mga resulta ng pagsasama-sama ng mga sangay bago sila aktwal na pinagsama.
  • Kapag inilalarawan ang mga yugto ng pipeline ng CI / CD, hindi pa posible na iisa ang mga indibidwal na yugto sa kanila.

Mga resulta ng

Parehong may mga kalakasan at kahinaan ang Jenkins at GitLab CI/CD. Ang sagot sa tanong kung ano ang pipiliin ay depende sa mga pangangailangan at katangian ng isang partikular na proyekto. Ang bawat isa sa mga tool ng CI/CD na nasuri ngayon ay may ilang partikular na mga tampok, bagama't ang mga tool na ito ay nilikha upang malutas ang parehong problema. Kasabay nito, ang Jenkins ay isang standalone na tool, at ang GitLab CI / CD ay bahagi ng isang platform na idinisenyo para sa pakikipagtulungan sa code.

Kapag pumipili ng isang CI / CD system, bilang karagdagan sa mga kakayahan nito, ito ay nagkakahalaga ng pagsasaalang-alang sa mga gastos na maaaring nauugnay dito, at kung ano mismo ang mga inhinyero ng DevOps na sumusuporta sa proyekto ay ginagamit upang magtrabaho kasama.

Anong mga tool sa CI/CD ang ginagamit mo?

Labanan ng Jenkins at GitLab CI/CD

Labanan ng Jenkins at GitLab CI/CD

Pinagmulan: www.habr.com

Magdagdag ng komento