Nkwado maka monorepo na multirepo na werf na kedu ihe ndekọ Docker nwere jikọrọ ya na ya

Nkwado maka monorepo na multirepo na werf na kedu ihe ndekọ Docker nwere jikọrọ ya na ya

A tụlere isiokwu nke mono-repository ihe karịrị otu ugboro na, dịka iwu, na-akpata esemokwu na-arụsi ọrụ ike. Site na imepụta werf dị ka ngwá ọrụ mepere emepe emebere iji melite usoro iwu koodu ngwa site na Git gaa na ihe oyiyi Docker (na-ebuga ha na Kubernetes), anyị anaghị eche echiche banyere nhọrọ kacha mma. Maka anyị, ọ bụ isi inye ihe niile dị mkpa maka ndị na-akwado echiche dị iche iche (ọ bụrụ na nke a adịghị emegide ezi uche, n'ezie).

Nkwado mono-repo werf na nso nso a bụ ezigbo ihe atụ nke a. Mana nke mbụ, ka anyị chọpụta ka nkwado a si metụtakarị iji werf yana ihe ndekọ Docker nwere metụtara ya.

Okwu

Ka anyị were ụdị ọnọdụ ahụ. Ụlọ ọrụ ahụ nwere ọtụtụ ndị mmepe na-arụ ọrụ na-arụ ọrụ onwe ha. Ọtụtụ ngwa na-agba ọsọ na Kubernetes, yabụ etinyere ya. Iji chekwaa arịa, onyonyo, ịchọrọ ndekọ (ndebanye aha). Dị ka ndekọ dị otú ahụ, ụlọ ọrụ na-eji Docker Hub nwere otu akaụntụ COMPANY. Yiri ọtụtụ sistemụ nchekwa koodu isi mmalite, Docker Hub anaghị anabata ndị isi ụlọ nchekwa akwụrụ, dị ka COMPANY/PROJECT/IMAGE. N'okwu ahụ… kedu ka ị ga-esi chekwaa ngwa na-abụghị monolithic na ndekọ na njedebe a na-enweghị ịmepụta akaụntụ dị iche maka ọrụ ọ bụla?

Nkwado maka monorepo na multirepo na werf na kedu ihe ndekọ Docker nwere jikọrọ ya na ya

Ikekwe, ọnọdụ a kọwara maara nke ọma onye mmadụ n'onwe ya, ma ka anyị tụlee okwu nke ịhazi nchekwa ngwa n'ozuzu, ya bụ. na-enweghị ntụaka na atụ n'elu na Docker Hub.

Ngwọta

Ọ bụrụ na ngwa monolithic, na-abịa n'otu ihe oyiyi, mgbe ahụ, ọ dịghị ajụjụ na anyị nanị na-azọpụta ihe oyiyi na oru ngo si akpa ndekọ.

Mgbe ewepụtara ngwa dị ka ọtụtụ akụrụngwa, microservices, mgbe ahụ, a chọrọ ụzọ ụfọdụ. N'ihe atụ nke ngwa webụ a na-ahụkarị nwere onyonyo abụọ: frontend и backend - nhọrọ enwere ike bụ:

  1. Chekwaa onyonyo n'ụlọ nchekwa akwụrụ dị iche iche:

    Nkwado maka monorepo na multirepo na werf na kedu ihe ndekọ Docker nwere jikọrọ ya na ya

  2. Chekwaa ihe niile n'otu ebe nchekwa, ma tụlee aha onyonyo dị na mkpado, dịka ọmụmaatụ, dị ka ndị a:

    Nkwado maka monorepo na multirepo na werf na kedu ihe ndekọ Docker nwere jikọrọ ya na ya

NB: N'ezie, enwere nhọrọ ọzọ na-echekwa na ebe nchekwa dị iche iche, PROJECT-frontend и PROJECT-backend, ma anyị agaghị atụle ya n'ihi mgbagwoju anya nke nkwado, nhazi na nkesa ikike n'etiti ndị ọrụ.

nkwado werf

Na mbido, werf kpachiri onwe ya na ebe nchekwa akwụrụ - ọ dabara nke ọma, ọtụtụ ndebanye aha na-akwado njirimara a. Malite na ụdị v1.0.4-alfa.3, kwukwara ọrụ na registries na nke akwadoghi akwu, na Docker Hub bụ otu n'ime ha. Site na mgbe ahụ gawa, onye ọrụ nwere nhọrọ nke otu esi echekwa onyonyo ngwa.

Mmejuputa dị n'okpuru nhọrọ --images-repo-mode=multirepo|monorepo (ndabere multirepo, i.e. nchekwa na ebe nchekwa akwụ). Ọ na-akọwapụta ụkpụrụ nke eji echekwa onyonyo na ndekọ. O zuru ezu ịhọrọ ọnọdụ achọrọ mgbe ị na-eji iwu ndị bụ isi, na ihe ọ bụla ọzọ ga-anọgide na-agbanwe agbanwe.

N'ihi na enwere ike ịtọ ọtụtụ nhọrọ werf mgbanwe gburugburu ebe obibi, na CI / CD usoro, ọnọdụ nchekwa na-adịkarị mfe ịtọ n'ụwa nile maka dum oru ngo. Ọmụmaatụ, n'ihe gbasara GitLab naanị tinye mgbanwe gburugburu ebe obibi na ntọala ọrụ: Ntọala -> CI / CD -> Mgbanwe: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ọ bụrụ na anyị na-ekwu maka ibipụta onyonyo na ibugharị ngwa (ị nwere ike ịgụ gbasara usoro ndị a n'ụzọ zuru ezu n'ime edemede akwụkwọ ndị dị mkpa: Usoro bipụta и Nyefee usoro), mgbe ahụ, ọnọdụ na-ekpebi naanị template nke ị nwere ike iji ihe oyiyi rụọ ọrụ.

Ekwensu dị na nkọwa

Ihe dị iche na isi ihe isi ike mgbe ị na-agbakwụnye usoro nchekwa ọhụrụ dị na nhazi nke ihicha ndekọ (maka atụmatụ nchacha nke werf kwadoro, hụ Usoro nhicha).

Mgbe ị na-ehicha ihe, werf na-eburu n'uche ihe onyonyo ejiri na ụyọkọ Kubernetes, yana atumatu onye ọrụ haziri. Atumatu gbadoro ụkwụ na nkewa mkpado n'ime atụmatụ. Atụmatụ akwadoro ugbu a:

  1. Atụmatụ 3 nke Git primitives jikọtara dị ka mkpado, alaka na ime;
  2. Atụmatụ 1 maka mkpado omenala aka ike.

Anyị na-echekwa ozi gbasara atụmatụ mkpado mgbe anyị na-ebipụta onyonyo a na akara nke onyonyo ikpeazụ. Ihe ọ pụtara n'onwe ya bụ ihe a na-akpọ meta mkpado - Achọrọ itinye ụfọdụ iwu. Dịka ọmụmaatụ, mgbe ị na-ehichapụ alaka ma ọ bụ mkpado na ebe nchekwa Git, ọ bụ ihe ezi uche dị na ya ihichapụ ihe metụtara ya ejighi ya onyonyo sitere na ndekọ, nke akụkụ nke amụma anyị kpuchiri.

Mgbe echekwara na otu ebe nchekwa (monorepo), na mkpado onyonyo, na mgbakwunye na mkpado meta, enwere ike ịchekwa aha onyonyo a: PROJECT:frontend-META-TAG. Iji kewaa ha, anyị ewebataghị onye nkesa ọ bụla, mana gbakwunyere uru dị mkpa na akara ngosi onyonyo ikpeazụ mgbe a na-ebipụta ya.

NB: Ọ bụrụ na ị nwere mmasị ilele ihe niile akọwapụtara na koodu isi werf, mgbe ahụ mmalite nwere ike ịbụ PR 1684.

N'isiokwu a, anyị agaghị etinyekwu uche na nsogbu na izi ezi nke ụzọ anyị: banyere ịkpado atụmatụ, ịchekwa data na labels na usoro mbipụta n'ozuzu - a kọwara ihe niile n'ụzọ zuru ezu na akụkọ na-adịbeghị anya nke Dmitry Stolyarov: "werf bụ ngwá ọrụ anyị maka CI/CD na Kubernetes".

Na ichikota

Enweghị nkwado maka ndebanye aha na-enweghị isi abụghị ihe na-egbochi anyị ma ọ bụ ndị ọrụ werf mara anyị - ka emechara, ị nwere ike ibuli ndekọ ihe oyiyi dị iche mgbe niile (ma ọ bụ gbanwee gaa na ndekọ ihe mkpuchi mkpuchi na Google Cloud) ... Otú ọ dị, iwepụ mmachi dị otú ahụ yiri ihe ezi uche dị na ya ka ngwá ọrụ ahụ dị mma karịa obodo DevOps. N'iji ya eme ihe, anyị chere isi ihe isi ike ihu n'ịrụgharị usoro nhicha ndekọ akpa. Ugbu a na ihe niile dị njikere, ọ dị mma ịghọta na ọ dịlarị mmadụ mfe, na anyị (dị ka ndị isi mmepe nke oru ngo) agaghị enwe nsogbu ọ bụla a na-ahụ anya n'ịkwado atụmatụ a.

Nọnyere anyị, n'oge adịghị anya, anyị ga-agwa gị maka ihe ọhụrụ ndị ọzọ na werf!

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment