Nkhondo ya Jenkins ndi GitLab CI/CD

M'zaka khumi zapitazi, kupita patsogolo kwakukulu kwapangidwa pakupanga zida zophatikizira mosalekeza (Continuous Integration, CI) ndi kutumizidwa kosalekeza (Kutumiza Kopitiriza, CD). Kukula kwa matekinoloje ophatikizira chitukuko ndi magwiridwe antchito apulogalamu (Development Operations, DevOps) kwadzetsa kufunikira kwa zida za CI / CD. Mayankho omwe alipo akuwongolera nthawi zonse, kuyesera kuti agwirizane ndi nthawi, matembenuzidwe awo atsopano amamasulidwa, m'dziko la mapulogalamu ovomerezeka a khalidwe (Quality Assurance, QA), zinthu zambiri zatsopano zikuwonekera nthawi zonse. Ndi chuma chosankha chotere, kusankha chida choyenera sikophweka.

Nkhondo ya Jenkins ndi GitLab CI/CD

Pakati pa zida zonse za CI / CD zomwe zilipo, pali ma projekiti awiri omwe ali oyenera kumvera munthu yemwe akufunafuna china chake mderali. Tikulankhula za Jenkins ndi chida cha GitLab CI / CD, chomwe ndi gawo la nsanja ya GitLab. Jenkins ali ndi zambiri kuposa 16000 nyenyezi pa GitHub. Malo osungira a GitLab pa gitlab.com adapeza zochulukirapo 2000 nyenyezi Tikayerekeza kutchuka kwa nkhokwe, zikuwoneka kuti Jenkins adapeza nyenyezi nthawi 8 kuposa nsanja yomwe imaphatikizapo GitLab CI/CD. Koma posankha chida cha CI / CD, izi siziri chizindikiro chokhacho choyenera kumvetsera. Pali ena ambiri, zomwe zikufotokozera chifukwa chake Jenkins ndi GitLab CI/CD amakhala oyandikana kwambiri m'mafaniziro ambiri.

Tengani, mwachitsanzo, deta yochokera ku nsanja ya G2, yomwe imasonkhanitsa ndemanga zamitundu yambiri yazinthu ndi mavoti omwe ogwiritsa ntchito amawapatsa. Nawa mavoti avareji Jenkins, kutengera ndemanga za 288, ndi nyenyezi 4,3. O o GitLab pali ndemanga 270, pafupifupi mlingo wa chida ichi ndi nyenyezi 4,4. Sitidzalakwitsa kunena kuti Jenkins ndi GitLab CI / CD amapikisana wina ndi mzake mofanana. Ndizosangalatsa kudziwa kuti projekiti ya Jenkins idawonekera mu 2011 ndipo kuyambira pamenepo yakhala chida chokonda kwambiri oyesa. Koma nthawi yomweyo, polojekiti ya GitLab CI / CD, yomwe idakhazikitsidwa mu 2014, yatenga malo ake, apamwamba kwambiri, chifukwa cha zida zapamwamba zoperekedwa ndi nsanja iyi.

Ngati tilankhula za kutchuka kwa Jenkins poyerekeza ndi nsanja zina zofanana, tikuwona kuti ife, titasindikiza nkhani yoyerekeza ndi nsanja za Travis CI ndi Jenkins, tinakonza kafukufuku. Ogwiritsa ntchito 85 adatenga nawo gawo. Ofunsidwa adafunsidwa kuti asankhe chida cha CI/CD chomwe amakonda kwambiri. 79% adasankha Jenkins, 5% adasankha Travis CI, ndipo 16% adawonetsa kuti amakonda zida zina.

Nkhondo ya Jenkins ndi GitLab CI/CD
Zotsatira za kafukufuku

Mwa zida zina za CI/CD, GitLab CI/CD idatchulidwa nthawi zambiri.

Ngati muli otsimikiza za DevOps, ndiye kuti muyenera kusankha mosamala zida zoyenera, poganizira zachindunji, bajeti yake, ndi zina zofunika. Kuti tikuthandizeni kupanga chisankho choyenera, tikuwunikanso Jenkins ndi GitLab CI/CD. Izi mwachiyembekezo zidzakuthandizani kupanga chisankho choyenera.

Chiyambi cha Jenkins

Nkhondo ya Jenkins ndi GitLab CI/CD
Jenkins ndi chida chodziwika bwino, chosinthika cha CI/CD chopangidwa kuti chizitha kugwira ntchito zambiri zokhudzana ndi mapulogalamu apulogalamu. Jenkins amalembedwa kwathunthu ku Java ndikutulutsidwa pansi pa layisensi ya MIT. Ili ndi zida zamphamvu zomwe cholinga chake ndi kupanga zokha ntchito zomwe zimagwirizanitsidwa ndi kumanga, kuyesa, kutumiza, kuphatikizira, ndi kutulutsa mapulogalamu. Chida ichi chingagwiritsidwe ntchito pa machitidwe osiyanasiyana. Izi zikuphatikiza macOS, Windows, ndi magawo ambiri a Linux monga OpenSUSE, Ubuntu, ndi Red Hat. Pali ma phukusi oyika a Jenkins opangidwira ma OS osiyanasiyana, chida ichi chitha kukhazikitsidwa pa Docker komanso pamakina aliwonse omwe ali ndi JRE (Java Runtime Environment).

Madivelopa a Jenkins apanga pulojekiti ina, Jenkins X, yomwe idapangidwa kuti igwire ntchito ku Kubernetes. Jenkins X amaphatikiza Helm, seva ya Jenkins CI/CD, Kubernetes, ndi zida zina zopangira mapaipi a CI/CD omwe amatsatira njira zabwino za DevOps. Mwachitsanzo, GitOps imagwiritsidwa ntchito pano.

Mmodzi akhoza kuwonjezera ku chuma chaubwino wa Jenkins mfundo yakuti zolemba zake ndi zokonzedwa bwino, zomveka, komanso zosavuta kuwerenga. Gulu la Jenkins lapanga mapulagini a 1000 omwe ali ndi cholinga chokonzekera kuyanjana kwa Jenkins ndi mitundu yosiyanasiyana ya matekinoloje. Zolemba zimatha kugwiritsa ntchito machitidwe otsimikizira, omwe, mwachitsanzo, amakulolani kuti mulumikizane ndi machitidwe osiyanasiyana otsekedwa.

Pakugwira ntchito kwa payipi ya Jenkins, mutha kuwona zomwe zimachitika pagawo lililonse, ngati magawo ena a ntchito amalizidwa bwino kapena ayi. Mutha kuwona zonsezi, komabe, osagwiritsa ntchito mawonekedwe ena, koma pogwiritsa ntchito kuthekera kwa terminal.

Zithunzi za Jenkins

Zina mwazinthu zodziwika bwino za Jenkins ndizosavuta kusinthira, kuchuluka kwazomwe zimapangidwira ntchito zosiyanasiyana komanso zolemba zabwino kwambiri. Ngati tikambirana za kuthetsa mavuto a DevOps, ndiye kuti Jenkins amaonedwa kuti ndi chida chodalirika kwambiri, pogwiritsa ntchito zomwe, monga lamulo, palibe chifukwa choyang'anitsitsa ndondomeko yonse ya polojekiti. Izi sizili choncho ndi zida zina za CI/CD. Tiyeni tikambirane zina mwa zinthu zofunika kwambiri za Jenkins.

▍1. Ufulu, gwero lotseguka, nsanja zambiri zothandizira

Jenkins amatha kuthamanga pa macOS, Windows ndi Linux nsanja. Itha kugwiranso ntchito m'malo a Docker, omwe amakupatsani mwayi wokonzekera yunifolomu komanso kuchita mwachangu ntchito zongochita zokha. Chida ichi chitha kugwiranso ntchito ngati servlet muzotengera zomwe zili ndi Java monga Apache Tomcat ndi GlassFish. Kuyika kwa Jenkins moyenera zolembedwa.

▍2. Kupanga plugin ecosystem

Jenkins plugin ecosystem ikuwoneka kuti ndi yokhwima kwambiri poyerekeza ndi mapulagini a zida zina za CI/CD. Pakali pano pali mapulagini opitilira 1500 a Jenkins. Mapulagini awa ndi cholinga chothana ndi mavuto osiyanasiyana; ndi chithandizo chawo mutha kupanga ma projekiti osiyanasiyana. Kulemera kwa mapulagini aulere oti musankhe kumatanthauza kuti aliyense wogwiritsa ntchito Jenkins alibe chosowa chofuna kugula mapulagini olipira okwera mtengo. Pali kuthekera kuphatikiza Jenkins wokhala ndi zida zambiri za DevOps.

▍3. Easy unsembe ndi khwekhwe

Jenkins ndiyosavuta kukhazikitsa ndikusintha. Pa nthawi yomweyi, njira yosinthira dongosololi ndi yabwino kwambiri. Apa, kachiwiri, ndi bwino kutchula khalidwe la zolembedwa, popeza mmenemo mungapeze mayankho a mafunso osiyanasiyana okhudzana ndi kukhazikitsa ndi kukonza Jenkins.

▍4. Gulu Laubwenzi

Monga tanena kale, Jenkins ndi pulojekiti yotseguka yomwe chilengedwe chake chimaphatikizapo mapulagini ambiri. Pali gulu lalikulu la ogwiritsa ntchito ndi omanga mozungulira Jenkins omwe amathandizira kupanga ntchitoyi. Community ndi chimodzi mwazinthu zomwe zimayendetsa chitukuko cha Jenkins.

▍5. Kupezeka kwa REST API

Pamene mukugwira ntchito ndi Jenkins, mungagwiritse ntchito REST API, yomwe imakulitsa luso la dongosolo. API yofikira kutali ndi dongosolo imaperekedwa m'mitundu itatu: XML, JSON yokhala ndi chithandizo cha JSONP, Python. pano Tsamba lazolemba lomwe limafotokoza zambiri zakugwira ntchito ndi Jenkins REST API.

▍6. Thandizo la ntchito yofananira

Jenkins amathandizira kufanana kwa ntchito za DevOps. Ikhoza kuphatikizidwa mosavuta ndi zida zogwirizana ndi kulandira zidziwitso za zotsatira za ntchito. Kuyesa kwa ma code kumatha kufulumizitsidwa pokonza zomanga zofananira pogwiritsa ntchito makina osiyanasiyana.

▍7. Thandizo la ntchito m'madera ogawidwa

Jenkins amakulolani kuti mukonzekere zomanga zogawidwa pogwiritsa ntchito makompyuta angapo. Izi zimagwira ntchito m'mapulojekiti akuluakulu ndipo zimagwiritsa ntchito ndondomeko ya ntchito momwe muli seva imodzi ya Jenkins ndi makina angapo a akapolo. Makina akapolo angagwiritsidwenso ntchito panthawi yomwe kuli kofunikira kukonza kuyesa kwa polojekiti m'malo osiyanasiyana. Izi zimasiyanitsa Jenkins ndi ntchito zina zofananira.

Chiyambi cha GitLab

Nkhondo ya Jenkins ndi GitLab CI/CD
GitLab CI/CD zitha kutchedwa chimodzi mwazinthu zatsopano komanso zokondedwa kwambiri ndi mainjiniya a DevOps. Chida ichi chaulere, chotseguka chimapangidwa munjira yowongolera mtundu wa GitLab. Pulatifomu ya GitLab ili ndi mtundu wa anthu ammudzi, imathandizira kasamalidwe ka malo, zida zotsatirira nkhani, kukonza ndemanga zama code, ndi njira zomwe zimayang'ana pakupanga zolemba. Makampani amatha kukhazikitsa GitLab pamalopo, ndikuyilumikiza ku Active Directory ndi ma seva a LDAP kuti avomereze ndi kutsimikizika kwa ogwiritsa ntchito.

pano Kanema wophunzitsira wokuthandizani kuphunzira momwe mungapangire mapaipi a CI/CD pogwiritsa ntchito luso la GitLab CI/CD.

GitLab CI/CD idatulutsidwa ngati projekiti yoyimirira, koma mu 2015 zida izi zidaphatikizidwa mu GitLab 8.0. Seva imodzi ya GitLab CI/CD imatha kuthandiza ogwiritsa ntchito oposa 25000. Kutengera ma seva oterowo, mutha kupanga machitidwe omwe amapezeka kwambiri.

GitLab CI/CD ndi pulojekiti yayikulu ya GitLab zalembedwa mu Ruby ndi Go. Amatulutsidwa pansi pa layisensi ya MIT. GitLab CI/CD, kuwonjezera pa kuthekera kwanthawi zonse kwa zida za CI/CD, imathandiziranso zina zowonjezera zokhudzana, mwachitsanzo, kukonzekera ntchito.

Kuphatikiza GitLab CI/CD mu polojekiti yanu ndikosavuta. Mukamagwiritsa ntchito GitLab CI/CD, njira yosinthira khodi ya polojekiti imagawidwa m'magawo, omwe amatha kukhala ndi ntchito zingapo zomwe zimachitidwa mwanjira inayake. Zochita zimatha kusinthidwa bwino.

Ntchito zimatha kuyenda limodzi. Pambuyo pokhazikitsa ndondomeko ya magawo ndi ntchito, payipi ya CI / CD yakonzeka kupita. Mutha kuyang'anira momwe ntchito ikuyendera poyang'anira momwe ntchitoyo ilili. Zotsatira zake, kugwiritsa ntchito GitLab CI / CD ndikosavuta, mwina kosavuta kuposa zida zina zofananira.

Mawonekedwe a GitLab CI/CD ndi GitLab

GitLab CI/CD ndi imodzi mwa zida zodziwika bwino za DevOps. Ntchitoyi imasiyanitsidwa ndi zolemba zapamwamba, mawonekedwe ake ndi osavuta komanso osavuta kugwiritsa ntchito. Ngati simunaidziwe bwino za GitLab CI/CD, mndandanda wotsatira wazinthu za chida ichi ukupatsani lingaliro lazomwe mungayembekezere kuchokera. Dziwani kuti zambiri mwazinthuzi zimagwirizana ndi nsanja ya GitLab yokha, momwe GitLab CI / CD imaphatikizidwa.

▍1. Kutchuka

GitLab CI/CD ndi chida chatsopano chomwe chapezeka kuti chikugwiritsidwa ntchito kwambiri. GitLab CI/CD pang'onopang'ono yakhala chida chodziwika bwino cha CI/CD chomwe chimagwiritsidwa ntchito poyesa makina ndi kutumiza mapulogalamu. Zake zosavuta kukhazikitsa. Ndi chida chaulere cha CI/CD chomangidwa papulatifomu ya GitLab.

▍2. Kuthandizira Masamba a GitLab ndi Jekyll

Jekyll ndi jenereta yokhazikika yomwe ingagwiritsidwe ntchito mkati mwa GitLab Pages system kupanga masamba potengera GitLab repositories. Dongosololi limatenga zida zoyambira ndikupanga malo okhazikika okonzeka kutengera iwo. Mutha kuwongolera mawonekedwe ndi mawonekedwe amasamba otere posintha fayilo _config.yml, yogwiritsidwa ntchito ndi Jekyll.

▍3. Maluso okonzekera polojekiti

Chifukwa cha luso lokonzekera magawo a polojekiti, zovuta zotsatila ndi magulu awo zimawonjezeka. Izi zimakuthandizani kuti muzitha kuyang'anira kayendetsedwe ka ntchito pama projekiti ndikukonzekera kukhazikitsidwa kwawo tsiku linalake.

▍4. Kuchulukitsa kwa othamanga a CI

Chifukwa cha kuchuluka kwa othamanga omwe ali ndi udindo wochita ntchito zinazake, mutha kupulumutsa zambiri pamtengo wobwereketsa ma seva. Izi ndizofunikira kwambiri, makamaka zikafika kumadera omwe ma projekiti amayesedwa mofanana. Kuphatikiza apo, izi ndizofunikira pama projekiti akuluakulu okhala ndi nkhokwe zingapo.

▍5. Zida zolondolera nkhani

Kuthekera kotsata kwamphamvu kwa GitLab kwapangitsa kuti mapulojekiti ambiri otseguka agwiritse ntchito nsanja. GitLab CI/CD imalola kuyesa kofanana kwa nthambi zamitundu yosiyanasiyana. Zotsatira zoyeserera zimawunikidwa mosavuta pamawonekedwe adongosolo. Izi zimayika GitLab CI/CD kusiyana ndi Jenkins.

▍6. Kuletsa kulowa nkhokwe

Pulatifomu ya GitLab imathandizira kuletsa kulowa m'malo osungira. Mwachitsanzo, omwe amagwira nawo ntchito m'malo osungirako akhoza kupatsidwa ufulu wogwirizana ndi maudindo awo. Izi ndizowona makamaka pama projekiti amakampani.

▍7. Thandizo la anthu ammudzi

Gulu logwira ntchito lapanga mozungulira GitLab, zomwe zimathandizira kukulitsa nsanja iyi ndi zida zake, makamaka, GitLab CI / CD. Kuphatikiza mozama kwa GitLab CI/CD ndi GitLab, mwa zina, kumapangitsa kuti zikhale zosavuta kupeza mayankho a mafunso omwe amabuka mukamagwira ntchito ndi GitLab CI/CD.

▍8. Thandizo la machitidwe osiyanasiyana olamulira

GitLab CI/CD ndi kachitidwe kamene kamatha kugwira ntchito osati kokha ndi ma code omwe amakhala mu nkhokwe za GitLab. Mwachitsanzo, code ikhoza kusungidwa m'nkhokwe ya GitHub, ndipo payipi ya CI/CD ikhoza kukonzedwa kutengera GitLab pogwiritsa ntchito GitLab CI/CD.

Kuyerekeza kwa Jenkins ndi GitLab CI/CD

Jenkins ndi GitLab CI/CD ndi zida zabwino kwambiri, zonse zomwe zimatha kupanga payipi ya CI/CD kuyenda bwino. Koma tikawayerekeza, zimakhala kuti, ngakhale ali ofanana m’njira zambiri, amasiyana m’njira zina.

mbali
Jenkins
GitLab CI/CD

Open source kapena gwero lotsekedwa
Open source
Open source

kolowera
Chofunikira.
Sizofunikira chifukwa izi ndizomwe zidapangidwa papulatifomu ya GitLab.

Zapadera
Thandizo la pulogalamu yowonjezera.
Kuphatikiza kwakuya mu dongosolo lowongolera.

thandizo
Akusowa.
Likupezeka.

Kuyika ndi kukonza
Zovuta sizimayambitsa
Zovuta sizimayambitsa

Kudzitumiza kwadongosolo
Iyi ndi njira yokhayo yogwiritsira ntchito dongosolo.
Zothandizidwa.

Kupanga Mapaipi a CI/CD
Kuthandizidwa, pogwiritsa ntchito Jenkins Pipeline.
Zothandizidwa.

Kuyang'anira magwiridwe antchito
Akusowa.
Likupezeka.

Makhalidwe
Pali mapulagini opitilira 1000.
Dongosololi likupangidwa mkati mwa GitLab.

API
Imathandizira dongosolo lapamwamba la API.
Amapereka API kuti aphatikizidwe mozama muma projekiti.

Thandizo la JavaScript
Likupezeka.
Likupezeka.

Kuphatikiza ndi zida zina
Kuphatikiza ndi zida zina ndi nsanja (Slack, GitHub) zimathandizidwa.
Zida zambiri zophatikizira ndi machitidwe a chipani chachitatu, makamaka - ndi GitHub ndi Kubernetes.

Kuwongolera khalidwe la code
Kuthandizidwa - pogwiritsa ntchito pulogalamu yowonjezera ya SonarQube ndi mapulagini ena.
Zothandizidwa.

Kusiyana pakati pa Jenkins ndi GitLab CI/CD

Tafotokoza ndikuyerekeza Jenkins ndi GitLab CI/CD, tiyeni tiwone kusiyana pakati pa zida za DevOps. Kudziwa kusiyana kumeneku kudzapereka chidziwitso kwa iwo omwe amakonda chimodzi mwa zida izi kuposa china.

  • GitLab CI/CD imatha kuwongolera nkhokwe za Git. Tikukamba za kuyang'anira nthambi zosungiramo zinthu ndi zina. Koma Jenkins, ngakhale atha kugwira ntchito ndi nkhokwe, sapereka mulingo womwewo wowalamulira monga GitLab CI/CD.
  • Jenkins ndi pulojekiti yotseguka yaulere. Amene amachisankha amachigwiritsa ntchito payekha. Ndipo GitLab CI / CD ikuphatikizidwa papulatifomu ya GitLab, iyi ndi yankho la turnkey.
  • GitLab CI/CD imathandizira zida zoyendetsera ntchito zapamwamba zomwe zimagwira ntchito pamlingo wa projekiti. Mbali iyi ya Jenkins sinatukuke kwambiri.

Jenkins ndi GitLab CI/CD: mphamvu ndi zofooka

Tsopano muli ndi lingaliro la Jenkins ndi GitLab CI/CD. Tsopano, kuti mudziwe bwino za zida izi, tiyeni tione mphamvu zawo ndi zofooka zawo. Tikuganiza kuti mwasankha kale chida chomwe mukufuna. Tikukhulupirira, gawo ili likuthandizani kuti muyese nokha.

▍Nkhani za Jenkins

  • Chiwerengero chachikulu cha mapulagini.
  • Kulamulira kwathunthu pa kukhazikitsa zida.
  • Kuwongolera kosavuta kwa othamanga.
  • Kukonzekera kwa node kosavuta.
  • Kutumiza ma code mosavuta.
  • Njira yabwino kwambiri yoyendetsera zidziwitso.
  • Kusinthasintha ndi kusinthasintha.
  • Thandizo la zilankhulo zosiyanasiyana zamapulogalamu.
  • Dongosolo limamveka pamlingo wanzeru.

▍Zofooka za Jenkins

  • Mapulagini amatha kukhala ovuta kugwiritsa ntchito.
  • Mukamagwiritsa ntchito Jenkins m'mapulojekiti ang'onoang'ono, nthawi yofunikira kuti mukonzekere nokha ikhoza kukhala yayikulu mopanda nzeru.
  • Kupanda chidziwitso chowunikira pa unyolo wa CI/CD.

▍Kulimba kwa GitLab CI/CD

  • Kuphatikiza kwabwino ndi Docker.
  • Kuwongolera kosavuta kwa othamanga.
  • Kugwira ntchito limodzi kwa magawo omwe ali gawo la payipi ya CI / CD.
  • Kugwiritsa ntchito molunjika acyclic graph model pokhazikitsa maubale a ntchito.
  • Mkulu wa scalability chifukwa cha kuthekera kwa kupha kofanana kwa othamanga.
  • Kusavuta kuwonjezera ntchito.
  • Kuthetsa kusamvana kosavuta.
  • Chitetezo chodalirika.

▍Zofooka za GitLab CI/CD

  • Pantchito iliyonse, muyenera kufotokoza ndikutsitsa / kutsitsa zaluso.
  • Simungathe kuyesa zotsatira za kuphatikiza nthambi zisanaphatikizidwe.
  • Pofotokoza magawo a payipi ya CI / CD, sikutheka kugawa magawo amodzi mwa iwo.

Zotsatira

Onse a Jenkins ndi GitLab CI/CD ali ndi mphamvu ndi zofooka. Yankho la funso la zomwe mungasankhe zimadalira zosowa ndi makhalidwe a polojekiti inayake. Chida chilichonse cha CI / CD chomwe chikukambidwa lero chimasiyana ndi zinthu zina, ngakhale zidazi zidapangidwa kuti zithetse vuto lomwelo. Nthawi yomweyo, Jenkins ndi chida choyimirira, ndipo GitLab CI/CD ndi gawo la nsanja yopangidwa kuti igwirizane ndi ma code.

Posankha dongosolo la CI / CD, kuwonjezera pa mphamvu zake, ndi bwino kuganizira ndalama zomwe zingagwirizane nazo, ndi zomwe akatswiri a DevOps omwe akuthandizira polojekitiyi amagwiritsidwa ntchito pogwira ntchito.

Ndi zida ziti za CI/CD zomwe mumagwiritsa ntchito?

Nkhondo ya Jenkins ndi GitLab CI/CD

Nkhondo ya Jenkins ndi GitLab CI/CD

Source: www.habr.com

Kuwonjezera ndemanga