ProHoster > Blog > Rianachd > Tagradh stèidhichte air susbaint anns an neach-togail werf: carson agus ciamar a tha e ag obair?
Tagradh stèidhichte air susbaint anns an neach-togail werf: carson agus ciamar a tha e ag obair?
gaoir an goireas fosgailte GitOps CLI againn airson a bhith a’ togail agus a’ lìbhrigeadh thagraidhean gu Kubernetes. ANNS sgaoileadh v1.1 chaidh feart ùr a thoirt a-steach don neach-cruinneachaidh ìomhaighean: tagadh ìomhaighean a rèir susbaint no tagadh stèidhichte air susbaint. Gu ruige seo, bha an sgeama tagaidh àbhaisteach ann an werf a’ toirt a-steach a bhith a’ tagadh ìomhaighean Docker le tag Git, meur Git no gealltanas Git. Ach tha eas-bhuannachdan aig na sgeamaichean sin uile a tha gu tur air am fuasgladh leis an ro-innleachd tagaidh ùr. Tha mion-fhiosrachadh mu dheidhinn agus carson a tha e cho math fon ghearradh.
A’ sgaoileadh seata de mhicro-sheirbheisean bho aon stòr Git
Bidh suidheachadh tric a’ tachairt nuair a tha iarrtas air a roinn ann am mòran sheirbheisean neo-eisimeileach. Faodaidh sgaoilidhean de na seirbheisean sin tachairt gu neo-eisimeileach: faodar aon no barrachd sheirbheisean a leigeil ma sgaoil aig an aon àm, agus feumaidh an còrr cumail orra ag obair gun atharrachadh sam bith. Ach bho thaobh stòradh còd agus stiùireadh pròiseict, tha e nas fhasa seirbheisean tagraidh mar sin a chumail ann an aon stòr.
Tha suidheachaidhean ann nuair a tha seirbheisean dha-rìribh neo-eisimeileach agus nach eil co-cheangailte ri aon iarrtas. Anns a’ chùis seo, bidh iad suidhichte ann am pròiseactan fa-leth agus thèid an sgaoileadh tro phròiseasan CI/CD air leth anns gach pròiseact.
Ach, ann an da-rìribh, bidh luchd-leasachaidh gu tric a’ roinn aon iarrtas ann an grunnan meanbh-sheirbheisean, ach tha cruthachadh stòr agus pròiseact air leth airson gach fear... gu math soilleir. Is e an suidheachadh seo a thèid a dheasbad tuilleadh: tha grunn de na meanbh-sheirbheisean sin suidhichte ann an aon stòr pròiseict agus bidh fiosan a’ tachairt tro aon phròiseas ann an CI / CD.
Tagradh le meur Git agus tag Git
Canaidh sinn gur e an ro-innleachd tagaidh as cumanta a thathas a’ cleachdadh - tag-no-meur. Airson meuran Git, tha ìomhaighean air an tagadh le ainm a’ mheur; airson aon mheur aig aon àm chan eil ann ach aon ìomhaigh foillsichte le ainm a’ mheur sin. Airson tagaichean Git, tha ìomhaighean air an tagadh a rèir ainm an taga.
Nuair a thèid taga Git ùr a chruthachadh - mar eisimpleir, nuair a thèid dreach ùr fhoillseachadh - thèid taga Docker ùr a chruthachadh airson a h-uile dealbh pròiseict ann an Clàr an Docker:
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
Thèid na h-ainmean ìomhaigh ùra seo a chuir tro theamplaidean Helm gu rèiteachadh Kubernetes. Nuair a thòisicheas tu air an cleachdadh leis an àithne werf deploy raon ga ùrachadh image ann an goireas Kubernetes a’ nochdadh agus ag ath-thòiseachadh nan goireasan co-fhreagarrach air sgàth an ainm ìomhaigh atharraichte.
duilgheadas: anns a’ chùis nuair, gu dearbh, nach eil susbaint na h-ìomhaigh air atharrachadh bhon sgaoileadh roimhe (Git tag), ach dìreach an taga Docker aige, bidh seo a’ tachairt a bharrachd ath-thòiseachadh an tagraidh seo agus, a rèir sin, tha beagan ùine downt comasach. Ged nach robh fìor adhbhar ann airson an ath-thòiseachadh seo a dhèanamh.
Mar thoradh air an sin, leis an sgeama tagaidh gnàthach feumar feansadh a dhèanamh air grunn stòran Git fa leth agus tha an duilgheadas ag èirigh le bhith ag eagrachadh sgaoileadh nan grunn stòran sin. San fharsaingeachd, tha an leithid de sgeama a 'tionndadh a-mach gu bhith cus agus iom-fhillte. Tha e nas fheàrr mòran sheirbheisean a chur còmhla ann an aon stòr agus tagaichean Docker a chruthachadh gus nach bi ath-thòiseachadh neo-riatanach ann.
Tagradh le Git commit
tha ro-innleachd tagaidh aig werf cuideachd co-cheangailte ri geallaidhean Git.
Tha Git-commit na aithnichear airson susbaint stòr Git agus tha e an urra ri eachdraidh deasachaidh fhaidhlichean ann an stòr Git, agus mar sin tha e coltach gu bheil e reusanta a chleachdadh airson ìomhaighean a thagadh ann an Clàr an Docker.
Ach, tha na h-aon eas-bhuannachdan aig tagadh le Git gealltanas ri tagadh le meuran Git no tagaichean Git:
Dh’ fhaodadh gealltanas falamh a bhith air a chruthachadh nach atharraich faidhlichean sam bith, ach thèid tag Docker na h-ìomhaigh atharrachadh.
Dh’ fhaodadh gealltanas aonaidh a bhith air a chruthachadh nach atharraich na faidhlichean, ach thèid tag Docker na h-ìomhaigh atharrachadh.
Dh’ fhaodadh gealladh a dhèanamh a dh’ atharraicheas na faidhlichean sin ann an Git nach eil air an toirt a-steach don ìomhaigh, agus thèid tag Docker na h-ìomhaigh atharrachadh a-rithist.
Chan eil ainm meur Tagging Git a’ nochdadh dreach ìomhaigh
Tha duilgheadas eile co-cheangailte ris an ro-innleachd tagaidh airson meuran Git.
Bidh tagadh a rèir ainm meur ag obair fhad ‘s a tha na geallaidhean air a’ mheur sin air an cruinneachadh ann an òrdugh a rèir eachdraidh.
Ma thòisicheas an neach-cleachdaidh san sgeama làithreach ag ath-thogail seann ghealladh co-cheangailte ri meur sònraichte, an uairsin bidh werf ag ath-sgrìobhadh an ìomhaigh a’ cleachdadh an taga Docker co-fhreagarrach le dreach ùr den ìomhaigh airson an t-seann ghealladh. Bidh cleachdadh a’ cleachdadh an taga seo bho seo a-mach ann an cunnart dreach eadar-dhealaichte den ìomhaigh a tharraing nuair a bhios iad ag ath-thòiseachadh pods, agus mar thoradh air an sin caillidh an tagradh againn ceangal ris an t-siostam CI agus thèid a dhì-shioncronachadh.
A bharrachd air an sin, le putadh leantainneach a-steach do aon mheur le ùine ghoirid eatorra, faodar an t-seann ghealladh a chuir ri chèile nas fhaide na am fear as ùire: bidh an seann dreach den ìomhaigh a’ sgrìobhadh thairis air an fhear ùr a’ cleachdadh tag meur Git. Faodar duilgheadasan leithid seo fhuasgladh le siostam CI/CD (mar eisimpleir, ann an GitLab CI tha loidhne-phìoban an tè mu dheireadh air a chuir air bhog airson sreath de ghealltanasan). Ach, chan eil a h-uile siostam a 'toirt taic dha seo agus feumaidh dòigh nas earbsaiche a bhith ann gus casg a chur air duilgheadas cho bunaiteach.
Dè a th’ ann an tagadh stèidhichte air susbaint?
Mar sin, dè a th 'ann an tagadh stèidhichte air susbaint - a' tagadh ìomhaighean a rèir susbaint.
Gus tagaichean Docker a chruthachadh, chan e Git primitives (meur Git, tag Git ...) a thathas a’ cleachdadh, ach checksum co-cheangailte ri:
susbaint na h-ìomhaigh. Tha taga ID na h-ìomhaigh a’ nochdadh a shusbaint. Nuair a bhios tu a' togail dreach ùr, chan atharraich an aithnichear seo mur eil na faidhlichean san dealbh air atharrachadh;
eachdraidh cruthachadh an ìomhaigh seo ann an Git. Bidh tagaichean ID eadar-dhealaichte aig ìomhaighean co-cheangailte ri diofar mheuran Git agus eachdraidh togail eadar-dhealaichte tro werf.
Is e tag aithnichear mar sin an t-ainm ainm-sgrìobhte ìre ìomhaigh.
Tha seata de ìrean anns gach ìomhaigh: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch etc. Tha aithnichear aig gach ìre a tha a’ nochdadh susbaint − ainm-sgrìobhte àrd-ùrlar(ainm-sgrìobhte ìre).
Tha an ìomhaigh mu dheireadh, anns a bheil na h-ìrean sin, air a chomharrachadh le ainm-sgrìobhte seata nan ìrean sin - ainm-sgrìobhte ìrean, - a tha coitcheann airson gach ìre den ìomhaigh.
Airson gach dealbh bhon rèiteachadh werf.yaml anns a 'chùis choitcheann, bidh ainm-sgrìobhte fhèin ann agus, a rèir sin, tag Docker.
Bidh ainm-sgrìobhte an àrd-ùrlair a’ fuasgladh nan duilgheadasan sin uile:
A’ seasamh an aghaidh geallaidhean Git falamh.
Tha Resistant to Git a’ gealltainn gun atharraich sin faidhlichean nach eil buntainneach don ìomhaigh.
Chan eil sin a’ leantainn gu duilgheadas le bhith ag ath-nuadhachadh an dreach gnàthach den ìomhaigh nuair a bhios tu ag ath-thòiseachadh toglaichean airson seann gheugan Git de mheur.
Is e seo a-nis an ro-innleachd tagaidh a thathar a’ moladh agus is e seo an ro-innleachd àbhaisteach ann an werf airson a h-uile siostam CI.
Mar a nì thu comas agus cleachdadh ann an werf
Tha roghainn co-fhreagarrach aig an àithne a-nis werf publish: --tag-by-stages-signature=true|false
Ann an siostam CI, tha an ro-innleachd tagaidh air a shònrachadh leis an àithne werf ci-env. Roimhe sin, chaidh am paramadair a mhìneachadh air a shon werf ci-env --tagging-strategy=tag-or-branch. A-nis, ma tha thu a shònrachadh werf ci-env --tagging-strategy=stages-signature no na sònraich an roghainn seo, cleachdaidh werf an ro-innleachd tagaidh gu bunaiteach stages-signature... Sgioba werf ci-env suidhichidh e gu fèin-ghluasadach na brataichean riatanach airson an àithne werf build-and-publish (no werf publish), mar sin chan fheumar roghainnean a bharrachd a shònrachadh airson na h-òrdughan sin.
tha e 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d tha e na ainm-sgrìobhte de ìrean na h-ìomhaigh backendagus f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - ainm-sgrìobhte ìrean ìomhaigh frontend.
Nuair a bhios tu a 'cleachdadh gnìomhan sònraichte werf_container_image и werf_container_env Chan eil feum air dad atharrachadh anns na teamplaidean Helm: cruthaichidh na gnìomhan sin gu fèin-ghluasadach na h-ainmean ìomhaigh ceart.
Eisimpleir de rèiteachadh ann an siostam CI:
type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy
Tha tuilleadh fiosrachaidh mu rèiteachadh ri fhaighinn anns na sgrìobhainnean:
Luach roghainn ùr werf ci-env --tagging-strategy=stages-signature|tag-or-branch (mura h-eil e air a shònrachadh, bidh am fear bunaiteach stages-signature).
Ma chleachd thu na roghainnean tagaidh airson gealltanas Git roimhe seo (WERF_TAG_GIT_COMMIT no roghainn werf publish --tag-git-commit COMMIT), an uairsin bi cinnteach gun atharraich thu chun ro-innleachd tagadh ìrean-ainm-sgrìobhte.
Tha e nas fheàrr pròiseactan ùra atharrachadh sa bhad chun sgeama tagaidh ùr.
Nuair a ghluaiseas tu gu werf 1.1, tha e ciallach seann phròiseactan atharrachadh chun sgeama tagaidh ùr, ach an t-seann tag-no-meur a’ faighinn taic fhathast.
Bidh tagadh stèidhichte air susbaint a’ fuasgladh nan duilgheadasan uile a tha air an còmhdach san artaigil:
Ainm tag docker an aghaidh Git falamh a’ gealltainn.
Tha fulangas ainm tag an Docker gu Git a’ gealltainn gun atharraich sin faidhlichean nach eil buntainneach don ìomhaigh.
Chan eil seo a’ leantainn gu duilgheadas le bhith ag ath-sgrùdadh an dreach gnàthach den ìomhaigh nuair a bhios ath-thòiseachadh air togalaichean airson seann Git a’ gealltainn airson meuran Git.
Cleachd e! Agus na dìochuimhnich tadhal oirnn aig GitHubgus cùis a chruthachadh no fear a lorg a tha ann mu thràth, cuir ris a bharrachd, cruthaich PR no dìreach coimhead air leasachadh a’ phròiseict.