Tsigiro ye monorepo uye multirepo mu werf uye iyo Docker Registry ine chekuita nazvo

Tsigiro ye monorepo uye multirepo mu werf uye iyo Docker Registry ine chekuita nazvo

Nyaya ye mono-repository yakakurukurwa kanopfuura kamwe uye, sekutonga, inokonzera kukakavara kwakanyanya. Nekugadzira werf seyakavhurika sosi chishandiso chakagadzirirwa kuvandudza maitiro ekuvaka kodhi yekushandisa kubva kuGit kuenda kuDocker mifananidzo (uye wozoendesa kuKubernetes), isu hatifunge zvakanyanya nezve sarudzo iri nani. Kwatiri, zvakakosha kupa zvese zvinodiwa kune vatsigiri vemafungiro akasiyana (kana izvi zvisingapesani nepfungwa, hongu).

werf ichangoburwa mono-repo rutsigiro muenzaniso wakanaka weizvi. Asi chekutanga, ngationei kuti rutsigiro urwu rwunowanzoenderana sei nekushandisa werf uye izvo Docker Registry ine chekuita nazvo ...

Nyaya

Ngatimbofungidzira mamiriro ezvinhu akadaro. Iyo kambani ine zvikwata zvakawanda zvebudiriro zvinoshanda pamapurojekiti akazvimirira. Zvizhinji zvekushandisa zvinomhanya paKubernetes uye saka zvakaiswa mumidziyo. Kuti uchengetedze midziyo, mifananidzo, unoda registry (registry). Seregistry yakadai, kambani inoshandisa Docker Hub ine account imwe chete COMPANY. Zvakafanana neakawanda sosi kodhi yekuchengetedza masisitimu, Docker Hub haitenderi nested repository hierarchy, zvakaita se COMPANY/PROJECT/IMAGE. Kana zvakadaro... ungachengeta sei asiri-monolithic application muregistry neichi chinogumira pasina kugadzira yakaparadzana account yepurojekiti yega yega?

Tsigiro ye monorepo uye multirepo mu werf uye iyo Docker Registry ine chekuita nazvo

Zvichida, mamiriro ezvinhu anotsanangurwa anozivikanwa kune mumwe munhu pachake, asi ngationei nyaya yekuronga kuchengetedza kwekushandisa muhuwandu, i.e. pasina kunongedzera kumuenzaniso wepamusoro uye Docker Hub.

Solutions

Kana chikumbiro monolithic, inouya mumufananidzo mumwe, saka hapana mibvunzo uye isu tinongo chengetedza iyo mifananidzo kune yeprojekiti mudziyo registry.

Kana chikumbiro chikaunzwa sezvikamu zvakawanda, microservices, ipapo imwe nzira inodiwa. Pamuenzaniso weyakajairwa pawebhu application ine mifananidzo miviri: frontend ΠΈ backend - zvingasarudzwa ndezvi:

  1. Chengetedza mifananidzo munzvimbo dzakasiyana-siyana dzekuchengetedza:

    Tsigiro ye monorepo uye multirepo mu werf uye iyo Docker Registry ine chekuita nazvo

  2. Chengetedza zvese mune imwe repository, uye funga zita remufananidzo mune iyo tag, semuenzaniso, seinotevera:

    Tsigiro ye monorepo uye multirepo mu werf uye iyo Docker Registry ine chekuita nazvo

NB: Chaizvoizvo, pane imwe sarudzo nekuchengetedza mune dzakasiyana repositori, PROJECT-frontend ΠΈ PROJECT-backend, asi isu hatizozvifungidzire nekuda kwekuoma kwekutsigirwa, kurongeka uye kugoverwa kwekodzero pakati pevashandisi.

werf support

Pakutanga, werf yakagumira kune nested repositori - nerombo rakanaka, mazhinji maregistries anotsigira ichi chimiro. Kutanga kubva pane shanduro v1.0.4-alpha.3, akawedzera basa nemaregistries umo dendere haritsigirwi, uye Docker Hub mumwe wavo. Kubva ipapo zvichienda mberi, mushandisi ane sarudzo yemachengetero emifananidzo yekushandisa.

Implementation inowanikwa pasi pechisarudzo --images-repo-mode=multirepo|monorepo (default multirepo, i.e. chengetedzo munzvimbo dzakaiswa dendere). Inotsanangura maitiro ayo mifananidzo inochengetwa murejista. Zvakakwana kusarudza nzira yaunoda paunenge uchishandisa mirairo yekutanga, uye zvimwe zvose zvicharamba zvisina kuchinjwa.

Nekuti akawanda werf sarudzo anogona kusetwa nharaunda variables, muCI / CD masisitimu, iyo yekuchengetedza modhi inowanzo kuve nyore kuseta pasi rose kune iyo purojekiti yese. Semuyenzaniso, munyaya yeGitLab ingo wedzera shanduko yemamiriro ekunze muzvirongwa zveprojekiti: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Kana tikataura nezve kuburitsa mifananidzo uye kuburitsa maapplication (unogona kuverenga nezve maitiro aya zvakadzama mune akakodzera zvinyorwa zvinyorwa: Publish process ΠΈ Deploy process), ipapo iyo modhi inongosarudza iyo template yaunogona kushanda nemufananidzo.

Dhiyabhorosi ari muhuwandu

Musiyano uye kuoma kukuru pakuwedzera nzira nyowani yekuchengetedza iri munzira yekuchenesa registry (yekuchenesa maficha anotsigirwa ne werf, ona Kuchenesa maitiro).

Paunenge uchichenesa, werf inofunga nezvemifananidzo inoshandiswa muKubernetes masumbu, pamwe nemitemo yakagadziriswa nemushandisi. Mitemo yakavakirwa pakupatsanurwa kwema tags kuita mazano. Parizvino mazano anotsigirwa:

  1. 3 mazano akabatanidzwa neGit primitives senge tag, bazi, uye kuzvipira;
  2. 1 zano remadiro etsika tags.

Isu tinochengetedza ruzivo nezve tag zano kana tichiburitsa chifananidzo mumalebel emufananidzo wekupedzisira. Chirevo pachacho ndicho chinonzi meta tag - Inodiwa kushandisa mamwe emitemo. Semuenzaniso, pakubvisa bazi kana tag kubva kuGit repository, zvine musoro kudzima zvine hukama. isina kushandiswa mifananidzo kubva ku registry, iyo inofukidzwa nechikamu chemitemo yedu.

Kana yachengetwa mune imwe repository (monorepo), mune iyo tag yemufananidzo, kuwedzera kune meta tag, zita remufananidzo rinogonawo kuchengetwa: PROJECT:frontend-META-TAG. Kuti tizviparadzanise, isu hatina kusuma chero chakasarudzika, asi takangowedzera kukosha kunodiwa kune iyo label yemufananidzo wekupedzisira pakudhindisa.

NB: Kana iwe uchifarira kutarisa zvese zvinotsanangurwa mune werf source kodhi, ipapo pekutangira kunogona kuva PR 1684.

Muchinyorwa chino, isu hatizotarisi zvakanyanya kumatambudziko uye kururamisa kwemaitiro edu: nezve nzira dzekumaka, kuchengetedza dhata mumabhii uye nzira yekuburitsa yakazara - zvese izvi zvinotsanangurwa zvakadzama mumushumo uchangoburwa naDmitry Stolyarov: "werf chishandiso chedu cheCI / CD muKubernetes".

Kupfupikisa

Kushaikwa kwerutsigiro rwemaregistries asina kunyorwa kwaisava chinhu chinovharisa kwatiri kana vashandisi vewerf vanozivikanwa kwatiri - mushure mezvose, unogona kugara uchisimudza yakaparadzana mufananidzo registry (kana chinja kune inomisikidzwa Container Registry muGoogle Cloud) ... Zvisinei, kubvisa chirambidzo chakadaro chaiita sechine musoro kuitira kuti chishandiso chive nyore nharaunda yeDevOps yakakura. Kuzvishandisa, takatarisana nedambudziko guru mukugadzirisa zvakare mudziyo wekuchenesa midziyo. Izvozvi zvese zvagadzirira, zvakanaka kuziva kuti zvave nyore kune mumwe munhu, uye isu (sevagadziri vakuru veprojekiti) hatizove nematambudziko anooneka mukuwedzera kutsigira chinhu ichi.

Gara nesu uye munguva pfupi iri kuuya tichakuudza nezve zvimwe zvitsva mukati werf!

PS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg