Inkxaso ye-monorepo kunye ne-multirepo kwi-werf kwaye i-Docker Registry inento yokwenza nayo

Inkxaso ye-monorepo kunye ne-multirepo kwi-werf kwaye i-Docker Registry inento yokwenza nayo

Isihloko se-mono-repository sixoxwe ngaphezu kweyodwa kwaye, njengomthetho, kubangela ingxabano esebenzayo kakhulu. Ngokudala i-werf njengesixhobo somthombo ovulekileyo olungiselelwe ukuphucula inkqubo yokwakha ikhowudi yesicelo ukusuka kwiGit ukuya kwimifanekiso yeDocker (kwaye emva koko uyihambise kuKubernetes), asicingi kakhulu malunga nokuba loluphi ukhetho olungcono. Kithina, yinto ephambili ukubonelela ngayo yonke into efunekayo kubaxhasi beengcamango ezahlukeneyo (ukuba oku akuchasananga nengqiqo, kunjalo).

Inkxaso ye-werf yakutshanje ye-mono-repo ngumzekelo omhle woku. Kodwa kuqala, makhe sibone ukuba le nkxaso ihambelana njani nokusetyenziswa kwe-werf kunye nokuba iRegistry yeDocker inento yokwenza nayo ...

Imiba

Makhe sibe nomfanekiso-ngqondweni wemeko enjalo. Inkampani inamaqela amaninzi ophuhliso asebenza kwiiprojekthi ezizimeleyo. Uninzi lwezicelo zisebenza kwi-Kubernetes kwaye ke zifakwe kwisingxobo. Ukugcina izitya, imifanekiso, udinga irejista (registry). Njengobhaliso olunjalo, inkampani isebenzisa i-Docker Hub ngeakhawunti enye COMPANY. Iyafana neenkqubo ezininzi zokugcina ikhowudi yomthombo, I-Docker Hub ayikuvumeli ukucwangciswa kogcino lwendlwane, njenge COMPANY/PROJECT/IMAGE. Kuloo meko... ungazigcina njani izicelo ezingezizo eze-monolithic kwirejista kunye nalo mda ngaphandle kokudala i-akhawunti eyahlukileyo kwiprojekthi nganye?

Inkxaso ye-monorepo kunye ne-multirepo kwi-werf kwaye i-Docker Registry inento yokwenza nayo

Mhlawumbi, imeko echazwe iqhelekile kumntu ngokwakhe, kodwa makhe siqwalasele umba wokulungelelanisa ukugcinwa kwesicelo ngokubanzi, i.e. ngaphandle kokubhekisa kulo mzekelo ungasentla kunye neDocker Hub.

Izisombululo

Ukuba isicelo i-monolithic, iza ngomfanekiso omnye, emva koko akukho mibuzo kwaye sigcina nje imifanekiso kwirejistri yeprojekthi yesikhongozeli.

Xa isicelo sinikezelwa njengamacandelo amaninzi, microservices, emva koko kufuneka indlela ethile. Kumzekelo wesicelo esiqhelekileyo sewebhu esibandakanya imifanekiso emibini: frontend ΠΈ backend -Iinketho ezinokwenzeka zezi:

  1. Gcina imifanekiso kwindawo yogcino eyahluka-hlukeneyo:

    Inkxaso ye-monorepo kunye ne-multirepo kwi-werf kwaye i-Docker Registry inento yokwenza nayo

  2. Gcina yonke into kwindawo yokugcina, kwaye uqwalasele igama lomfanekiso kwithegi, umzekelo, ngolu hlobo lulandelayo:

    Inkxaso ye-monorepo kunye ne-multirepo kwi-werf kwaye i-Docker Registry inento yokwenza nayo

NB: Ngokwenyani, kukho enye inketho ngokugcina kwiindawo zokugcina ezahlukeneyo, PROJECT-frontend ΠΈ PROJECT-backend, kodwa asiyi kuyiqwalasela ngenxa yobunzima benkxaso, ukulungelelanisa kunye nokusabalalisa amalungelo phakathi kwabasebenzisi.

inkxaso ye-werf

Ekuqaleni, i-werf yazincina kwizindlu zokugcina zokugcina - ngethamsanqa, uninzi lweerejistri ziyalixhasa eli nqaku. Ukuqala kwinguqulelo v1.0.4-alpha.3, umsebenzi wongeziweyo kunye neerejistri apho ukuzala kwendlwane akuxhaswanga, kunye noDocker Hub ngomnye wabo. Ukususela ngelo xesha, umsebenzisi unokhetho lwendlela yokugcina imifanekiso yesicelo.

Ukuphunyezwa kufumaneka phantsi kokhetho --images-repo-mode=multirepo|monorepo (ehlala ikho multirepo, o.k. ukugcinwa kwiindawo zokugcina iindlwane). Ichaza iipateni apho imifanekiso igcinwa kwirejista. Kwanele ukukhetha indlela efunwayo xa usebenzisa imiyalelo eyisiseko, kwaye yonke enye into iya kuhlala ingatshintshi.

Kuba iinketho ezininzi ze-werf zinokusetwa iinguqu zokusingqongileyo, kwiinkqubo zeCI / CD, indlela yokugcina idla ngokulula ukuseta kwihlabathi jikelele kwiprojekthi yonke. Umzekelo, kwimeko yeGitLab Yongeza nje utshintsho lwemekobume kwizicwangciso zeprojekthi: Izicwangciso -> CI / CD -> Izinto eziguquguqukayo: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ukuba sithetha malunga nokupapasha imifanekiso kunye nokukhupha izicelo (unokufunda ngezi nkqubo ngokweenkcukacha kumanqaku afanelekileyo amaxwebhu: Inkqubo yokupapasha ΠΈ Inkqubo yokusasaza), ngoko imowudi imisela kuphela ithempleyithi onokuthi usebenze ngayo nomfanekiso.

Umtyholi ukwiinkcukacha

Umahluko kunye nobunzima obuphambili xa ukongeza indlela entsha yokugcina ikwinkqubo yokucoca irejista (ukucoca iimpawu ezixhaswa yi-werf, bona Inkqubo yokucoca).

Xa ucoca, i-werf ithathela ingqalelo imifanekiso esetyenziswa kumaqela e-Kubernetes, kunye nemigaqo-nkqubo eqwalaselwe ngumsebenzisi. Imigaqo-nkqubo isekelwe ekwahlulweni kweethegi kwizicwangciso. Izicwangciso ezixhaswayo ngoku:

  1. Izicwangciso ezi-3 ezidityaniswe yi-Git yokuqala njengethegi, isebe, kunye nokuzibophelela;
  2. Isicwangciso esi-1 sethegi yesiko esingenasizathu.

Sigcina ulwazi malunga nesicwangciso sethegi xa sipapasha umfanekiso kwiilebhile zomfanekiso wokugqibela. Intsingiselo ngokwayo yinto ebizwa meta tag - Kuyafuneka ukusebenzisa eminye yemigaqo-nkqubo. Umzekelo, xa ucima isebe okanye ithegi kwindawo yokugcina iGit, kunengqiqo ukucima engasetyenziswanga imifanekiso esuka kwirejista, egqunywe yinxalenye yemigaqo-nkqubo yethu.

Xa igcinwe kwindawo enye (monorepo), kwithegi yomfanekiso, ukongeza kwimeta tag, igama lomfanekiso nalo linokugcinwa: PROJECT:frontend-META-TAG. Ukuzahlula, asizange sazise nayiphi na isahluli esithile, kodwa songeze ixabiso elifunekayo kwileyibhile yomfanekiso wokugqibela xa upapasha.

NB: Ukuba unomdla ekujongeni yonke into echazwe kwikhowudi yomthombo werf, ke indawo yokuqala ingaba PR 1684.

Kweli nqaku, asiyi kuqwalasela ngakumbi iingxaki kunye nokulungiswa kwendlela yethu: malunga nezicwangciso zokumaka, ukugcina idatha kwiileyibhile kunye nenkqubo yokupapasha ngokupheleleyo - konke oku kuchazwe ngokweenkcukacha kwingxelo yakutshanje kaDmitry Stolyarov: "i-werf sisixhobo sethu seCI/CD eKubernetesΒ».

Ukushwankathela

Ukungabikho kwenkxaso kwiirejistri ezingabhalwanga kwakungeyona nto ithintelayo kuthi okanye abasebenzisi be-werf abaziwayo kuthi - emva kwayo yonke loo nto, unokuhlala uphakamisa irejista yomfanekiso owahlukileyo (okanye utshintshele kwiRejistri yoMgqomo enemiqathango kwiLifu likaGoogle) ... Nangona kunjalo, ukususa isithintelo esinjalo kubonakala kunengqiqo ukuze isixhobo sibe lula ngakumbi kuluntu olubanzi lweDevOps. Ukuyiphumeza, siye sajongana nobona bunzima bokusebenza ngokutsha indlela yokucoca iikhonteyina. Ngoku ukuba yonke into ilungile, kulungile ukuqaphela ukuba kuye kwaba lula kumntu, kwaye thina (njengabaphuhlisi abakhulu beprojekthi) asiyi kuba nobunzima obubonakalayo ekuxhaseni eli nqaku.

Hlala nathi kwaye kungekudala siza kukuxelela malunga nezinye izinto ezintsha i-werf!

PS

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo