Atilẹyin fun monorepo ati multirepo ni werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ

Atilẹyin fun monorepo ati multirepo ni werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ

Koko-ọrọ ti ibi ipamọ mono-ọkan ti ni ijiroro diẹ sii ju ẹẹkan lọ ati, gẹgẹbi ofin, fa ariyanjiyan ti nṣiṣe lọwọ pupọ. Nipa ṣiṣẹda werf gẹgẹbi ohun elo orisun ṣiṣi ti a ṣe apẹrẹ lati ṣe ilọsiwaju ilana ti kikọ koodu ohun elo lati Git si awọn aworan Docker (ati lẹhinna jiṣẹ wọn si Kubernetes), a ko ronu pupọ nipa yiyan wo ni o dara julọ. Fun wa, o jẹ akọkọ lati pese ohun gbogbo pataki fun awọn alatilẹyin ti awọn ero oriṣiriṣi (ti eyi ko ba tako oye ti o wọpọ, dajudaju).

Atilẹyin mono-repo laipe werf jẹ apẹẹrẹ to dara ti eyi. Ṣugbọn akọkọ, jẹ ki a ro bi atilẹyin yii ṣe ni ibatan si lilo werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ…

Awọn ọrọ

Jẹ ki a fojuinu iru ipo kan. Ile-iṣẹ naa ni ọpọlọpọ awọn ẹgbẹ idagbasoke ti n ṣiṣẹ lori awọn iṣẹ akanṣe ominira. Pupọ awọn ohun elo nṣiṣẹ lori Kubernetes ati nitorinaa ti wa ni apoti. Lati tọju awọn apoti, awọn aworan, o nilo iforukọsilẹ (iforukọsilẹ). Gẹgẹbi iru iforukọsilẹ, ile-iṣẹ nlo Docker Hub pẹlu akọọlẹ kan COMPANY. Iru si ọpọlọpọ awọn eto ipamọ koodu orisun, Ibudo Docker ko gba awọn ilana ibi ipamọ ti itẹle laaye, bi eleyi COMPANY/PROJECT/IMAGE. Ni ọran naa… bawo ni o ṣe le tọju awọn ohun elo ti kii ṣe monolithic ninu iforukọsilẹ pẹlu aropin yii laisi ṣiṣẹda akọọlẹ lọtọ fun iṣẹ akanṣe kọọkan?

Atilẹyin fun monorepo ati multirepo ni werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ

Boya, ipo ti a ṣapejuwe jẹ faramọ si ẹnikan ni akọkọ, ṣugbọn jẹ ki a gbero ọran ti siseto ibi ipamọ ohun elo ni gbogbogbo, ie. laisi itọkasi si apẹẹrẹ loke ati Docker Hub.

Awọn ojutu

Ti ohun elo naa monolithic, wa ni aworan kan, lẹhinna ko si awọn ibeere ati pe a nìkan fi awọn aworan pamọ si iforukọsilẹ eiyan iṣẹ naa.

Nigbati ohun elo kan ba gbekalẹ bi awọn paati pupọ, microservices, lẹhinna ọna kan nilo. Lori apẹẹrẹ ti ohun elo wẹẹbu aṣoju ti o ni awọn aworan meji: frontend и backend - Awọn aṣayan ti o ṣeeṣe ni:

  1. Tọju awọn aworan ni awọn ibi ipamọ ti o yatọ:

    Atilẹyin fun monorepo ati multirepo ni werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ

  2. Tọju ohun gbogbo sinu ibi ipamọ kan, ki o si ro orukọ aworan ninu tag, fun apẹẹrẹ, bi atẹle:

    Atilẹyin fun monorepo ati multirepo ni werf ati kini iforukọsilẹ Docker ni lati ṣe pẹlu rẹ

NB: Lootọ, aṣayan miiran wa pẹlu fifipamọ ni awọn ibi ipamọ oriṣiriṣi, PROJECT-frontend и PROJECT-backend, ṣugbọn a kii yoo ṣe akiyesi rẹ nitori idiju ti atilẹyin, iṣeto ati pinpin awọn ẹtọ laarin awọn olumulo.

atilẹyin werf

Ni ibẹrẹ, werf fi opin si ara rẹ si awọn ibi ipamọ ti o ni itẹ-ẹiyẹ - ni anfani, ọpọlọpọ awọn iforukọsilẹ ṣe atilẹyin ẹya yii. Bibẹrẹ lati ẹya v1.0.4-alfa.3, kun iṣẹ pẹlu awọn registries ninu eyi ti tiwon ko ni atilẹyin, ati Docker Hub jẹ ọkan ninu wọn. Lati akoko yẹn, olumulo ni yiyan ti bii o ṣe le fipamọ awọn aworan ohun elo naa.

Imuse wa labẹ aṣayan --images-repo-mode=multirepo|monorepo (aiyipada multirepo, i.e. ibi ipamọ ninu awọn ibi ipamọ itẹle). O ṣe alaye awọn ilana nipasẹ eyiti awọn aworan ti wa ni ipamọ ninu iforukọsilẹ. O to lati yan ipo ti o fẹ nigba lilo awọn aṣẹ ipilẹ, ati pe ohun gbogbo miiran yoo wa ko yipada.

Nitori ọpọlọpọ awọn aṣayan werf le ṣeto awọn oniyipada ayika, ni awọn ọna ṣiṣe CI / CD, ipo ipamọ nigbagbogbo rọrun lati ṣeto ni agbaye fun gbogbo iṣẹ akanṣe. Fun apere, ninu ọran ti GitLab kan ṣafikun oniyipada ayika ni awọn eto iṣẹ akanṣe: Eto -> CI / CD -> Awọn oniyipada: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ti a ba sọrọ nipa titẹjade awọn aworan ati yiyi awọn ohun elo jade (o le ka nipa awọn ilana wọnyi ni awọn alaye ni awọn nkan iwe ti o yẹ: Ṣe atẹjade ilana и Mu ilana), lẹhinna ipo nikan pinnu awoṣe nipasẹ eyiti o le ṣiṣẹ pẹlu aworan naa.

Bìlísì wa ninu awọn alaye

Iyatọ ati iṣoro akọkọ nigbati o ba nfi ọna ipamọ titun kun ni ilana ti nu iforukọsilẹ (fun awọn ẹya mimọ ti o ni atilẹyin nipasẹ werf, wo Ninu ilana).

Nigbati o ba sọ di mimọ, werf ṣe akiyesi awọn aworan ti a lo ninu awọn iṣupọ Kubernetes, ati awọn eto imulo ti a tunto nipasẹ olumulo. Awọn eto imulo da lori pipin awọn afi si awọn ilana. Awọn ilana atilẹyin lọwọlọwọ:

  1. Awọn ilana 3 ti o sopọ nipasẹ awọn alakoko Git gẹgẹbi tag, ẹka, ati ṣiṣe;
  2. 1 nwon.Mirza fun lainidii aṣa afi.

A ṣafipamọ alaye nipa ilana tag nigba titẹjade aworan ni awọn aami ti aworan ikẹhin. Itumọ funrararẹ jẹ eyiti a pe meta tag - Ti beere lati kan diẹ ninu awọn eto imulo. Fun apẹẹrẹ, nigba piparẹ ẹka kan tabi taagi lati ibi ipamọ Git kan, o jẹ ọgbọn lati paarẹ ibatan ajeku awọn aworan lati iforukọsilẹ, eyiti o jẹ bo nipasẹ apakan ti awọn eto imulo wa.

Nigbati o ba fipamọ sinu ibi ipamọ kan (monorepo), ninu aami aworan, ni afikun si aami meta, orukọ aworan naa tun le wa ni ipamọ: PROJECT:frontend-META-TAG. Lati ya wọn sọtọ, a ko ṣafihan eyikeyi oluyapa kan pato, ṣugbọn nirọrun ṣafikun iye pataki si aami ti aworan ikẹhin nigba titẹjade.

NB: Ti o ba nifẹ lati wo ohun gbogbo ti a ṣalaye ninu koodu orisun werf, lẹhinna aaye ibẹrẹ le jẹ PR 1684.

Ninu àpilẹkọ yii, a kii yoo san ifojusi diẹ sii si awọn iṣoro ati idalare ti ọna wa: nipa awọn ilana fifi aami si, titoju data ni awọn akole ati ilana titẹjade ni apapọ - gbogbo eyi ni a ṣe apejuwe ni apejuwe ninu ijabọ laipe kan nipasẹ Dmitry Stolyarov: "werf jẹ ọpa wa fun CI / CD ni Kubernetes».

Akopọ

Aini atilẹyin fun awọn iforukọsilẹ ti ko ni ifisilẹ kii ṣe ifosiwewe idinamọ fun wa tabi awọn olumulo werf ti a mọ si wa - lẹhinna, o le gbe iforukọsilẹ aworan lọtọ nigbagbogbo (tabi yipada si Iforukọsilẹ Apoti ni àídájú ni Google Cloud) ... Sibẹsibẹ, yiyọ iru ihamọ bẹ dabi ẹni pe o jẹ ọgbọn ni ibere fun ọpa lati ni irọrun diẹ sii ni agbegbe DevOps ti o gbooro. Ni imuse rẹ, a koju iṣoro akọkọ ni ṣiṣiṣẹsẹhin ẹrọ isọdọmọ iforukọsilẹ eiyan. Ni bayi pe ohun gbogbo ti ṣetan, o dara lati mọ pe o ti rọrun fun ẹnikan, ati pe awa (gẹgẹbi awọn olupilẹṣẹ akọkọ ti iṣẹ akanṣe) kii yoo ni awọn iṣoro akiyesi eyikeyi ni atilẹyin ẹya yii siwaju.

Duro pẹlu wa ati laipẹ a yoo sọ fun ọ nipa awọn imotuntun miiran ninu werf!

PS

Ka tun lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun