{"id":76764,"date":"2020-04-04T13:42:24","date_gmt":"2020-04-04T11:42:24","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee"},"modified":"2020-04-04T13:42:24","modified_gmt":"2020-04-04T11:42:24","slug":"reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","title":{"rendered":"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb mbledh\u00ebs sot dhe planet p\u00ebr t\u00eb ardhmen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb mbledh\u00ebs sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/c7c26e4a0b7bddb90ba087a4db7175dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/\">werf<\/a><\/noindex> \u2014 utilita jon\u00eb GitOps CLI me kod t\u00eb hapur p\u00ebr nd\u00ebrtimin dhe dor\u00ebzimin e aplikacioneve n\u00eb Kubernetes. Si\u00e7 e premtuam, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">dalja e versionit v1.0<\/a><\/noindex> sh\u00ebnoi fillimin e shtimit t\u00eb mund\u00ebsive t\u00eb reja n\u00eb werf dhe rishikimin e qasjeve t\u00eb zakonshme. Tani jemi t\u00eb lumtur t\u00eb paraqesim l\u00ebshimin v1.1, i cili \u00ebsht\u00eb nj\u00eb hap i madh n\u00eb zhvillim dhe nj\u00eb baz\u00eb p\u00ebr t\u00eb ardhmen <i>nd\u00ebrtuesit<\/i> werf. Versioni \u00ebsht\u00eb i disponuesh\u00ebm tani n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalin 1.1 ea<\/a><\/noindex>.<\/p>\n<p>Baza e l\u00ebshimit \u00ebsht\u00eb arkitektura e re e ruajtjes s\u00eb fazave dhe optimizimi i funksionimit t\u00eb t\u00eb dy nd\u00ebrtuesve (p\u00ebr Stapel dhe Dockerfile). Arkitektura e re e ruajtjes hap mund\u00ebsi p\u00ebr realizimin e nd\u00ebrtimeve t\u00eb shp\u00ebrndara nga disa hoste dhe nd\u00ebrtimeve paralele n\u00eb nj\u00eb host.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Optimizimi i funksionimit p\u00ebrfshin heqjen e llogaritjeve t\u00eb panevojshme n\u00eb faz\u00ebn e llogaritjes s\u00eb n\u00ebnshkrimeve t\u00eb fazave dhe ndryshimin e mekanizmave t\u00eb llogaritjes s\u00eb shenjave t\u00eb skedar\u00ebve n\u00eb m\u00eb efikaset. Kjo optimizim zvog\u00eblon koh\u00ebn mesatare t\u00eb nd\u00ebrtimeve t\u00eb projektit p\u00ebrmes werf. Nd\u00ebrsa nd\u00ebrtimet e plota, kur t\u00eb gjitha fazat ekzistojn\u00eb n\u00eb cache <i>stages-storage<\/i>, tani jan\u00eb me t\u00eb v\u00ebrtet\u00eb t\u00eb shpejta. N\u00eb shumic\u00ebn e rasteve, rihapja e nd\u00ebrtimit do t\u00eb kaloj\u00eb m\u00eb shpejt se p\u00ebr 1 sekond\u00eb! Kjo vlen gjithashtu p\u00ebr procedurat e verifikimit t\u00eb fazave gjat\u00eb pun\u00ebs s\u00eb ekipeve <code>werf deploy<\/code> dhe <code>werf run<\/code>.<\/p>\n<p>Gjithashtu, n\u00eb k\u00ebt\u00eb l\u00ebshim \u00ebsht\u00eb shtuar strategjia e etiketimit t\u00eb imazheve bazuar n\u00eb p\u00ebrmbajtje \u2014 <i>content-based tagging<\/i>, e cila tani \u00ebsht\u00eb e aktivizuar si standard dhe \u00ebsht\u00eb e rekomanduar e vetme.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb m\u00eb n\u00eb detaje risit\u00eb kryesore n\u00eb werf v1.1, dhe po ashtu do t\u00eb flasim p\u00ebr planet p\u00ebr t\u00eb ardhmen.<\/p>\n<h2>\u00c7far\u00eb \u00ebsht\u00eb ndryshuar n\u00eb werf v1.1?<\/h2>\n<p><\/p>\n<h3>Forma e re e em\u00ebrtimit t\u00eb fazave dhe algoritmi i p\u00ebrzgjedhjes s\u00eb fazave nga cache<\/h3>\n<p>\nRregulli i ri p\u00ebr gjenerimin e emrit t\u00eb faz\u00ebs. Tani \u00e7do nd\u00ebrtim faze gjeneron nj\u00eb em\u00ebr unik p\u00ebr faz\u00ebn, i cili p\u00ebrb\u00ebhet nga 2 pjes\u00eb: n\u00ebnshkrimi (si\u00e7 ishte n\u00eb v1.0) plus nj\u00eb identifikues unik temporal.<\/p>\n<p>P\u00ebr shembull, emri i plot\u00eb i imazhit t\u00eb faz\u00ebs mund t\u00eb duket k\u00ebshtu:<\/p>\n<p><code>werf-stages-storage\/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835<\/code><\/p>\n<p>\u2026 ose n\u00eb form\u00ebn e p\u00ebrgjithshme:<\/p>\n<p><code>werf-stages-storage\/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC<\/code><\/p>\n<p>K\u00ebtu:<\/p>\n<ul>\n<li> <code>N\u00cbNSHKRIMI<\/code> \u2014 \u00ebsht\u00eb n\u00ebnshkrimi i faz\u00ebs, i cili p\u00ebrfaq\u00ebson identifikuesin e p\u00ebrmbajtjes s\u00eb faz\u00ebs dhe varet nga historia e ndryshimeve n\u00eb Git, e cila \u00e7oi n\u00eb k\u00ebt\u00eb p\u00ebrmbajtje;<\/li>\n<li> <code>TIMESTAMP_MILLISEC<\/code> \u2014 \u00ebsht\u00eb nj\u00eb identifikues garantuar unik i imazhit, i cili gjenerohet n\u00eb momentin e nd\u00ebrtimit t\u00eb nj\u00eb imazhi t\u00eb ri.<\/li>\n<\/ul>\n<p>\nAlgoritmi i p\u00ebrzgjedhjes s\u00eb fazave nga cache bazohet n\u00eb kontrollin e lidhshm\u00ebris\u00eb s\u00eb komiteteve Git:<\/p>\n<ol>\n<li> Werf llogarit n\u00ebnshkrimin e nj\u00eb faze.<\/li>\n<li> N\u00eb <i>stages-storage<\/i> mund t\u00eb ekzistojn\u00eb disa faza me k\u00ebt\u00eb n\u00ebnshkrim. Werf zgjedh t\u00eb gjitha fazat q\u00eb p\u00ebrputhen me n\u00ebnshkrimin.<\/li>\n<li> N\u00ebse faza aktuale \u00ebsht\u00eb e lidhur me Git (git-archive, faz\u00eb p\u00ebrdoruesi me patch-e Git: <code>install<\/code>, <code>beforeSetup<\/code>, <code>setup<\/code>; ose git-latest-patch), at\u00ebher\u00eb werf zgjedh vet\u00ebm ato faza q\u00eb jan\u00eb t\u00eb lidhura me nj\u00eb komitet q\u00eb \u00ebsht\u00eb paraardh\u00ebsi i komitetit aktual (p\u00ebr t\u00eb cilin \u00ebsht\u00eb thirrur nd\u00ebrtimi).<\/li>\n<li> Nga fazat e mbetura t\u00eb p\u00ebrshtatshme, zgjidhet nj\u00eb \u2014 ajo m\u00eb e vjet\u00ebr sipas dat\u00ebs s\u00eb krijimit.<\/li>\n<\/ol>\n<p>\nFaza p\u00ebr deg\u00eb t\u00eb ndryshme Git mund t\u00eb ket\u00eb t\u00eb nj\u00ebjtin n\u00ebnshkrim. Por werf do t\u00eb parandaloj\u00eb p\u00ebrdorimin e cache-it t\u00eb lidhur me deg\u00eb t\u00eb ndryshme, pavar\u00ebsisht nga n\u00ebnshkrimet.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/stages_and_images.html#%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B4%D0%B8%D0%B9\">\u2192 Dokumentacioni<\/a><\/noindex>.<\/p>\n<h3>Algoritmi i ri p\u00ebr krijimin dhe ruajtjen e fazave n\u00eb ruajtjen e fazave<\/h3>\n<p>\nN\u00ebse gjat\u00eb p\u00ebrzgjedhjes s\u00eb fazave nga cache werf nuk gjen nj\u00eb faz\u00eb t\u00eb p\u00ebrshtatshme, at\u00ebher\u00eb iniciatohet procesi i nd\u00ebrtimit t\u00eb nj\u00eb faze t\u00eb re.<\/p>\n<p>V\u00ebrejm\u00eb se disa procese (n\u00eb nj\u00eb ose m\u00eb shum\u00eb hoste) mund t\u00eb fillojn\u00eb nd\u00ebrtimin e t\u00eb nj\u00ebjt\u00ebs faz\u00eb af\u00ebrsisht n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb. Werf p\u00ebrdor algoritmin e bllokimit optimist <i>stages-storage<\/i> n\u00eb momentin e ruajtjes s\u00eb imazhit t\u00eb sapo nd\u00ebrtuar n\u00eb <i>stages-storage<\/i>. Pra, kur nd\u00ebrtimi i nj\u00eb faze t\u00eb re \u00ebsht\u00eb gati, werf bllokon <i>stages-storage<\/i> dhe ruan atje imazhin e sapo nd\u00ebrtuar vet\u00ebm n\u00ebse nuk ekziston nj\u00eb imazh i p\u00ebrshtatsh\u00ebm <i>(sipas n\u00ebnshkrimit dhe parametrave t\u00eb tjer\u00eb \u2014 shih algoritmin e ri t\u00eb p\u00ebrzgjedhjes s\u00eb fazave nga cache)<\/i>.<\/p>\n<p>Imazhi i sapo nd\u00ebrtuar do t\u00eb ket\u00eb garantuar nj\u00eb identifikues unik sipas <code>TIMESTAMP_MILLISEC<\/code> <i>(shih formatin e ri t\u00eb em\u00ebrtimit t\u00eb fazave). N\u00eb rastin kur n\u00eb<\/i>do t\u00eb gjendet nj\u00eb imazh i p\u00ebrshtatsh\u00ebm, werf do t\u00eb hedh\u00eb imazhin e sapo nd\u00ebrtuar dhe do t\u00eb p\u00ebrdor\u00eb imazhin nga cache. <i>stages-storage<\/i> N\u00eb fjal\u00eb t\u00eb tjera: procesi i par\u00eb q\u00eb p\u00ebrfundon nd\u00ebrtimin e imazhit (m\u00eb i shpejt\u00eb) do t\u00eb ket\u00eb t\u00eb drejt\u00ebn ta ruaj\u00eb at\u00eb n\u00eb stages-storage (dhe m\u00eb pas ky imazh i vet\u00ebm do t\u00eb p\u00ebrdoret p\u00ebr t\u00eb gjitha nd\u00ebrtimet). Procesi m\u00eb i ngadalsh\u00ebm i nd\u00ebrtimit nuk do t\u00eb bllokoj\u00eb asnj\u00ebher\u00eb procesin m\u00eb t\u00eb shpejt\u00eb nga ruajtja e rezultateve t\u00eb nd\u00ebrtimit t\u00eb faz\u00ebs aktuale dhe kalimi n\u00eb nd\u00ebrtimin e faz\u00ebs tjet\u00ebr.<\/p>\n<p>P\u00ebrmir\u00ebsuar performanc\u00ebn e nd\u00ebrtuesit Dockerfile<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/stages_and_images.html#%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%B8-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B4%D0%B8%D0%B9\">\u2192 Dokumentacioni<\/a><\/noindex>.<\/p>\n<h3>Aktualisht, konveji i fazave p\u00ebr imazhin e nd\u00ebrtuar nga Dockerfile p\u00ebrb\u00ebhet nga nj\u00eb faz\u00eb \u2014<\/h3>\n<p>\nAktualisht, konvejeri i fazave p\u00ebr imazhin q\u00eb po nd\u00ebrtohet nga Dockerfile p\u00ebrb\u00ebhet nga nj\u00eb faz\u00eb vet\u00ebm \u2014 <code>dockerfile<\/code>. Gjat\u00eb llogaritjes s\u00eb n\u00ebnshkrimit llogaritet somat e skedar\u00ebve <code>context<\/code>, q\u00eb do t\u00eb p\u00ebrdoren gjat\u00eb nd\u00ebrtimit. Para k\u00ebtij p\u00ebrmir\u00ebsimi, werf kalonte recursiv n\u00eb t\u00eb gjith\u00eb skedar\u00ebt dhe merrte sum\u00ebn kontrolluese, duke p\u00ebrmbledhur kontekstin dhe modin e \u00e7do skedari. Duke filluar nga versionet v1.1, werf mund t\u00eb p\u00ebrdor\u00eb sumat kontrolluese t\u00eb llogaritura, t\u00eb ruajtura n\u00eb depo Git.<\/p>\n<p>N\u00eb thelb t\u00eb algoritmit \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/docs\/git-ls-tree\">git ls-tree<\/a><\/noindex>. Algoritmi merr parasysh regjistrimet n\u00eb <code>.dockerignore<\/code> dhe kalon recursiv n\u00eb pem\u00ebn e skedar\u00ebve vet\u00ebm kur \u00ebsht\u00eb e nevojshme. K\u00ebshtu, ne u shk\u00ebput\u00ebm nga leximi i sistemit t\u00eb skedar\u00ebve, dhe var\u00ebsia e algoritmit nga madh\u00ebsia <code>context<\/code> nuk \u00ebsht\u00eb e r\u00ebnd\u00ebsishme.<\/p>\n<p>Gjithashtu, algoritmi kontrollon skedar\u00ebt e pa ndjekur dhe i merr parasysh n\u00eb sum\u00ebn kontrolluese kur \u00ebsht\u00eb e nevojshme.<\/p>\n<h3>P\u00ebrmir\u00ebsuar performanc\u00ebn gjat\u00eb importimit t\u00eb skedar\u00ebve<\/h3>\n<p>\nN\u00eb versionet werf v1.1 p\u00ebrdoret nj\u00eb server rsync gjat\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/configuration\/stapel_image\/import_directive.html\">importimit t\u00eb skedar\u00ebve nga artefaktet dhe imazhet<\/a><\/noindex>. M\u00eb par\u00eb, importimi b\u00ebhej n\u00eb dy hapa duke p\u00ebrdorur montimin e drejtoris\u00eb nga sistemi host.<\/p>\n<p>Performanca e importeve n\u00eb macOS tani nuk \u00ebsht\u00eb e kufizuar ndaj volumeve Docker, dhe importet kryhen p\u00ebr t\u00eb nj\u00ebjt\u00ebn koh\u00eb si n\u00eb Linux dhe Windows.<\/p>\n<h3>Etiketimi i bazuar n\u00eb p\u00ebrmbajtje<\/h3>\n<p>\nWerf v1.1 mb\u00ebshtet at\u00eb q\u00eb quhet etiketimi i bazuar n\u00eb p\u00ebrmbajtjen e imazhit \u2014 <i>content-based tagging<\/i>. Etiketat e imazheve t\u00eb rezultuara Docker varen nga p\u00ebrmbajtja e k\u00ebtyre imazheve.<\/p>\n<p>Kur ekzekutohet komand\u00ebn <code>werf publish --tags-by-stages-signature<\/code> ose <code>werf ci-env --tagging-strategy=stages-signature<\/code> do t\u00eb etiketohen imazhet q\u00eb publikohen me at\u00eb q\u00eb quhet <b>n\u00ebnshkrimi i fazave<\/b> t\u00eb imazhit. \u00c7do imazh etiketizohet me n\u00ebnshkrimin e vet t\u00eb fazave t\u00eb k\u00ebtij imazhi, i cili llogaritet sipas rregullave t\u00eb nj\u00ebjta si n\u00ebnshkrimi regulativ i secil\u00ebs faz\u00eb ve\u00e7mas, por \u00ebsht\u00eb nj\u00eb identifikues p\u00ebrmbledh\u00ebs i imazhit.<\/p>\n<p>N\u00ebnshkrimi i fazave t\u00eb imazhit varet nga:<\/p>\n<ol>\n<li> p\u00ebrmbajtja e k\u00ebtij imazhi;<\/li>\n<li> historiku i ndryshimeve n\u00eb Git, i cili solli k\u00ebt\u00eb p\u00ebrmbajtje.<\/li>\n<\/ol>\n<p>\nN\u00eb depo Git gjithmon\u00eb ka komitete t\u00eb jetra, t\u00eb cilat nuk ndryshojn\u00eb p\u00ebrmbajtjen e skedar\u00ebve t\u00eb imazhit. P\u00ebr shembull, komitetet vet\u00ebm me komente ose komitetet e bashkimit, ose komitetet q\u00eb ndryshojn\u00eb ato skedar\u00eb n\u00eb Git, q\u00eb nuk do t\u00eb importohen n\u00eb imazh.<\/p>\n<p>Duke p\u00ebrdorimit t\u00eb etiketimit t\u00eb bazuar n\u00eb p\u00ebrmbajtje, zgjidhen problemet e rinisjeve t\u00eb panevojshme t\u00eb pod-\u00ebve t\u00eb aplikacioneve n\u00eb Kubernetes p\u00ebr shkak t\u00eb ndryshimeve n\u00eb emrin e imazhit, ndon\u00ebse p\u00ebrmbajtja e imazhit nuk ka ndryshuar. Mbaj mend, kjo \u00ebsht\u00eb nj\u00eb nga arsyet q\u00eb pengon ruajtjen e shum\u00eb mikrosh\u00ebrbimeve t\u00eb nj\u00eb aplikacioni n\u00eb nj\u00eb depo t\u00eb vetme Git.<\/p>\n<p>Po ashtu, etiketimi i bazuar n\u00eb p\u00ebrmbajtje \u00ebsht\u00eb nj\u00eb metod\u00eb m\u00eb e besueshme p\u00ebr etiketim se etiketimi sipas deg\u00ebve Git, sepse p\u00ebrmbajtja e imazheve p\u00ebrfundimtare nuk varet nga rendi i ekzekutimit t\u00eb pipeline-\u00ebve n\u00eb sistemin CI p\u00ebr nd\u00ebrtimin e disa komiteve t\u00eb t\u00eb nj\u00ebjt\u00ebs deg\u00eb.<\/p>\n<p><b>E r\u00ebnd\u00ebsishme<\/b>: duke filluar nga ky moment <i>stages-signature<\/i> \u2014 kjo \u00ebsht\u00eb <b>strategjia e vetme e rekomanduar e etiketimit<\/b>. Ajo do t\u00eb p\u00ebrdoret si standard n\u00eb komand\u00ebn <code>werf ci-env<\/code> (n\u00ebse nuk specifikohet qart\u00eb nj\u00eb tjet\u00ebr skem\u00eb etiketimi).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/publish_process.html#%D1%82%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%BC%D1%83\">\u2192 Dokumentacioni<\/a><\/noindex>. Kjo ve\u00e7ori do t\u00eb ket\u00eb gjithashtu nj\u00eb publikim t\u00eb ve\u00e7ant\u00eb. <b>RIVLER\u00cbSUAR<\/b> (3 Prill): Artikulli me detaje <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/495112\/\">publikuar<\/a><\/noindex>.<\/p>\n<h3>Nivelet e regjistrimit<\/h3>\n<p>\nP\u00ebrdoruesi ka mund\u00ebsin\u00eb t\u00eb kontrolloj\u00eb daljen, t\u00eb caktuar nivelin e regjistrimit dhe t\u00eb punoj\u00eb me informacionin e ndihm\u00ebs. Jan\u00eb shtuar opsionet <code>--log-quiet<\/code>, <code>--log-verbose<\/code>, <code>--log-debug<\/code>.<\/p>\n<p>P\u00ebr default, dalja p\u00ebrmban minimumin e informacionit:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb mbledh\u00ebs sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/58e981b2e0c579ddde817eadc1732874.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke p\u00ebrdorur daljen e detajuar (<code>--log-verbose<\/code>) mund t\u00eb ndjek\u00ebsh se si funksionon werf:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb mbledh\u00ebs sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/487ed5dfc5df0178f7c09f8da697ceff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDalja e detajuar (<code>--log-debug<\/code>), p\u00ebrve\u00e7 informacionit t\u00eb ndihm\u00ebs nga werf, gjithashtu p\u00ebrmban log-et e bibliotekave t\u00eb p\u00ebrdorura. P\u00ebr shembull, mund t\u00eb shoh\u00ebsh se si ndodh nd\u00ebrveprimi me Docker Registry, si dhe t\u00eb regjistrosh vendet ku shpenzohet nj\u00eb sasi e konsiderueshme kohe:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb mbledh\u00ebs sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/99c1f3c2ab3803ff11fae1f2d5c9a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Planet e ardhshme<\/h2>\n<p>\n<b>Kujdes!<\/b> Mund\u00ebsit\u00eb e p\u00ebrshkruara m\u00eb posht\u00eb me sh\u00ebnimin <b>v1.1<\/b> do t\u00eb b\u00ebhen t\u00eb disponueshme q\u00eb n\u00eb k\u00ebt\u00eb version, shumica e tyre \u2014 gjat\u00eb k\u00ebsaj periudhe. P\u00ebrmir\u00ebsimet do t\u00eb vijn\u00eb p\u00ebrmes azhurnimeve automatikisht <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">n\u00eb p\u00ebrdorim multiwerf<\/a><\/noindex>. K\u00ebto mund\u00ebsi nuk prekin pjes\u00ebn stabile t\u00eb funksioneve v1.1, dalja e tyre nuk do t\u00eb k\u00ebrkoj\u00eb nd\u00ebrhyrje manuale nga p\u00ebrdoruesi n\u00eb konfigurimet ekzistuese.<\/p>\n<h3>Mb\u00ebshtetje e plot\u00eb p\u00ebr realizime t\u00eb ndryshme t\u00eb Docker Registry (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2199\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi \u2014 p\u00ebrdoruesi duhet t\u00eb p\u00ebrdor\u00eb realizimin e rastit pa kufizime gjat\u00eb p\u00ebrdorimit t\u00eb werf. <\/p>\n<p>Aktualisht kemi identifikuar k\u00ebt\u00eb grup zgjidhjesh, p\u00ebr t\u00eb cilat pritet t\u00eb garantohet mb\u00ebshtetje e plot\u00eb:<\/p>\n<ul>\n<li> Default (library\/registry)*,<\/li>\n<li> AWS ECR,<\/li>\n<li> Azure*,<\/li>\n<li> Docker Hub,<\/li>\n<li> GCR*,<\/li>\n<li> GitHub Packages,<\/li>\n<li> GitLab Registry*,<\/li>\n<li> Harbor*,<\/li>\n<li> Quay.<\/li>\n<\/ul>\n<p>\nMe yll, sh\u00ebnohen zgjidhjet q\u00eb aktualisht mb\u00ebshteten plot\u00ebsisht nga werf. P\u00ebr t\u00eb tjer\u00ebt ka mb\u00ebshtetje, por me kufizime.<\/p>\n<p>Mund t\u00eb dallohen dy problemet kryesore:<\/p>\n<ul>\n<li> Disa zgjidhje nuk mb\u00ebshtesin fshirjen e etiketave duke p\u00ebrdorur API-n\u00eb e Docker Registry, e cila nuk u lejon p\u00ebrdoruesve t\u00eb p\u00ebrdorin pastrimin automatik, t\u00eb implementuar n\u00eb werf. Kjo \u00ebsht\u00eb e v\u00ebrtet\u00eb p\u00ebr AWS ECR, Docker Hub dhe GitHub Packages.<\/li>\n<li> Disa dhe zgjidhje t\u00eb tjera nuk mb\u00ebshtesin, t\u00eb ashtuquajturat, repository t\u00eb nxitura (Docker Hub, GitHub Packages dhe Quay) ose mb\u00ebshtesin, por p\u00ebrdoruesi duhet t'i krijoj\u00eb ato manualisht, duke p\u00ebrdorur UI ose API (AWS ECR).<\/li>\n<\/ul>\n<p>\nK\u00ebto dhe \u00e7\u00ebshtje t\u00eb tjera ne synojm\u00eb t'i zgjidhim duke p\u00ebrdorur API-t\u00eb native t\u00eb zgjidhjeve. Ky projekt p\u00ebrfshin gjithashtu mbulimin me teste t\u00eb ciklit t\u00eb plot\u00eb t\u00eb funksionimit t\u00eb werf p\u00ebr secil\u00ebn prej tyre.<\/p>\n<h3>Nd\u00ebrtime t\u00eb shp\u00ebrndara t\u00eb imazheve (\u2191)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2 v1.1 (prioriteti p\u00ebr zbatimin e k\u00ebtij funksionaliteti \u00ebsht\u00eb rritur)<\/i><\/li>\n<li> <i>Koh\u00ebt: mars-prill mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1614\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nAktualisht, werf v1.0 dhe v1.1 mund t\u00eb p\u00ebrdoren vet\u00ebm n\u00eb nj\u00eb host t\u00eb dedikuar p\u00ebr operacionet e nd\u00ebrtimit dhe publikimit t\u00eb imazheve dhe p\u00ebr deploy-in e aplikacionit n\u00eb Kubernetes.<\/p>\n<p>P\u00ebr t\u00eb hapur mund\u00ebsit\u00eb e pun\u00ebs shp\u00ebrndara t\u00eb werf, kur nd\u00ebrtimi dhe deploy-i i aplikacioneve n\u00eb Kubernetes nisin n\u00eb disa hoste t\u00eb rast\u00ebsishme dhe k\u00ebto hoste nuk ruajn\u00eb gjendjen e tyre mes nd\u00ebrtimesh (runner t\u00eb p\u00ebrkohsh\u00ebm), k\u00ebrkohet q\u00eb werf t\u00eb implementoj\u00eb mund\u00ebsin\u00eb e p\u00ebrdorimit t\u00eb Docker Registry si nj\u00eb depo t\u00eb fazave.<\/p>\n<p>M\u00eb par\u00eb, kur projekti werf quhej ende dapp, kishte nj\u00eb mund\u00ebsi t\u00eb till\u00eb. Megjithat\u00eb, na u desh t\u00eb p\u00ebrballeshim me disa probleme q\u00eb duhen marr\u00eb parasysh gjat\u00eb implementimit t\u00eb k\u00ebsaj funksionaliteti n\u00eb werf.<\/p>\n<p><b>Sh\u00ebnim<\/b>. Ky funksionalitet nuk parashikon pun\u00ebn e nd\u00ebrtuesit brenda pod-\u00ebve Kubernetes, pasi p\u00ebr k\u00ebt\u00eb duhet t\u00eb hiqet var\u00ebsia nga serveri lokal Docker (n\u00eb pod-in Kubernetes nuk ka qasje n\u00eb serverin lokal Docker, sepse procesi vet\u00eb \u00ebsht\u00eb i nisur n\u00eb nj\u00eb kontejner, dhe punimi me serverin Docker mbi rrjetin werf nuk mb\u00ebshtetet dhe nuk do t\u00eb mb\u00ebshtetet). Mb\u00ebshtetje p\u00ebr pun\u00eb n\u00eb Kubernetes do t\u00eb realizohet ve\u00e7mas.<\/p>\n<h3>Mb\u00ebshtetje zyrtare p\u00ebr GitHub Actions (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2210\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nP\u00ebrfshin dokumentacionin e werf (seksionet <i>reference<\/i> dhe <i>guide<\/i>), si dhe GitHub Action zyrtare p\u00ebr pun\u00ebn me werf.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, kjo do t\u00eb lejoj\u00eb q\u00eb werf t\u00eb punoj\u00eb n\u00eb runner\u00eb efemer\u00eb.<\/p>\n<p>Mekanika e nd\u00ebrveprimit t\u00eb p\u00ebrdoruesit me sistemin CI do t\u00eb bazohet n\u00eb vendosjen e etiketave n\u00eb pull-request-et p\u00ebr t\u00eb iniciuar veprime t\u00eb caktuara n\u00eb nd\u00ebrtimin\/d\u00ebshimin e aplikacionit.<\/p>\n<h3>Zhvillimi lokal dhe implementimi i aplikacioneve me werf (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Koh\u00ebt: janar-shkurt prill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1940\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi kryesor \u00ebsht\u00eb t\u00eb arrihet nj\u00eb konfigurim i unifikuar p\u00ebr implementimin e aplikacioneve si lokal, ashtu edhe n\u00eb prodhim, pa veprime komplekse, \"nga kutia\".<\/p>\n<p>Werf k\u00ebrkon gjithashtu nj\u00eb m\u00ebnyr\u00eb pune n\u00eb t\u00eb cil\u00ebn \u00ebsht\u00eb e leht\u00eb t\u00eb redaktohet kodi i aplikacionit dhe t\u00eb merret menj\u00ebher\u00eb feedback nga aplikacioni n\u00eb pun\u00eb p\u00ebr debugin.<\/p>\n<h3>Algoritmi i ri i pastrimit (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Koh\u00ebt: prill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2212\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nN\u00eb versionin aktual t\u00eb werf v1.1, procedura <code>cleanup<\/code> nuk parashikon pastrimin e imazheve p\u00ebr skem\u00ebn e etiketimit bazuar n\u00eb p\u00ebrmbajtje (content-based tagging) - k\u00ebto imazhe do t\u00eb grumbullohen.<\/p>\n<p>Po ashtu, versioni aktual i werf (v1.0 dhe v1.1) p\u00ebrdor politika t\u00eb ndryshme pastrimi p\u00ebr imazhet e publikuara sipas skemave t\u00eb etiketimit: dega Git, etiketa Git ose komenti Git.<\/p>\n<p>\u00cbsht\u00eb gjetur nj\u00eb algorit\u00ebm i ri t\u00eb unifikuar p\u00ebr t\u00eb gjitha skemat e etiketimit p\u00ebr pastrimin e imazheve bazuar n\u00eb historin\u00eb e komiteve n\u00eb Git:<\/p>\n<ul>\n<li> T\u00eb ruhen jo m\u00eb shum\u00eb se N1 imazhe, t\u00eb lidhura me N2 komitetet e fundit p\u00ebr secil\u00ebn nga git HEAD (dega dhe etiketat).<\/li>\n<li> T\u00eb ruhen jo m\u00eb shum\u00eb se N1 imazhe-faza, t\u00eb lidhura me N2 komitetet e fundit p\u00ebr secil\u00ebn nga git HEAD (dega dhe etiketat).<\/li>\n<li> T\u00eb ruhet t\u00eb gjitha imazhet q\u00eb p\u00ebrdoren n\u00eb ndonj\u00eb burim t\u00eb klasterit Kubernetes (skanohet t\u00eb gjith\u00eb kube-konteksteve t\u00eb skedarit t\u00eb konfigurimit dhe namespace-t\u00eb; \u00ebsht\u00eb e mundur t\u00eb kufizohet kjo sjellje me opsione speciale).<\/li>\n<li> T\u00eb ruhen t\u00eb gjitha imazhet q\u00eb p\u00ebrdoren n\u00eb manifestet e konfigurimit t\u00eb burimeve t\u00eb ruajtura n\u00eb Helm-releaset.<\/li>\n<li> Nj\u00eb imazh mund t\u00eb fshihet, n\u00ebse nuk \u00ebsht\u00eb lidhur me asnj\u00eb HEAD nga git (p\u00ebr shembull, sepse ai HEAD p\u00ebrkat\u00ebs \u00ebsht\u00eb fshir\u00eb) dhe nuk p\u00ebrdoret n\u00eb asnj\u00eb nga manifestet n\u00eb klasterin Kubernetes dhe n\u00eb releaset Helm.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nd\u00ebrtime paralele t\u00eb imazheve (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Koh\u00ebt: janar-shkurt prill*<\/i><\/li>\n<\/ul>\n<p>\nVersioni aktual i werf nd\u00ebrt\u00e7on imazhet dhe artefaktet e p\u00ebrshkruara n\u00eb <code>werf.yaml<\/code>, radhazi. Nevojitet paralelizimi i procesit t\u00eb nd\u00ebrtimit t\u00eb fazave dhe artefakteve t\u00eb pavarura, si dhe sigurimi i nj\u00eb daljeje t\u00eb leht\u00eb dhe informative.<\/p>\n<p><i>* Sh\u00ebnim: data \u00ebsht\u00eb shtyr\u00eb p\u00ebr shkak t\u00eb rritjes s\u00eb p\u00ebrpar\u00ebsis\u00eb p\u00ebr implementimin e nd\u00ebrtimit shp\u00ebrndar\u00eb, i cili do t\u00eb shtoj\u00eb m\u00eb shum\u00eb mund\u00ebsi p\u00ebr shkall\u00ebzimin horizontal, si dhe p\u00ebrdorimin e werf me GitHub Actions. Nd\u00ebrtime paralele p\u00ebrb\u00ebn hapin e ardhsh\u00ebm t\u00eb optimizimi, q\u00eb ofron shkall\u00ebzim vertical gjat\u00eb nd\u00ebrtimit t\u00eb nj\u00eb projekti.<\/i><\/p>\n<h3>Kalimi n\u00eb Helm 3 (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Koh\u00ebt: shkurt-mars maj*<\/i><\/li>\n<\/ul>\n<p>\nP\u00ebrfshin kalimin n\u00eb nj\u00eb baz\u00eb t\u00eb re kodu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/475722\/\">Helm 3<\/a><\/noindex> dhe nj\u00eb m\u00ebnyr\u00eb t\u00eb provuar dhe t\u00eb leht\u00eb p\u00ebr migrimin e instalimeve ekzistuese.<\/p>\n<p><i>* Sh\u00ebnim: kalimi n\u00eb Helm 3 nuk do t\u00eb sjell\u00eb mund\u00ebsi t\u00eb r\u00ebnd\u00ebsishme n\u00eb werf, pasi t\u00eb gjitha karakteristikat kryesore t\u00eb Helm 3 (3-way-merge dhe mungesa e tiller) tashm\u00eb jan\u00eb implementuar n\u00eb werf. P\u00ebr m\u00eb tep\u00ebr, werf ka <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/differences_with_helm.html\">funkcione shtes\u00eb<\/a><\/noindex> p\u00ebrve\u00e7 atyre t\u00eb p\u00ebrmendura. Megjithat\u00eb, ky kalim mbetet n\u00eb planet tona dhe do t\u00eb realizohet.<\/i><\/p>\n<h3>Jsonnet p\u00ebr p\u00ebrshkrimin e konfiguracionit Kubernetes (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Afatet: janar-shkurt prill-maj<\/i><\/li>\n<\/ul>\n<p>\nWerf do t\u00eb mb\u00ebshtes\u00eb p\u00ebrshkrimin e konfiguracionit p\u00ebr Kubernetes n\u00eb formatin Jsonnet. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, werf do t\u00eb mbetet i kompatibilsh\u00ebm me Helm dhe do t\u00eb ket\u00eb mund\u00ebsi p\u00ebrzgjedhjeje t\u00eb formatit t\u00eb p\u00ebrshkrimit.<\/p>\n<p>Arsyeja \u00ebsht\u00eb fakti q\u00eb shabllonat e gjuh\u00ebs Go, sipas vler\u00ebsimit t\u00eb shum\u00eb njer\u00ebzve, kan\u00eb nj\u00eb prag t\u00eb lart\u00eb t\u00eb hyrjes dhe kuptueshm\u00ebria e kodit t\u00eb k\u00ebtyre shablloneve gjithashtu vuan.<\/p>\n<p>Po ashtu, po shqyrtohet mund\u00ebsia e implementimit t\u00eb sistemeve t\u00eb tjera t\u00eb p\u00ebrshkrimit t\u00eb konfiguracionit Kubernetes (p.sh., Kustomize).<\/p>\n<h3>Puna brenda Kubernetes (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Afatet: prill-maj maj-qershor<\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi: t\u00eb sigurohet nd\u00ebrtimi i imazheve dhe dor\u00ebzimi i aplikacioneve duke p\u00ebrdorur runner-at n\u00eb Kubernetes. Pra, nd\u00ebrtimi i imazheve t\u00eb reja, publikimi, pastrimi dhe deploy mund t\u00eb ndodhin drejtp\u00ebrdrejt nga pod-et Kubernetes.<\/p>\n<p>P\u00ebr t\u00eb realizuar k\u00ebt\u00eb mund\u00ebsi, s\u00eb pari k\u00ebrkohet mund\u00ebsia e ndarjes s\u00eb nd\u00ebrtimit t\u00eb imazheve <i>(shih pik\u00ebn e m\u00ebsip\u00ebrme)<\/i>.<\/p>\n<p>Po ashtu k\u00ebrkohet mb\u00ebshtetje p\u00ebr modin e funksionimit t\u00eb nd\u00ebrtuesit pa server Docker (pra, nd\u00ebrtimi i ngjash\u00ebm me Kaniko ose nd\u00ebrtimi n\u00eb userspace).<\/p>\n<p>Werf do t\u00eb mb\u00ebshtes\u00eb nd\u00ebrtimin n\u00eb Kubernetes jo vet\u00ebm me Dockerfile, por edhe me nd\u00ebrtuesin e tij Stapel me rikonstruime inkrementale dhe Ansible.<\/p>\n<h2>Nj\u00eb hap drejt zhvillimit t\u00eb hapur<\/h2>\n<p>\nNe e duam komunitetin ton\u00eb (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/werf_ru\">Telegram<\/a><\/noindex>) dhe d\u00ebshirojm\u00eb q\u00eb gjithnj\u00eb e m\u00eb shum\u00eb njer\u00ebz t\u00eb ndihmojn\u00eb n\u00eb p\u00ebrmir\u00ebsimin e werf, t\u00eb kuptojn\u00eb n\u00eb cilin drejtim po shkojm\u00eb dhe t\u00eb marrin pjes\u00eb n\u00eb zhvillim.<\/p>\n<p>M\u00eb s\u00eb fundmi, u vendos t\u00eb kalojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/help.github.com\/en\/github\/managing-your-work-on-github\/about-project-boards\">tabelat e projekteve GitHub<\/a><\/noindex> p\u00ebr t\u00eb hapur procesin e pun\u00ebs s\u00eb ekipit ton\u00eb. Tani mund t\u00eb shihni planet e af\u00ebrta, si dhe pun\u00ebt aktuale n\u00eb drejtimet e m\u00ebposhtme:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/9\">Dokumentacioni dhe Site<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/7\">Testing<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/6\">Bugs dhe UX t\u00eb k\u00ebqija<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/5\">1.1<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\n\u00cbsht\u00eb b\u00ebr\u00eb nj\u00eb pun\u00eb e madhe me issues:<\/p>\n<ul>\n<li> Jan\u00eb fshir\u00eb ato q\u00eb nuk jan\u00eb relevante.<\/li>\n<li> Ato ekzistuese jan\u00eb sjell\u00eb n\u00eb nj\u00eb format t\u00eb r\u00ebnd\u00ebsish\u00ebm, me sasin\u00eb e duhur t\u00eb detajeve dhe holl\u00ebsive.<\/li>\n<li> Jan\u00eb shtuar issues t\u00eb reja me ide dhe propozime.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Si t\u00eb aktivizoni versionin v1.1<\/h2>\n<p>\nVersioni \u00ebsht\u00eb n\u00eb dispozicion n\u00eb k\u00ebt\u00eb moment n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalin 1.1 ea<\/a><\/noindex> (n\u00eb kanalet <i>stable<\/i> dhe <i>rock-solid<\/i> l\u00ebshimet do t\u00eb shfaqen nd\u00ebrsa stabilizohen, megjithat\u00eb <i>ea<\/i> ai vet\u00eb \u00ebsht\u00eb tashm\u00eb mjaft stabil p\u00ebr t'u p\u00ebrdorur, pasi ka kaluar p\u00ebrmes kanaleve <i>alpha<\/i> dhe <i>beta<\/i>). Aktivizohet <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">n\u00ebp\u00ebrmjet multiwerf<\/a><\/noindex> n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb:<\/p>\n<pre><code class=\"bash\">source $(multiwerf use 1.1 ea)\nwerf COMMAND ...<\/code><\/pre>\n<p><\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nArkitektura e re e ruajtjes s\u00eb fazave dhe optimizimi i funksionimit t\u00eb nd\u00ebrtuesit p\u00ebr Stapel dhe nd\u00ebrtuesit Dockerfile hap mund\u00ebsi p\u00ebr t\u00eb realizuar nd\u00ebrtimet e shp\u00ebrndara dhe paralel n\u00eb werf. K\u00ebto mund\u00ebsi do t\u00eb shfaqen s\u00eb shpejti n\u00eb t\u00eb nj\u00ebjtin version v1.1 dhe do t\u00eb jen\u00eb automatikisht t\u00eb disponueshme p\u00ebrmes mekanizmit t\u00eb azhurnimeve automatike (p\u00ebr p\u00ebrdoruesit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">multiwerf<\/a><\/noindex>). <\/p>\n<p>N\u00eb k\u00ebt\u00eb version \u00ebsht\u00eb shtuar strategjia e etiketimit sipas p\u00ebrmbajtjes s\u00eb imazheve \u2014 <i>content-based tagging<\/i>, \u2014 e cila \u00ebsht\u00eb b\u00ebr\u00eb strategjia e paracaktuar. Gjithashtu, logu i komandeve kryesore \u00ebsht\u00eb ristrukturuar: <code>werf build<\/code>, <code>werf publish<\/code>, <code>werf deploy<\/code>, <code>werf dismiss<\/code>, <code>werf cleanup<\/code>.<\/p>\n<p>Hapi tjet\u00ebr i r\u00ebnd\u00ebsish\u00ebm do t\u00eb jet\u00eb shtimi i nd\u00ebrtimeve t\u00eb shp\u00ebrndara. Nd\u00ebrtimet e shp\u00ebrndara q\u00eb nga versioni v1.0 jan\u00eb b\u00ebr\u00eb nj\u00eb detyr\u00eb m\u00eb prioritare se nd\u00ebrtimet paralel, sepse sjellin m\u00eb shum\u00eb vler\u00eb p\u00ebr werf: p\u00ebrmir\u00ebsimi vertical i nd\u00ebrtuesve dhe mb\u00ebshtetje p\u00ebr nd\u00ebrtuesit efemer\u00eb n\u00eb sisteme t\u00eb ndryshme CI\/CD, si dhe mund\u00ebsia p\u00ebr t\u00eb b\u00ebr\u00eb mb\u00ebshtetje zyrtare p\u00ebr GitHub Actions. Prandaj, afatet p\u00ebr realizimin e nd\u00ebrtimeve paralel jan\u00eb shtyr\u00eb. Megjithat\u00eb, ne po punojm\u00eb p\u00ebr t\u00eb realizuar t\u00eb dy mund\u00ebsit\u00eb sa m\u00eb shpejt.<\/p>\n<p>Q\u00ebndroni t\u00eb informuar p\u00ebr novitet! Dhe mos harroni t\u00eb na vizitoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, p\u00ebr t\u00eb krijuar nj\u00eb issue, p\u00ebr t\u00eb gjetur nj\u00eb ekzistuese dhe p\u00ebr t\u00eb vendosur nj\u00eb plus, p\u00ebr t\u00eb krijuar nj\u00eb PR ose thjesht p\u00ebr t\u00eb ndjekur zhvillimin e projektit.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">Paraqesim werf 1.0 stabile: \u00e7far\u00eb ka t\u00eb b\u00ebj\u00eb me GitOps, statusi dhe planet<\/a><\/noindex>\u00bb<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (p\u00ebrmbledhje dhe video k\u00ebrkese)<\/a><\/noindex>\u00bb;<\/li>\n<li> Cikli i sh\u00ebnimeve mbi risit\u00eb n\u00eb werf:\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/476646\/\">3-way merge n\u00eb werf: shp\u00ebrndarja n\u00eb Kubernetes me Helm \"n\u00eb steroide\"<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468049\/\">P\u00ebrdorimi i werf p\u00ebr shp\u00ebrndarjen e chart-eve komplekse t\u00eb Helm<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">P\u00ebrkrahja e monorepo dhe multirepo n\u00eb werf dhe \u00e7far\u00eb lidhje ka me Docker Registry<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/463613\/\">Tani \u00ebsht\u00eb e mundur t\u00eb nd\u00ebrtosh imazhe Docker n\u00eb werf edhe p\u00ebrmes Dockerfile standard<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/493170\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>werf \u2014 \u043d\u0430\u0448\u0430 GitOps CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b\u0438, \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438 v1.0 \u0437\u043d\u0430\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 werf \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043b\u0438\u0437 v1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0437\u0430\u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 werf. \u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":76765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-76764","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u043b\u0438\u0437 werf 1.1: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u043f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-04T11:42:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-04T11:42:24+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Dalja werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtues sot dhe planet p\u00ebr t\u00eb ardhmen | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u043b\u0438\u0437 werf 1.1: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u043f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-04T11:42:24+00:00","article:modified_time":"2020-04-04T11:42:24+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"76764","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:30:23","updated":"2022-09-28 14:39:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/76764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=76764"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/76764\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/76765"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=76764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=76764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=76764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}