Kākoʻo no ka monorepo a me ka multirepo ma werf a he aha ka hana a Docker Registry me ia

Kākoʻo no ka monorepo a me ka multirepo ma werf a he aha ka hana a Docker Registry me ia

Ua kūkākūkā ʻia ke kumuhana o kahi monorepository ma mua o hoʻokahi a, ma ke ʻano he kānāwai, ke kumu o ka hoʻopaʻapaʻa ikaika loa. Ke hana nei werf Ma ke ʻano he mea hana Open Source i hoʻolālā ʻia e hoʻomaikaʻi i ke kaʻina hana o ke kūkulu ʻana i ka code noi mai Git i nā kiʻi Docker (a laila hāʻawi iā lākou i Kubernetes), ʻaʻole mākou e noʻonoʻo nui i ke koho ʻoi aku ka maikaʻi. No mākou, ʻo ia ka mea mua e hāʻawi i nā mea āpau e pono ai nā kākoʻo o nā manaʻo like ʻole (inā ʻaʻole kūʻē kēia i ka manaʻo maʻamau, ʻoiaʻiʻo).

ʻO ke kākoʻo i hoʻopuka hou ʻia no ka mono-repo i werf he kumu hoʻohālike maikaʻi o kēia. Akā ʻo ka mea mua, e noʻonoʻo pehea e pili ai kēia kākoʻo i ka hoʻohana ʻana i ka werf a me ka mea a Docker Registry e hana ai me ia ...

Nā pilikia

E noʻonoʻo kākou i kēia kūlana. He nui nā hui hoʻomohala o ka hui e hana ana i nā papahana kūʻokoʻa. Hoʻohana ka hapa nui o nā noi ma Kubernetes a, no laila, ua hoʻopaʻa ʻia. No ka mālama ʻana i nā ipu a me nā kiʻi, pono ke kākau inoa. Hoʻohana ka hui iā Docker Hub me kahi moʻokāki hoʻokahi e like me ke kākau inoa. COMPANY. E like me ka hapa nui o nā ʻōnaehana mālama code source, ʻAʻole ʻae ʻo Docker Hub iā ʻoe e hana i kahi hierarchy nested o nā waihona, e like me COMPANY/PROJECT/IMAGE. I kēia hihia ... pehea e hiki ai iā mākou ke mālama i nā noi non-monolithic i loko o ke kākau inoa me kēia palena me ka ʻole o ka hana ʻana i kahi moʻokāki kaʻawale no kēlā me kēia papahana?

Kākoʻo no ka monorepo a me ka multirepo ma werf a he aha ka hana a Docker Registry me ia

Malia paha ua kamaʻāina ka mea i wehewehe ʻia i ka lima mua, akā e nānā kākou i ka pilikia o ka hoʻonohonoho ʻana i ka waiho ʻana o ka noi ma ka laulā, ʻo ia hoʻi. me ka ʻole e pili ana i ka laʻana i luna a me Docker Hub.

Nā hoʻonā

Ina ka palapala noi monolithically, hele mai i hoʻokahi kiʻi, a laila ʻaʻohe nīnau e kū aʻe a mālama mākou i nā kiʻi i ka waihona waihona pahu o ka papahana.

Ke hōʻike ʻia kahi noi ma ke ʻano he nui nā ʻāpana, microservices, a laila pono ʻoe e koho i kahi ala. Ke hoʻohana nei i ka laʻana o kahi palapala noi pūnaewele maʻamau me nā kiʻi ʻelua: frontend и backend - nā koho hiki ke:

  1. E mālama i nā kiʻi i loko o nā waihona pūnana ʻokoʻa:

    Kākoʻo no ka monorepo a me ka multirepo ma werf a he aha ka hana a Docker Registry me ia

  2. E mālama i nā mea a pau i loko o ka waihona hoʻokahi, a hoʻokomo i ka inoa kiʻi ma ka tag, no ka laʻana, penei:

    Kākoʻo no ka monorepo a me ka multirepo ma werf a he aha ka hana a Docker Registry me ia

NB: ʻOiaʻiʻo, aia kahi koho ʻē aʻe me ka mālama ʻana i nā waihona like ʻole, PROJECT-frontend и PROJECT-backend, akā ʻaʻole mākou e noʻonoʻo ma muli o ka paʻakikī o ke kākoʻo, hoʻonohonoho a me ka hāʻawi ʻana i nā kuleana ma waena o nā mea hoʻohana.

kākoʻo werf

I ka hoʻomaka ʻana, ua kaupalena ʻia ka werf i nā repositories nested - ʻoi aku ka maikaʻi, kākoʻo ka hapa nui o nā registries i kēia hiʻohiʻona. Mai ka mana v1.0.4-alpha.3, hoʻohui i ka hana me nā registries kahi ʻAʻole kākoʻo ʻia ka nesting, a ʻo Docker Hub kekahi o lākou. Mai kēia manawa, ua koho ka mea hoʻohana i ka mālama ʻana i nā kiʻi noiʻi.

Loaʻa ka hoʻokō ma ke ʻano he koho --images-repo-mode=multirepo|monorepo (paʻamau multirepo, i.e. mālama ʻia i loko o nā waihona waihona). Ho'ākāka ia i nā hiʻohiʻona e mālama ʻia ai nā kiʻi i loko o ka papa inoa. Ua lawa ke koho i ke ʻano i makemake ʻia i ka wā e hoʻohana ai i nā kauoha kumu, a ʻo nā mea ʻē aʻe e hoʻololi ʻole ʻia.

No ka mea hiki ke hoʻonohonoho ʻia ka hapa nui o nā koho werf nā mea hoʻololi kaiapuni, ma nā ʻōnaehana CI/CD, maʻalahi ka hoʻonohonoho ʻana o ke ʻano mālama i ka honua no ka papahana holoʻokoʻa. ʻo kahi laʻana, i ka hihia o GitLab E hoʻohui wale i kahi hoʻololi kaiapuni i nā hoʻonohonoho papahana: Nā hoʻonohonoho -> CI / CD -> Nā ʻano hoʻololi: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Inā mākou e kamaʻilio e pili ana i ka paʻi ʻana i nā kiʻi a me ka ʻōwili ʻana i nā noi (hiki iā ʻoe ke heluhelu e pili ana i kēia mau kaʻina i nā kikoʻī i nā ʻatikala palapala pili: Kaʻina hana hoʻopuka и Kaʻina hana), a laila e hoʻoholo wale ke ʻano i ke ʻano e hiki ai iā ʻoe ke hana me ke kiʻi.

Aia ka diabolo i nā kikoʻī

ʻO ka ʻokoʻa a me ka paʻakikī nui i ka wā e hoʻohui ai i kahi ala mālama hou i ke kaʻina o ka hoʻomaʻemaʻe ʻana i ke kākau inoa (ʻO nā hiʻohiʻona hoʻomaʻemaʻe i kākoʻo ʻia ma werf, ʻike Kaʻina hoʻomaʻemaʻe).

Ke hoʻomaʻemaʻe, e noʻonoʻo ʻo werf i nā kiʻi i hoʻohana ʻia ma nā pūʻulu Kubernetes, a me nā kulekele i hoʻonohonoho ʻia e ka mea hoʻohana. Hoʻokumu ʻia nā kulekele ma ka hoʻokaʻawale ʻana i nā hōʻailona i nā hoʻolālā. Nā papahana i kākoʻo ʻia i kēia manawa:

  1. 3 mau hoʻolālā e pili ana i ka Git primitives e like me ka tag, lālā a me ka commit;
  2. 1 hoʻolālā no nā hōʻailona maʻamau.

Mālama mākou i ka ʻike e pili ana i ka hoʻolālā hōʻailona i ka wā e paʻi ana i ke kiʻi ma nā lepili o ke kiʻi hope. ʻO ke ʻano ponoʻī ka mea i kapa ʻia hōʻailona meta - pono no ka hoʻohana ʻana i kekahi mau kulekele. No ka laʻana, i ka holoi ʻana i kahi lālā a i ʻole ka inoa mai kahi waihona Git, kūpono ke holoi ʻana i nā mea pili hoʻohana ʻole ʻia nā kiʻi mai ka papa inoa, i uhi ʻia e kekahi hapa o kā mākou kulekele.

Ke mālama nei i hoʻokahi waihona (monorepo), i loko o ke kiʻi kiʻi, me ka meta tag, hiki ke mālama ʻia ka inoa o ke kiʻi: PROJECT:frontend-META-TAG. No ka hoʻokaʻawale ʻana iā lākou, ʻaʻole mākou i hoʻolauna i kahi mea hoʻokaʻawale kikoʻī, akā hoʻohui wale i ka waiwai kūpono i ka lepili o ke kiʻi hope i ka wā e paʻi ai.

NB: Inā makemake ʻoe e nānā i nā mea a pau i wehewehe ʻia ma ke code source werf, a laila hiki ke hoʻomaka HA 1684.

Ma kēia ʻatikala ʻaʻole mākou e nānā nui i nā pilikia a me ka hōʻoia ʻana o kā mākou ala: e pili ana i ka hoʻopili ʻana i nā hoʻolālā, ka mālama ʻana i ka ʻikepili i nā lepili a me ke kaʻina hana paʻi ma ka laulā - ua wehewehe ʻia kēia mau mea āpau i ka hōʻike hou a Dmitry Stolyarov: "ʻO werf kā mākou mea hana no CI/CD ma Kubernetes".

E hōʻuluʻulu manaʻo

ʻO ka nele o ke kākoʻo no nā hoʻopaʻa inoa ʻole me ka nesting ʻaʻole ia he mea pale no mākou a i ʻole nā ​​​​mea hoʻohana werf i ʻike ʻia e mākou - ma hope o nā mea a pau, hiki iā ʻoe ke hoʻāla mau i kahi papa inoa o nā kiʻi (a i ʻole e hoʻololi i ka Container Registry ma Google Cloud) ... Eia naʻe , ʻo ka wehe ʻana i kēlā palena i mea kūpono i mea e maʻalahi ai ka hāmeʻa i ke kaiāulu DevOps ākea. I ka hoʻokō ʻana, ua loaʻa iā mākou ka pilikia nui i ka hana hou ʻana i ka mīkini hoʻomaʻemaʻe waihona waihona. I kēia manawa ua mākaukau nā mea a pau, he mea maikaʻi ke ʻike ua lilo ia i mea maʻalahi no kekahi, a ʻaʻole mākou (ʻo nā mea hoʻomohala nui o ka papahana) ʻaʻole ʻike i nā pilikia i ʻike ʻia i ke kākoʻo hou ʻana i kēia hiʻohiʻona.

E noho pū me mākou a e haʻi koke mākou iā ʻoe e pili ana i nā mea hou aʻe i loko werf!

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka