ʻO ka hoʻopaʻa inoa ʻana i ka ʻike ma ka werf builder: no ke aha a pehea e hana ai?

ʻO ka hoʻopaʻa inoa ʻana i ka ʻike ma ka werf builder: no ke aha a pehea e hana ai?

werf ʻO kā mākou kumu hāmama GitOps CLI pono no ke kūkulu ʻana a me ka hāʻawi ʻana i nā noi iā Kubernetes. IN hoʻokuʻu i ka v1.1 ua hoʻokomo ʻia kahi hiʻohiʻona hou i ka ʻohi kiʻi: kau ʻana i nā kiʻi ma o ka ʻike a i ʻole kāʻili ʻana ma muli o ka maʻiʻo. A hiki i kēia manawa, ʻo ka hoʻolālā maʻamau i ka werf e pili ana i ka hoʻopaʻa ʻana i nā kiʻi Docker e Git tag, lālā Git a i ʻole Git commit. Akā he mau hemahema kēia mau papahana a pau i hoʻoholo ʻia e ka hoʻolālā kau inoa hou. ʻO nā kikoʻī e pili ana iā ia a me ke kumu o ka maikaʻi loa ma lalo o ka ʻoki.

Ke hoʻopuka nei i kahi pūʻulu microservices mai kahi waihona Git

Hoʻopuka pinepine ʻia kahi kūlana ke hoʻokaʻawale ʻia kahi noi i nā lawelawe kūʻokoʻa ʻē aʻe a liʻiliʻi paha. Hiki ke hoʻokuʻu ʻia kēia mau lawelawe ma ke kaʻawale: hiki ke hoʻokuʻu ʻia hoʻokahi a ʻoi aku paha nā lawelawe i ka manawa, aʻo ke koena e hoʻomau i ka hana me ka ʻole o nā loli. Akā mai ka manaʻo o ka mālama code a me ka hoʻokele papahana, ʻoi aku ka maʻalahi o ka mālama ʻana i ia mau lawelawe noi i kahi waihona hoʻokahi.

Aia kekahi mau kūlana ke kūʻokoʻa maoli nā lawelawe a ʻaʻole pili me kahi noi hoʻokahi. I kēia hihia, e loaʻa iā lākou i nā papahana ʻokoʻa a e hoʻokō ʻia ko lākou hoʻokuʻu ʻana ma o nā kaʻina CI/CD kaʻawale i kēlā me kēia papahana.

Eia naʻe, i ka ʻoiaʻiʻo, hoʻokaʻawale pinepine nā mea hoʻomohala i kahi noi hoʻokahi i loko o nā microservices, akā ʻo ka hoʻokumu ʻana i kahi waihona a me ka papahana ʻokoʻa no kēlā me kēia ... ʻO kēia ke kūlana e kūkākūkā hou ʻia: aia kekahi mau microservices i loko o kahi waihona papahana a hoʻokuʻu ʻia ma o kahi kaʻina hana ma CI/CD.

Hoʻopili ʻia e ka lālā Git a me ka tag Git

E ʻōlelo kākou ua hoʻohana ʻia ka hoʻolālā kau inoa maʻamau - lepe-a-lala. No nā lālā Git, ua kau ʻia nā kiʻi me ka inoa o ka lālā, no ka lālā hoʻokahi i ka manawa hoʻokahi wale nō kiʻi i paʻi ʻia ma ka inoa o kēlā lālā. No nā hōʻailona Git, ua kau ʻia nā kiʻi e like me ka inoa inoa.

Ke hana ʻia kahi hōʻailona Git hou - no ka laʻana, ke hoʻokuʻu ʻia kahi mana hou - e hana ʻia kahi tag Docker hou no nā kiʻi papahana āpau i ka Docker Registry:

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

Hāʻawi ʻia kēia mau inoa kiʻi hou ma o nā hiʻohiʻona Helm i ka hoʻonohonoho Kubernetes. Ke hoʻomaka i ka hoʻolaha me ke kauoha werf deploy Ke hoʻonui ʻia nei ke kahua image i nā kumu waiwai Kubernetes hōʻike a hoʻomaka hou i nā kumuwaiwai pili ma muli o ka inoa kiʻi i hoʻololi ʻia.

pilikia: i ka wā, ʻoiaʻiʻo, ʻaʻole i loli nā ʻike o ke kiʻi mai ka wā i hoʻopuka mua ʻia (Git tag), akā ʻo kāna Docker tag wale nō, hiki kēia. keu hoʻomaka hou i kēia noi a, no laila, hiki i kekahi manawa hoʻomaha. ʻOiai ʻaʻohe kumu maoli e hana i kēia hoʻomaka hou.

ʻO ka hopena, me ka hoʻolālā kau inoa o kēia manawa, pono ia e paʻa i kekahi mau waihona Git kaʻawale a kū mai ka pilikia o ka hoʻonohonoho ʻana i ka ʻōwili ʻana o kēia mau waihona. Ma keʻano holoʻokoʻa, ʻike ʻia kēlā ʻano hoʻolālā i ka overloaded a paʻakikī. ʻOi aku ka maikaʻi o ka hoʻohui ʻana i nā lawelawe he nui i loko o kahi waihona hoʻokahi a hana i nā hōʻailona Docker i ʻole he hoʻomaka hou ʻole.

Hoʻopili ʻia e Git commit

Loaʻa iā werf kahi hoʻolālā e pili ana me Git commits.

He mea ʻike ʻo Git-commit no nā ʻike o kahi waihona Git a hilinaʻi i ka mōʻaukala hoʻoponopono o nā faila ma ka waihona Git, no laila he mea kūpono ke hoʻohana ʻia no ke kau ʻana i nā kiʻi i ka Docker Registry.

Eia nō naʻe, ʻo ka hoʻopaʻa inoa ʻana e Git commit ka like me ka hoʻopaʻa inoa ʻana e nā lālā Git a i ʻole nā ​​inoa Git:

  • Hiki ke hana ʻia kahi hana ʻole e hoʻololi i nā faila, akā e hoʻololi ʻia ka tag Docker o ke kiʻi.
  • Hiki ke hana ʻia kahi merge commit ʻaʻole e hoʻololi i nā faila, akā e hoʻololi ʻia ka tag Docker o ke kiʻi.
  • Hiki ke hana i kahi hana e hoʻololi i kēlā mau faila ma Git i lawe ʻole ʻia i ke kiʻi, a e hoʻololi hou ʻia ka inoa Docker o ke kiʻi.

ʻAʻole hōʻike ka hōʻailona ʻana i ka inoa lālā ʻo Git i ka mana kiʻi

Aia kekahi pilikia e pili ana i ka hoʻolālā kau inoa no nā lālā Git.

Hoʻohana ʻia ka hoʻopaʻa inoa ʻana ma ka inoa lālā inā ʻohi ʻia nā hana i kēlā lālā ma ke ʻano o ka manawa.

Inā ma ka papahana o kēia manawa hoʻomaka ka mea hoʻohana e kūkulu hou i kahi hana kahiko e pili ana i kekahi lālā, a laila e kākau hou ʻo werf i ke kiʻi me ka hoʻohana ʻana i ka tag Docker pili me kahi mana hou o ke kiʻi no ka hana kahiko. ʻO ka hoʻohana ʻana i kēia hōʻailona mai kēia manawa ke holo nei ka pilikia o ka huki ʻana i kahi ʻano ʻokoʻa o ke kiʻi i ka wā e hoʻomaka hou ai i nā pods, ma muli o ka pau ʻana o kā mākou noi i ka pilina me ka ʻōnaehana CI a lilo i desynchronized.

Eia kekahi, me ka hoʻokuʻi ʻana i hoʻokahi lālā me kahi manawa pōkole ma waena o lākou, hiki ke hōʻuluʻulu ʻia ka hana kahiko ma mua o ka mea hou: ʻo ka mana kahiko o ke kiʻi e hoʻopau i ka mea hou me ka hoʻohana ʻana i ka tag lālā Git. Hiki ke hoʻoponopono ʻia ia mau pilikia e kahi ʻōnaehana CI/CD (no ka laʻana, ma GitLab CI i hoʻomaka ʻia ka pipeline o ka mea hope no kahi ʻano hana). Eia naʻe, ʻaʻole kākoʻo nā ʻōnaehana āpau i kēia a pono e loaʻa kahi ala ʻoi aku ka hilinaʻi e pale ai i kēlā pilikia kumu.

He aha ka hōʻailona ma muli o ka ʻike?

No laila, he aha ka hōʻailona ma muli o ka maʻiʻo - ke kau ʻana i nā kiʻi e ka ʻike.

No ka hana ʻana i nā inoa Docker, ʻaʻole ʻo Git primitives (Git branch, Git tag...) i hoʻohana ʻia, akā he checksum pili me:

  • ma loko o ke kiʻi. Hōʻike ka tag ID kiʻi i kona ʻike. Ke kūkulu ʻana i kahi mana hou, ʻaʻole e loli kēia ʻike inā ʻaʻole i loli nā faila i ke kiʻi;
  • moʻolelo o ka hana ʻana i kēia kiʻi ma Git. ʻO nā kiʻi e pili ana i nā lālā Git like ʻole a me nā moʻolelo kūkulu ʻokoʻa ma o werf e loaʻa i nā inoa ID ʻokoʻa.

ʻO ia ʻano hōʻailona hōʻailona ka mea i kapa ʻia hōʻailona pae kiʻi.

Loaʻa i kēlā me kēia kiʻi kekahi mau pae: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch etc. Loaʻa i kēlā me kēia pae kahi mea hōʻike e hōʻike ana i kāna mau mea - pūlima kahua (kaulima pae).

ʻO ke kiʻi hope loa, nona kēia mau ʻanuʻu, ua kau ʻia me ka inoa i kapa ʻia o ka hoʻonohonoho o kēia mau pae - kau inoa pae, - ka mea e hoʻonui ana i nā pae a pau o ke kiʻi.

No kēlā me kēia kiʻi mai ka hoʻonohonoho werf.yaml i ka hihia maʻamau, e loaʻa kāna pūlima ponoʻī a, no laila, he tag Docker.

Hoʻoponopono ka papa inoa i kēia mau pilikia a pau:

  • Kū'ē i ka hana ʻole ʻana o Git.
  • Kū'ē iā Git e hoʻololi i nā faila pili ʻole i ke kiʻi.
  • ʻAʻole ia e alakaʻi i ka pilikia o ka hoʻoponopono hou ʻana i ka mana o kēia kiʻi i ka wā e hoʻomaka hou ai i ke kūkulu ʻana no ka hana kahiko o Git i kahi lālā.

ʻO kēia ka hoʻolālā hoʻolālā i manaʻo ʻia a ʻo ia ka paʻamau i werf no nā ʻōnaehana CI āpau.

Pehea e hiki ai a hoʻohana i ka werf

Aia ke kauoha i kēia manawa he koho kūpono werf publish: --tag-by-stages-signature=true|false

I loko o kahi ʻōnaehana CI, ua kuhikuhi ʻia ka hoʻolālā kau inoa e ke kauoha werf ci-env. Ma mua, ua wehewehe ʻia ka ʻāpana no ia werf ci-env --tagging-strategy=tag-or-branch. I kēia manawa, inā ʻoe e kuhikuhi werf ci-env --tagging-strategy=stages-signature a i ʻole e kuhikuhi i kēia koho, e hoʻohana ʻo werf i ka hoʻolālā kau inoa ma ke ʻano paʻamau stages-signature. Hui werf ci-env e hoʻonohonoho 'akomi i nā hae pono no ke kauoha werf build-and-publish (ai ole werf publish), no laila ʻaʻole pono e kuhikuhi ʻia nā koho hou no kēia mau kauoha.

Eia kekahi laʻana, ke kauoha:

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

...hiki ke hana i kēia mau kiʻi:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

he mea 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d he pūlima o nā pae o ke kiʻi backenda me ka f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - pūlima o nā pae kiʻi frontend.

Ke hoʻohana i nā hana kūikawā werf_container_image и werf_container_env ʻAʻohe pono e hoʻololi i kekahi mea i loko o nā hiʻohiʻona Helm: e hoʻopuka koke kēia mau hana i nā inoa kiʻi kūpono.

Laʻana hoʻonohonoho i loko o kahi ʻōnaehana CI:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

Loaʻa ka ʻike hou aku e pili ana i ka hoʻonohonoho ʻana ma ka palapala:

Hōʻuluʻulu

  • Koho hou werf publish --tag-by-stages-signature=true|false.
  • Waiwai koho hou werf ci-env --tagging-strategy=stages-signature|tag-or-branch (inā ʻaʻole i kuhikuhi ʻia, ʻo ka paʻamau stages-signature).
  • Inā ua hoʻohana mua ʻoe i nā koho koho no Git commits (WERF_TAG_GIT_COMMIT aiʻole koho werf publish --tag-git-commit COMMIT), a laila e ʻoluʻolu e hoʻololi i ka hoʻolālā kau inoa pae-kaulima.
  • ʻOi aku ka maikaʻi o ka hoʻololi koke ʻana i nā papahana hou i ka hoʻolālā kau inoa hou.
  • Ke hoʻololi nei i werf 1.1, ʻoi aku ka maikaʻi o ka hoʻololi ʻana i nā papahana kahiko i ka papa inoa inoa hou, akā ʻo ka mea kahiko. lepe-a-lala kākoʻo mau ʻia.

Hoʻoponopono ʻia nā pilikia a pau i uhi ʻia ma ka ʻatikala:

  • ʻO ke kūʻē ʻana o ka inoa inoa Docker i ka hana ʻole ʻo Git.
  • ʻO ke kūpaʻa o ka inoa inoa Docker iā Git e hoʻololi i nā faila i pili ʻole i ke kiʻi.
  • ʻAʻole ia e alakaʻi i ka pilikia o ka hoʻoponopono hou ʻana i ka mana o kēia kiʻi i ka wā e hoʻomaka hou ai i ke kūkulu ʻana no ka hana kahiko o Git no nā lālā Git.

E hoʻohana! A mai poina e kipa mai iā mākou ma GitHube hoʻokumu i kahi pilikia a i ʻole e ʻimi i kahi mea i loaʻa, hoʻohui i kahi hoʻohui, hana i kahi PR a i ʻole e nānā wale i ka hoʻomohala ʻana o ka papahana.

PS

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

Source: www.habr.com

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