Taic airson monorepo agus multirepo ann an werf agus dè a tha aig Clàr an Docker ris

Taic airson monorepo agus multirepo ann an werf agus dè a tha aig Clàr an Docker ris

Tha cuspair mono-repository air a dheasbad barrachd air aon uair agus, mar riaghailt, ag adhbhrachadh connspaid gu math gnìomhach. Le bhith a 'cruthachadh gaoir mar inneal stòr fosgailte a chaidh a dhealbhadh gus pròiseas togail còd tagraidh bho ìomhaighean Git to Docker (agus an uairsin gan lìbhrigeadh gu Kubernetes), chan eil sinn a’ smaoineachadh mòran air dè an roghainn as fheàrr. Dhuinne, tha e bun-sgoile a h-uile dad a tha riatanach a thoirt do luchd-taic diofar bheachdan (mura h-eil seo a ’dol an-aghaidh ciall cumanta, gu dearbh).

tha taic mono-repo werf o chionn ghoirid na dheagh eisimpleir de seo. Ach an toiseach, leig dhuinn a-mach mar a tha an taic seo sa chumantas co-cheangailte ri bhith a’ cleachdadh werf agus na tha aig Clàr an Docker ri dhèanamh leis ...

Iris

Smaoinich sinn air suidheachadh mar sin. Tha mòran sgiobaidhean leasachaidh aig a’ chompanaidh ag obair air pròiseactan neo-eisimeileach. Bidh a’ mhòr-chuid de thagraidhean a’ ruith air Kubernetes agus mar sin tha iad ann an soithichean. Gus soithichean, ìomhaighean a stòradh, feumaidh tu clàr (clàradh). Mar chlàr mar sin, bidh a’ chompanaidh a’ cleachdadh Docker Hub le aon chunntas COMPANY. Coltach ris a’ mhòr-chuid de shiostaman stòraidh còd stòr, Chan eil Docker Hub a’ ceadachadh rangachd tasgaidh neadachaidh, Leithid COMPANY/PROJECT/IMAGE. Anns a’ chùis sin… ciamar as urrainn dhut tagraidhean neo-monolithic a stòradh sa chlàr leis a’ chuingealachadh seo gun a bhith a’ cruthachadh cunntas air leth airson gach pròiseact?

Taic airson monorepo agus multirepo ann an werf agus dè a tha aig Clàr an Docker ris

Is dòcha gu bheil an suidheachadh a chaidh a mhìneachadh eòlach air cuideigin gu dìreach, ach beachdaichidh sinn air a ’cheist mu bhith a’ cur air dòigh stòradh tagraidh san fharsaingeachd, i.e. gun iomradh a thoirt air an eisimpleir gu h-àrd agus Docker Hub.

Fuasglaidhean

Ma tha an tagradh monolithic, a’ tighinn ann an aon ìomhaigh, an uairsin chan eil ceistean ann agus bidh sinn dìreach a’ sàbhaladh na h-ìomhaighean gu clàr container a’ phròiseict.

Nuair a tha iarrtas air a thaisbeanadh mar ioma-phàirtean, meanbh-sheirbheisean, an uairsin tha feum air dòigh-obrach sònraichte. Air an eisimpleir de thagradh lìn àbhaisteach anns a bheil dà ìomhaigh: frontend и backend - Is iad na roghainnean a dh’ fhaodadh a bhith ann:

  1. Glèidh ìomhaighean ann an stòran neadachaidh fa leth:

    Taic airson monorepo agus multirepo ann an werf agus dè a tha aig Clàr an Docker ris

  2. Glèidh a h-uile càil ann an aon stòr, agus beachdaich air ainm an ìomhaigh san tag, mar eisimpleir, mar a leanas:

    Taic airson monorepo agus multirepo ann an werf agus dè a tha aig Clàr an Docker ris

NB: Gu fìrinneach, tha roghainn eile ann le sàbhaladh ann an diofar stòran, PROJECT-frontend и PROJECT-backend, ach cha bheachdaich sinn air air sgàth cho iom-fhillte 'sa tha taic, eagrachadh agus sgaoileadh chòraichean eadar luchd-cleachdaidh.

taic werf

An toiseach, bha werf ga chuingealachadh fhèin ri tasgaidhean neadachaidh - gu fortanach, tha a’ mhòr-chuid de chlàran a’ toirt taic don fheart seo. A 'tòiseachadh bhon tionndadh v1.0.4-alpha.3, obair a bharrachd le clàran anns a bheil chan eil taic ri neadachadh, agus tha Docker Hub mar aon dhiubh. Bhon àm sin air adhart, tha roghainn aig an neach-cleachdaidh mar a chumas iad ìomhaighean an aplacaid a stòradh.

Gnìomhachadh ri fhaighinn fo roghainn --images-repo-mode=multirepo|monorepo (bunaiteach multirepo, i.e. stòradh ann an stòran neadachaidh). Bidh e a’ mìneachadh nam pàtrain leis am bi ìomhaighean air an stòradh sa chlàr. Tha e gu leòr am modh a tha thu ag iarraidh a thaghadh nuair a bhios tu a’ cleachdadh nan òrdughan bunaiteach, agus bidh a h-uile càil eile gun atharrachadh.

Leis gum faodar a’ mhòr-chuid de roghainnean werf a shuidheachadh caochladairean àrainneachd, ann an siostaman CI / CD, mar as trice tha am modh stòraidh furasta a shuidheachadh gu cruinne airson a 'phròiseict gu lèir. Mar eisimpleir, ann an cùis GitLab dìreach cuir caochladair àrainneachd ann an roghainnean a’ phròiseict: Roghainnean -> CI / CD -> caochlaidhean: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ma bhruidhneas sinn mu bhith a’ foillseachadh ìomhaighean agus a’ sgaoileadh thagraidhean (faodaidh tu leughadh mu na pròiseasan sin gu mionaideach anns na h-artaigilean sgrìobhainnean iomchaidh: Pròiseas foillseachaidh и Pròiseas a chur an gnìomh), an uairsin bidh am modh a’ dearbhadh an teamplaid a-mhàin leis an urrainn dhut obrachadh leis an ìomhaigh.

Tha an diabhal anns na mion-fhiosrachadh

Is e an eadar-dhealachadh agus am prìomh dhuilgheadas nuair a chuireas tu dòigh stòraidh ùr ris a’ chlàr a ghlanadh (airson feartan glanaidh le taic bho fheur, faic Pròiseas glanaidh).

Nuair a bhios tu a’ glanadh, bidh werf a’ toirt aire do na h-ìomhaighean a thathas a’ cleachdadh ann an cruinneachaidhean Kubernetes, a bharrachd air poileasaidhean a shuidhich an neach-cleachdaidh. Tha poileasaidhean stèidhichte air roinneadh tagaichean gu ro-innleachdan. Ro-innleachdan le taic an-dràsta:

  1. 3 ro-innleachdan ceangailte le prìomh-amasan Git leithid tag, meur, agus gealltanas;
  2. 1 ro-innleachd airson tagaichean gnàthaichte neo-riaghailteach.

Sàbhailidh sinn fiosrachadh mun ro-innleachd tagaichean nuair a bhios sinn a’ foillseachadh an ìomhaigh ann an bileagan na h-ìomhaigh dheireannaich. Is e an ciall fhèin an rud ris an canar taga meta - Feum air cuid de na poileasaidhean a chur an sàs. Mar eisimpleir, nuair a sguabas tu às meur no tag bho stòr Git, tha e loidsigeach cuir às gun chleachdadh ìomhaighean bhon chlàr, a tha còmhdaichte le pàirt de na poileasaidhean againn.

Nuair a thèid a shàbhaladh ann an aon stòr (monorepo), anns an taga ìomhaigh, a bharrachd air an meta tag, faodar ainm na h-ìomhaigh a stòradh cuideachd: PROJECT:frontend-META-TAG. Gus an dealachadh, cha tug sinn a-steach dealaiche sònraichte sam bith, ach dìreach chuir sinn an luach riatanach ri bileag na h-ìomhaigh dheireannaich nuair a chaidh fhoillseachadh.

NB: Ma tha ùidh agad coimhead air a h-uile dad a tha air a mhìneachadh ann an còd stòr werf, faodaidh an t-àite tòiseachaidh a bhith PR 1684.

Anns an aiste seo, cha toir sinn barrachd aire do na duilgheadasan agus fìreanachadh ar dòigh-obrach: mu bhith a 'tagadh ro-innleachdan, a' stòradh dàta ann an bileagan agus a 'phròiseas foillseachaidh gu h-iomlan - tha seo uile air a mhìneachadh gu mionaideach ann an aithisg o chionn ghoirid le Dmitry Stolyarov: "Is e werf an inneal againn airson CI/CD ann an Kubernetes".

Geàrr-chunntas a thoirt air

Cha robh an dìth taic do chlàran neo-cheangailte na adhbhar bacadh dhuinne no don luchd-cleachdaidh fleasgaich as aithne dhuinn - às deidh a h-uile càil, faodaidh tu an-còmhnaidh clàr ìomhaighean fa leth a thogail (no atharrachadh gu Clàr-gleidhidh Container ann an Google Cloud) ... Ach, bha coltas reusanta air toirt air falbh a leithid de chuingealachadh gus am biodh an inneal nas goireasaiche don choimhearsnachd DevOps san fharsaingeachd. Le bhith ga bhuileachadh, bha a’ phrìomh dhuilgheadas againn ann a bhith ag ath-obrachadh inneal glanaidh clàr nan soithichean. A-nis gu bheil a h-uile càil deiseil, tha e math a bhith mothachail gu bheil e air fàs nas fhasa do chuideigin, agus cha bhith sinn (mar phrìomh luchd-leasachaidh a 'phròiseict) gu bheil duilgheadasan follaiseach sam bith againn ann a bhith a' toirt taic don fheart seo.

Fuirich còmhla rinn agus gu math luath innsidh sinn dhut mu innleachdan eile ann an gaoir!

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann