Kev them nyiaj yug rau monorepo thiab multirepo hauv werf thiab Docker Registry muaj dab tsi ua nrog nws

Kev them nyiaj yug rau monorepo thiab multirepo hauv werf thiab Docker Registry muaj dab tsi ua nrog nws

Lub ntsiab lus ntawm monorepository tau tham ntau dua ib zaug thiab, raws li txoj cai, ua rau muaj kev sib cav heev. Tsim werf Raws li Open Source cuab yeej tsim los txhim kho cov txheej txheem ntawm kev tsim daim ntawv thov code los ntawm Git rau hauv Docker dluab (thiab tom qab ntawd xa lawv mus rau Kubernetes), peb tsis xav ntau txog qhov kev xaiv twg yog qhov zoo tshaj. Rau peb, nws yog qhov tseem ceeb los muab txhua yam tsim nyog rau cov neeg txhawb nqa ntawm cov kev xav sib txawv (yog tias qhov no tsis cuam tshuam qhov kev xav, tau kawg).

Tsis ntev los no qhia txog kev txhawb nqa rau mono-repo hauv werf yog ib qho piv txwv zoo ntawm qhov no. Tab sis ua ntej, cia peb xav seb qhov kev txhawb nqa no feem ntau cuam tshuam li cas rau kev siv werf thiab dab tsi Docker Registry tau ua nrog nws ...

Teeb meem

Cia peb xav txog qhov xwm txheej no. Lub tuam txhab muaj ntau pab pawg txhim kho ua haujlwm ntawm cov haujlwm ywj pheej. Cov ntawv thov feem ntau ua haujlwm hauv Kubernetes thiab, raws li, tau ntim khoom. Txhawm rau khaws cov ntim khoom thiab cov duab, yuav tsum tau sau npe. Lub tuam txhab siv Docker Hub nrog ib tus as khauj xws li kev sau npe. COMPANY. Zoo ib yam li feem ntau qhov chaws qhov chaw cia khoom, Docker Hub tsis tso cai rau koj los tsim ib qho kev sib koom ua ke ntawm cov chaw cia khoom, zoo li COMPANY/PROJECT/IMAGE. Nyob rau hauv cov ntaub ntawv no ... yuav ua li cas peb khaws cov ntaub ntawv uas tsis yog-monolithic nyob rau hauv lub npe nrog cov kev txwv no yam tsis tau tsim ib tug cais account rau txhua qhov project?

Kev them nyiaj yug rau monorepo thiab multirepo hauv werf thiab Docker Registry muaj dab tsi ua nrog nws

Tej zaum qhov xwm txheej tau piav qhia yog paub rau ib tus neeg ua ntej, tab sis cia peb saib qhov teeb meem ntawm kev teeb tsa daim ntawv thov cia feem ntau, i.e. yam tsis siv rau cov piv txwv saum toj no thiab Docker Hub.

Kev daws teeb meem

Yog daim ntawv thov monolithically, los hauv ib daim duab, ces tsis muaj lus nug tshwm sim thiab peb tsuas yog khaws cov duab rau hauv qhov project lub thawv npe.

Thaum ib daim ntawv thov raug nthuav tawm ua ntau yam, microservices, ces koj yuav tsum xaiv ib txoj hauv kev. Siv cov piv txwv ntawm ib daim ntawv thov web uas muaj ob daim duab: frontend ΠΈ backend - Cov kev xaiv tau yog:

  1. Khaws cov duab nyob rau hauv cais cov chaw khaws cia:

    Kev them nyiaj yug rau monorepo thiab multirepo hauv werf thiab Docker Registry muaj dab tsi ua nrog nws

  2. Khaws txhua yam hauv ib qhov chaw cia khoom, thiab suav nrog lub npe duab hauv daim ntawv lo, piv txwv li, hauv qab no:

    Kev them nyiaj yug rau monorepo thiab multirepo hauv werf thiab Docker Registry muaj dab tsi ua nrog nws

NB: Qhov tseeb, muaj lwm txoj kev xaiv nrog txuag hauv ntau qhov chaw cia khoom, PROJECT-frontend ΠΈ PROJECT-backend, tab sis peb yuav tsis xav txog nws vim qhov nyuaj ntawm kev txhawb nqa, koom haum thiab kev faib cov cai ntawm cov neeg siv.

werf txhawb

Thaum xub thawj, werf tau txwv rau cov chaw cia khoom zes - hmoov zoo, feem ntau cov npe txhawb nqa qhov no. Txij li version v1.0.4-alpha.3, ntxiv ua hauj lwm nrog rau npe nyob rau hauv uas tsis txhawb nqa, thiab Docker Hub yog ib qho ntawm lawv. Txij ntawm no mus, tus neeg siv tau xaiv yuav ua li cas khaws cov duab thov.

Kev siv tau muaj raws li ib feem ntawm qhov kev xaiv --images-repo-mode=multirepo|monorepo (neej ntawd hais multirepo, i.e. cia nyob rau hauv nested repositories). Nws txhais cov qauv uas cov duab khaws cia rau hauv daim ntawv teev npe. Nws yog txaus los xaiv hom xav tau thaum siv cov lus txib yooj yim, thiab txhua yam yuav nyob twj ywm tsis hloov.

Txij li feem ntau werf xaiv tuaj yeem teeb tsa ib puag ncig hloov pauv, nyob rau hauv CI / CD systems, hom cia yog feem ntau yooj yim teeb tsa thoob ntiaj teb rau tag nrho cov haujlwm. Piv txwv li, hauv GitLab Tsuas yog ntxiv ib puag ncig hloov pauv hauv qhov project nqis: Nqis -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Yog tias peb tham txog kev tshaj tawm cov duab thiab nthuav tawm cov ntawv thov (koj tuaj yeem nyeem txog cov txheej txheem no kom ntxaws hauv cov ntaub ntawv tseem ceeb: Tshaj tawm txheej txheem ΠΈ Siv cov txheej txheem), ces hom tsuas yog txiav txim siab tus qauv uas koj tuaj yeem ua haujlwm nrog cov duab.

Dab ntxwg nyoog yog nyob rau hauv cov ntsiab lus

Qhov sib txawv thiab qhov nyuaj tseem ceeb thaum ntxiv cov txheej txheem khaws cia tshiab yog nyob rau hauv tus txheej txheem ntawm kev ntxuav cov npe (kev tu cov yam ntxwv txhawb hauv werf, saib Kev ntxuav tu).

Thaum ntxuav, werf coj mus rau hauv tus account cov dluab siv nyob rau hauv Kubernetes pawg, nrog rau cov neeg siv-configured txoj cai. Txoj cai yog raws li kev faib cov cim npe rau hauv cov tswv yim. Cov tswv yim txhawb tam sim no:

  1. 3 lub tswv yim hais txog Git primitives xws li tag, ceg thiab cog lus;
  2. 1 lub tswv yim rau kev cai cim npe.

Peb khaws cov ntaub ntawv hais txog lub tswv yim tag thaum tshaj tawm cov duab hauv cov ntawv cim ntawm daim duab kawg. Lub ntsiab lus nws tus kheej yog lub thiaj li hu meta tag - tsim nyog rau kev siv qee txoj cai. Piv txwv li, thaum rho tawm ib ceg lossis tag los ntawm Git repository, nws yog qhov tsim nyog los rho tawm cuam tshuam tsis siv cov duab los ntawm kev sau npe, uas yog them los ntawm ib feem ntawm peb cov cai.

Thaum khaws cia hauv ib lub chaw khaws cia (monorepo), nyob rau hauv daim duab tag, ntxiv rau cov meta tag, lub npe ntawm daim duab kuj tuaj yeem khaws cia: PROJECT:frontend-META-TAG. Txhawm rau cais lawv, peb tsis tau qhia txog ib qho kev cais tshwj xeeb, tab sis tsuas yog ntxiv tus nqi tsim nyog rau daim ntawv lo ntawm daim duab kawg thaum luam tawm.

NB: Yog tias koj txaus siab saib txhua yam uas tau piav qhia hauv werf qhov chaws, ces qhov pib tuaj yeem yog PR 1684.

Nyob rau hauv tsab xov xwm no peb yuav tsis xyuam xim ntau rau cov teeb meem thiab kev ncaj ncees ntawm peb txoj kev: hais txog tagging tswv yim, cov ntaub ntawv cia nyob rau hauv daim ntawv lo thiab cov txheej txheem luam tawm nyob rau hauv dav dav - tag nrho cov no yog piav nyob rau hauv kom meej nyob rau hauv daim ntawv qhia tsis ntev los no los ntawm Dmitry Stolyarov: "werf yog peb cov cuab yeej rau CI / CD hauv Kubernetes".

Sau npe

Qhov tsis muaj kev txhawb nqa rau kev sau npe tsis muaj zes tsis yog qhov cuam tshuam rau peb lossis cov neeg siv werf paub rau peb - ​​tom qab tag nrho, koj tuaj yeem nce ib qho kev sau npe ntawm cov duab (lossis hloov mus rau Container Registry hauv Google Cloud) ... Txawm li cas los xij , tshem tawm qhov kev txwv no zoo li muaj laj thawj txhawm rau ua kom lub cuab yeej yooj yim dua rau cov zej zog DevOps dav dua. Thaum siv nws, peb ntsib qhov teeb meem tseem ceeb hauv kev rov ua haujlwm ntawm lub thawv sau npe tu tshuab. Tam sim no txhua yam yog npaj txhij, nws yog qhov zoo kom paub tias nws tau yooj yim dua rau ib tus neeg, thiab peb (raws li cov neeg tsim khoom tseem ceeb ntawm qhov project) tsis pom qhov teeb meem tshwm sim hauv kev txhawb nqa ntxiv no.

Nyob nrog peb thiab sai sai no peb yuav qhia koj txog lwm yam tshiab hauv werf!

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib