Fanohanana monorepo sy multirepo amin'ny werf ary inona no ifandraisan'ny Docker Registry amin'izany

Fanohanana monorepo sy multirepo amin'ny werf ary inona no ifandraisan'ny Docker Registry amin'izany

Ny lohahevitry ny mono-repository dia noresahina imbetsaka ary matetika dia miteraka resabe mavitrika. Amin'ny famoronana werf amin'ny maha-fitaovana loharano misokatra natao hanatsarana ny fizotry ny fananganana kaody fampiharana avy amin'ny Git mankany amin'ny sary Docker (ary avy eo manatitra azy ireo any amin'ny Kubernetes), tsy mieritreritra firy momba izay safidy tsara indrindra izahay. Aminay, voalohany indrindra ny manome izay rehetra ilaina ho an'ireo mpanohana ny hevitra samihafa (raha tsy mifanohitra amin'ny saina mahazatra izany, mazava ho azy).

Ny fanohanana mono-repo vao haingana nataon'i werf dia ohatra tsara amin'izany. Fa aloha, andeha hojerentsika hoe ahoana no ifandraisan'ity fanohanana ity amin'ny fampiasana werf ary inona no ifandraisan'ny Docker Registry amin'izany ...

NY ANY

Alao sary an-tsaina ny toe-javatra toy izany. Manana ekipa fampandrosoana maro miasa amin'ny tetikasa tsy miankina ny orinasa. Ny ankamaroan'ny fampiharana dia mandeha amin'ny Kubernetes ary noho izany dia voatahiry. Mba hitahiry kaontenera, sary, mila rejisitra (rejistra). Amin'ny rejisitra toy izany, ny orinasa dia mampiasa Docker Hub miaraka amin'ny kaonty tokana COMPANY. Mitovy amin'ny ankamaroan'ny rafitra fitahirizana kaody loharano, Docker Hub dia tsy mamela ny hierarchy fitehirizam-bokatra, toy ny COMPANY/PROJECT/IMAGE. Amin'ity tranga ity ... ahoana no ahafahantsika mitahiry fampiharana tsy monolitika ao amin'ny rejisitra miaraka amin'io fetra io nefa tsy mamorona kaonty manokana ho an'ny tetikasa tsirairay?

Fanohanana monorepo sy multirepo amin'ny werf ary inona no ifandraisan'ny Docker Registry amin'izany

Angamba, ny toe-javatra voalaza dia mahazatra ny olona iray, fa andao hodinihintsika ny olana amin'ny fikarakarana ny fitahirizana fampiharana amin'ny ankapobeny, i.e. tsy misy firesahana amin'ny ohatra etsy ambony sy Docker Hub.

vahaolana

Raha ny fampiharana monolithic, tonga amin'ny sary iray, dia tsy misy fanontaniana ary tehirizinay ao amin'ny rejisitra fitoeran'ny tetikasa fotsiny ireo sary.

Rehefa aseho ho singa maromaro ny fampiharana iray, microservices, dia ilaina ny fomba fiasa sasany. Amin'ny ohatra amin'ny fampiharana tranonkala mahazatra misy sary roa: frontend ΠΈ backend - ny safidy azo atao dia:

  1. Tehirizo ireo sary ao amin'ny trano fitehirizam-bokatra misaraka:

    Fanohanana monorepo sy multirepo amin'ny werf ary inona no ifandraisan'ny Docker Registry amin'izany

  2. Tehirizo ao anaty tahiry iray ny zava-drehetra, ary diniho ny anaran'ny sary ao amin'ny tag, ohatra, toy izao manaraka izao:

    Fanohanana monorepo sy multirepo amin'ny werf ary inona no ifandraisan'ny Docker Registry amin'izany

NB: Raha ny marina, misy safidy hafa miaraka amin'ny fitahirizana amin'ny tahiry samihafa, PROJECT-frontend ΠΈ PROJECT-backend, saingy tsy handinika izany izahay noho ny fahasarotan'ny fanohanana, ny fandaminana ary ny fitsinjarana ny zo eo amin'ny samy mpampiasa.

fanohanana werf

Tany am-piandohana, ny werf dia nametra ny tenany ho amin'ny toeram-pitehirizam-bokatra - soa ihany fa ny ankamaroan'ny rejistra dia manohana an'io endri-javatra io. Manomboka amin'ny version v1.0.4-alpha.3, asa fanampiny miaraka amin'ny rejisitra izay tsy tohana ny akany, ary Docker Hub dia iray amin'izy ireo. Nanomboka tamin'izay fotoana izay, ny mpampiasa dia manana safidy amin'ny fomba fitahirizana ny sary fampiharana.

Fampiharana azo amin'ny safidy --images-repo-mode=multirepo|monorepo (default multirepo, i.e. fitehirizana ao amin'ny trano fitehirizam-bokatra). Izy io dia mamaritra ny fomba fitahirizana sary ao amin'ny rejisitra. Ampy ny misafidy ny fomba irina rehefa mampiasa ny baiko fototra, ary ny zavatra hafa rehetra dia tsy hiova.

Satria ny ankamaroan'ny safidy werf dia azo apetraka fari-piainana manodidina, amin'ny rafitra CI / CD, ny fomba fitahirizana dia matetika mora apetraka maneran-tany ho an'ny tetikasa manontolo. Ohatra, amin'ny tranga GitLab ampio fotsiny ny fari-piainan'ny tontolo iainana ao amin'ny firafitry ny tetikasa: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Raha miresaka momba ny famoahana sary sy famoahana fampiharana isika (azonao vakiana amin'ny antsipiriany ireo dingana ireo ao amin'ny lahatsoratra momba ny antontan-taratasy mifandraika amin'izany: Fomba famoahana ΠΈ Mametraka dingana), dia ny maodely ihany no mamaritra ny mΓ΄dely ahafahanao miasa miaraka amin'ilay sary.

Ao amin'ny antsipiriany ny devoly

Ny fahasamihafana sy ny fahasarotana lehibe rehefa manampy fomba fitahirizana vaovao dia eo amin'ny fanadiovana ny rejisitra (ho an'ireo endri-javatra fanadiovana tohanan'ny werf, jereo Dingana fanadiovana).

Rehefa manadio, werf dia mandinika ny sary ampiasaina amin'ny cluster Kubernetes, ary koa ny politika napetraky ny mpampiasa. Ny politika dia mifototra amin'ny fizarana ny marika ho paikady. Paikady tohanana amin'izao fotoana izao:

  1. Paikady 3 ampifandraisin'ny Git primitives toy ny tag, branch, ary commit;
  2. Paikady 1 ho an'ny marika manokana tsy misy dikany.

Mitahiry vaovao momba ny paikadin'ny marika izahay rehefa mamoaka ny sary ao amin'ny etik'ilay sary farany. Ny dikany mihitsy dia ilay atao hoe meta tag - Ilaina ny mampihatra ny sasany amin'ireo politika. Ohatra, rehefa mamafa sampana na marika amin'ny tahiry Git, dia lojika ny famafana mifandraika maromaro sary avy amin'ny rejisitra, izay voarakotry ny ampahany amin'ny politikanay.

Rehefa voatahiry ao anaty tahiry iray (monorepo), ao amin'ny tag sary, ankoatra ny meta tag, ny anaran'ny sary dia azo tehirizina ihany koa: PROJECT:frontend-META-TAG. Mba hampisaraka azy ireo dia tsy nampiditra mpizara manokana izahay, fa nampiana fotsiny ny sanda ilaina amin'ny mari-pamantarana ny sary farany rehefa mamoaka.

NB: Raha liana amin'ny fijerena ny zava-drehetra voalaza ao amin'ny kaody loharanon'ny werf ianao, dia mety ho ny fiaingana PR 1684.

Ato amin'ity lahatsoratra ity dia tsy handinika bebe kokoa ny olana sy ny fanamarinana ny fomba fiasantsika isika: momba ny paikady fametahana, fitahirizana angon-drakitra amin'ny marika ary ny fizotran'ny famoahana amin'ny ankapobeny - izany rehetra izany dia voafaritra amin'ny antsipiriany ao amin'ny tatitra vao haingana nataon'i Dmitry Stolyarov: "werf no fitaovanay ho an'ny CI/CD ao amin'ny Kubernetes".

Raha fintinina

Ny tsy fahampian'ny fanohanana ny rejisitra tsy misy akany dia tsy sakana ho anay na ireo mpampiasa werf fantatray - na izany aza, afaka manangana rejisitra misaraka amin'ny sary foana ianao (na mifindra any amin'ny Rejistra Container misy fepetra ao amin'ny Google Cloud) ... , ny fanesorana ny famerana toy izany dia toa mitombina mba hahatonga ilay fitaovana ho mora kokoa amin'ny vondrom-piarahamonina DevOps midadasika kokoa. Teo am-panatanterahana izany dia nisedra ny fahasahiranana lehibe amin'ny famerenana ny rafitra fanadiovana ny rejistra kaontenera izahay. Ankehitriny rehefa vonona ny zava-drehetra, dia mahafinaritra ny mahafantatra fa lasa mora kokoa ho an'ny olona iray izany, ary izahay (amin'ny maha-mpamorona ny tetikasa) dia tsy mahita fahasahiranana hita maso amin'ny fanohanana bebe kokoa an'io endri-javatra io.

MijanΓ²na miaraka aminay ary tsy ho ela dia hilaza aminao momba ny fanavaozana hafa izahay werf!

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment