werf 1.1 saki: haɓakawa ga mai gini a yau da tsare-tsaren nan gaba

werf 1.1 saki: haɓakawa ga mai gini a yau da tsare-tsaren nan gaba

wuf shine tushen tushen mu na GitOps CLI mai amfani don ginawa da isar da aikace-aikace zuwa Kubernetes. Kamar yadda akayi alkawari, Zazzage sigar v1.0 alamar farkon ƙara sabbin abubuwa zuwa werf da sake fasalin hanyoyin gargajiya. Yanzu mun yi farin cikin gabatar da sakin v1.1, wanda babban mataki ne na ci gaba da tushe na gaba mai tarawa wuf. A halin yanzu akwai sigar a ciki channel 1.1 a.

Tushen sakin shine sabon tsarin gine-ginen ajiya na mataki da haɓaka aikin duka masu tarawa (na Stapel da Dockerfile). Sabuwar tsarin gine-ginen ajiya yana buɗe yiwuwar aiwatar da majalissar da aka rarraba daga runduna da yawa da kuma majalissar layi ɗaya a kan runduna ɗaya.

Ingantaccen aiki ya haɗa da kawar da ƙididdiga marasa mahimmanci a matakin ƙididdige sa hannun mataki da canza hanyoyin ƙididdige ƙididdigar fayil zuwa mafi inganci. Wannan haɓakawa yana rage matsakaicin lokacin gina aikin ta amfani da werf. Kuma ginawa mara aiki, lokacin da duk matakai suka wanzu a cikin cache matakai-ajiye, yanzu suna da sauri sosai. A mafi yawan lokuta, sake kunna ginin zai ɗauki ƙasa da daƙiƙa 1! Wannan kuma ya shafi hanyoyin tabbatar da matakai a cikin aiwatar da ayyukan ƙungiyoyi. werf deploy и werf run.

Hakanan a cikin wannan sakin, dabarar yiwa hotuna alama ta abun ciki ta bayyana - tushen abun ciki tagging, wanda yanzu aka kunna ta tsohuwa kuma shine kawai shawarar da aka ba da shawarar.

Bari mu dubi mahimman sabbin abubuwa a cikin werf v1.1, kuma a lokaci guda gaya muku game da tsare-tsare na gaba.

Menene ya canza a werf v1.1?

Sabon tsarin suna na mataki da algorithm don zaɓar matakai daga cache

Sabon tsarin tsara sunan mataki. Yanzu kowane ginin mataki yana haifar da suna na musamman, wanda ya ƙunshi sassa 2: sa hannu (kamar yadda yake a cikin v1.0) tare da mai gano ɗan lokaci na musamman.

Misali, cikakken sunan hoton mataki na iya yin kama da haka:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

...ko gaba daya:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

A nan:

  • SIGNATURE sa hannun mataki ne, wanda ke wakiltar mai gano abun cikin mataki kuma ya dogara da tarihin gyare-gyare a cikin Git wanda ya haifar da wannan abun ciki;
  • TIMESTAMP_MILLISEC tabbataccen mai gano hoto ne na musamman wanda aka samar a lokacin da aka gina sabon hoto.

Algorithm don zaɓar matakai daga cache ya dogara ne akan bincika alaƙar Git:

  1. Werf yana lissafin sa hannun wani mataki.
  2. В matakai-ajiye Akwai yuwuwar samun matakai da yawa don sa hannun da aka bayar. Werf yana zaɓar duk matakan da suka dace da sa hannu.
  3. Idan matakin na yanzu yana da alaƙa da Git (git-archive, matakin al'ada tare da facin Git: install, beforeSetup, setup; ko git-latest-patch), sannan werf yana zaɓar waɗancan matakan ne kawai waɗanda ke da alaƙa da aikatawa wanda shine kakan aikin na yanzu (wanda ake kiran ginin).
  4. Daga sauran matakan da suka dace, an zaɓi ɗaya - mafi tsufa ta kwanan wata halitta.

Mataki na rassan Git daban-daban na iya samun sa hannu iri ɗaya. Amma werf zai hana cache da ke da alaƙa da rassa daban-daban yin amfani da su tsakanin waɗannan rassan, koda kuwa sa hannu ya yi daidai.

→ Takardu.

Sabuwar algorithm don ƙirƙira da adana matakai a cikin ajiya mataki

Idan, lokacin zabar matakai daga cache, werf bai sami matakin da ya dace ba, to, an fara aiwatar da tsarin haɗa wani sabon mataki.

Lura cewa matakai da yawa (a kan ɗaya ko fiye da runduna) na iya fara gina mataki ɗaya a kusan lokaci guda. Werf yana amfani da ingantaccen toshe algorithm matakai-ajiye a lokacin ajiye sabon hoton da aka tattara a ciki matakai-ajiye. Ta wannan hanyar, lokacin da sabon matakin ginin ya shirya, toshe shinge matakai-ajiye kuma yana adana sabon hoton da aka tattara a wurin kawai idan hoton da ya dace ba ya wanzu a wurin (ta hanyar sa hannu da sauran sigogi - duba sabon algorithm don zaɓar matakai daga cache).

Hoton da aka haɗa sabo yana da tabbacin samun na musamman mai ganowa ta TIMESTAMP_MILLISEC (duba sabon tsarin suna). Idan in matakai-ajiye za a sami hoton da ya dace, werf zai watsar da sabon hoton da aka haɗa kuma zai yi amfani da hoton daga cache.

A wasu kalmomi: tsari na farko da za a gama gina hoton (mafi sauri) zai sami 'yancin adana shi a cikin matakai-ajiya (sannan kuma wannan hoton guda ɗaya ne wanda za a yi amfani da shi don duk ginin). Tsarin ginin jinkirin ba zai taɓa toshe tsari mai sauri ba daga adana sakamakon ginin matakin yanzu da ci gaba zuwa gini na gaba.

→ Takardu.

Inganta aikin maginin Dockerfile

A halin yanzu, bututun matakai don hoton da aka gina daga Dockerfile ya ƙunshi mataki ɗaya - dockerfile. Lokacin ƙididdige sa hannun, ana ƙididdige adadin adadin fayilolin context, wanda za a yi amfani da shi yayin taro. Kafin wannan haɓakawa, werf a kai a kai ya bi duk fayiloli kuma ya sami lissafin kuɗi ta hanyar taƙaita mahallin da yanayin kowane fayil. Farawa da v1.1, werf na iya amfani da ƙididdige ƙididdigan rajistan ayyukan da aka adana a cikin ma'ajin Git.

Algorithm ya dogara ne akan git ls-itace. Algorithm yayi la'akari da rikodin a cikin .dockerignore kuma yana keta bishiyar fayil akai-akai kawai idan ya cancanta. Don haka, mun rabu da karatun tsarin fayil, da kuma dogaro da algorithm akan girman context ba shi da mahimmanci.

Algorithm din yana bincika fayilolin da ba a bi su ba kuma, idan ya cancanta, yana ɗaukar su cikin lissafin lissafin.

Ingantattun ayyuka lokacin shigo da fayiloli

Sifofin werf v1.1 suna amfani da sabar rsync lokacin shigo da fayiloli daga kayan tarihi da hotuna. A baya can, an yi shigo da shi cikin matakai biyu ta amfani da dutsen shugabanci daga tsarin runduna.

Ayyukan shigo da kayan aiki akan macOS baya iyakancewa ta Docker juzu'i, kuma ana shigo da su cikakke cikin adadin lokaci ɗaya da Linux da Windows.

Tagging na tushen abun ciki

Werf v1.1 yana goyan bayan abin da ake kira tagging ta abun cikin hoto - tushen abun ciki tagging. Alamomin Hotunan Docker da aka samu sun dogara da abubuwan da ke cikin waɗannan hotuna.

Lokacin gudanar da umarni werf publish --tags-by-stages-signature ko werf ci-env --tagging-strategy=stages-signature hotunan da aka buga na abin da ake kira sa hannun mataki hoto. Kowane hoto yana da alamar sa hannun sa na matakan wannan hoton, wanda aka ƙididdige shi bisa ka'idoji iri ɗaya da sa hannun kowane mataki daban, amma babban mai gano hoton.

Sa hannun matakan hoton ya dogara da:

  1. abubuwan da ke cikin wannan hoton;
  2. tarihin canje-canjen Git wanda ya haifar da wannan abun ciki.

Ma'ajiyar Git koyaushe tana da ayyukan da ba su canza abin da ke cikin fayilolin hoton ba. Misali, aikatawa tare da sharhi kawai ko haɗin kai, ko aikatawa waɗanda ke canza waɗannan fayilolin a cikin Git waɗanda ba za a shigo da su cikin hoton ba.

Lokacin amfani da alamar abun ciki, matsalolin sake kunna fayilolin da ba dole ba a cikin Kubernetes saboda canje-canje a cikin sunan hoton ana warware su, koda abubuwan da ke cikin hoton basu canza ba. Af, wannan yana ɗaya daga cikin dalilan da ke hana adana yawancin microservices na aikace-aikacen guda ɗaya a cikin ma'ajin Git guda ɗaya.

Hakanan, tushen abun ciki shine mafi amintaccen hanyar sanya alamar alama fiye da yin alama akan rassan Git, saboda abubuwan da ke cikin hotunan da aka samo baya dogara da tsarin da ake aiwatar da bututun mai a cikin tsarin CI don haɗa ayyukan da yawa na reshe ɗaya.

Muhimmanci: farawa daga yanzu matakai-sa hannu Shin dabarar tagging kawai shawarar da aka ba da shawarar. Za a yi amfani da shi ta tsohuwa a cikin umarnin werf ci-env (sai dai idan ba a fayyace wani tsari na tagging na daban ba).

→ Takardu. Hakanan za'a keɓance wani littafi na daban ga wannan fasalin. UPDATED (Afrilu 3): Labari mai cikakken bayani aka buga.

Matakan shiga

Mai amfani yanzu yana da damar sarrafa fitarwa, saita matakin shiga kuma yayi aiki tare da cire bayanai. An ƙara zaɓuɓɓuka --log-quiet, --log-verbose, --log-debug.

Ta hanyar tsoho, fitarwar ta ƙunshi ƙaramin bayanai:

werf 1.1 saki: haɓakawa ga mai gini a yau da tsare-tsaren nan gaba

Lokacin amfani da fitowar magana (--log-verboseKuna iya ganin yadda werf yake aiki:

werf 1.1 saki: haɓakawa ga mai gini a yau da tsare-tsaren nan gaba

Cikakken fitarwa (--log-debug), ban da bayanan gyara kuskuren werf, kuma ya ƙunshi rajistan ayyukan dakunan karatu da aka yi amfani da su. Misali, zaku iya ganin yadda hulɗa tare da Docker Registry ke faruwa, da kuma yin rikodin wuraren da aka kashe lokaci mai yawa:

werf 1.1 saki: haɓakawa ga mai gini a yau da tsare-tsaren nan gaba

Karin tsare-tsaren

Tsanaki Zaɓuɓɓukan da aka kwatanta a ƙasa suna da alama v1.1 za su zama samuwa a cikin wannan sigar, da yawa daga cikinsu a nan gaba. Sabuntawa zai zo ta hanyar sabuntawa ta atomatik lokacin amfani da multiwerf. Waɗannan fasalulluka ba sa shafar tsayayyen ɓangaren ayyuka v1.1; bayyanar su ba za ta buƙaci sa hannun mai amfani da hannu ba a cikin saitunan da ke akwai.

Cikakken tallafi don aiwatar da rajistar Docker daban-daban (NEW)

  • Shafin: v1.1
  • Kwanaki: Maris
  • Issue

Manufar ita ce mai amfani ya yi amfani da aiwatar da al'ada ba tare da hani ba lokacin amfani da werf.

A halin yanzu, mun gano saitin hanyoyin mafita waɗanda za mu ba da garantin cikakken tallafi:

  • Default (laburare/rejista)*,
  • Farashin ECR
  • Azure*,
  • Docker Hub
  • GCR*,
  • Fakitin GitHub
  • GitLab Registry*,
  • Harbor*,
  • Kwai

Maganganun da a halin yanzu ke da cikakken goyan bayan werf ana yiwa alama alama. Ga wasu akwai tallafi, amma tare da iyakancewa.

Ana iya gano manyan matsaloli guda biyu:

  • Wasu mafita ba sa goyan bayan cire alamar ta amfani da Docker Registry API, suna hana masu amfani yin amfani da tsaftar atomatik na werf. Wannan gaskiya ne ga AWS ECR, Docker Hub, da Fakitin GitHub.
  • Wasu mafita ba sa goyan bayan abin da ake kira wuraren ajiyar gida (Docker Hub, GitHub Packages da Quay) ko yi, amma mai amfani dole ne ya ƙirƙira su da hannu ta amfani da UI ko API (AWS ECR).

Za mu magance waɗannan da sauran matsalolin ta amfani da APIs na asali na mafita. Wannan aikin kuma ya haɗa da rufe cikakken tsarin aikin werf tare da gwaje-gwaje ga kowane ɗayansu.

Gina hoto da aka rarraba (↑)

  • Shafin: v1.2 v1.1 (An ƙara fifiko don aiwatar da wannan fasalin)
  • Kwanaki: Maris-Afrilu Maris
  • Issue

A halin yanzu, werf v1.0 da v1.1 za a iya amfani da su kawai a kan kwazo ɗaya mai masauki don ayyukan gini da buga hotuna da tura aikace-aikacen zuwa Kubernetes.

Don buɗe damar da za a iya rarraba aikin werf, lokacin da aka ƙaddamar da ginawa da ƙaddamar da aikace-aikacen a Kubernetes a kan runduna masu sabani da yawa kuma waɗannan runduna ba su ceci jihar su ba tsakanin ginin (masu gudu na wucin gadi), ana buƙatar werf don aiwatar da ikon yin amfani da su. Docker Registry azaman kantin mataki.

A baya can, lokacin da ake kira aikin werf dapp, yana da irin wannan damar. Duk da haka, mun ci karo da al'amurra da yawa waɗanda ke buƙatar la'akari yayin aiwatar da wannan aikin a cikin werf.

Примечание. Wannan fasalin baya buƙatar mai tarawa yayi aiki a cikin kwas ɗin Kubernetes, saboda Don yin wannan, kuna buƙatar kawar da dogaro ga uwar garken Docker na gida (a cikin kwas ɗin Kubernetes babu damar zuwa uwar garken Docker na gida, saboda tsarin da kansa yana gudana a cikin akwati, kuma werf baya kuma ba zai goyi baya ba. aiki tare da uwar garken Docker akan hanyar sadarwa). Za a aiwatar da tallafi don gudanar da Kubernetes daban.

Tallafin hukuma don Ayyukan GitHub (NEW)

  • Shafin: v1.1
  • Kwanaki: Maris
  • Issue

Ya haɗa da takaddun werf (sashe reference и shiryar), da kuma aikin GitHub na hukuma don aiki tare da werf.

Bugu da kari, zai ba da damar werf yin aiki a kan masu tseren ephemeral.

Makanikai na hulɗar mai amfani tare da tsarin CI zai dogara ne akan sanya lakabi akan buƙatun ja don fara wasu ayyuka don ginawa / fitar da aikace-aikacen.

Ci gaban gida da tura aikace-aikace tare da werf (↓)

  • Shafin: v1.1
  • Kwanaki: Janairu-Fabrairu Afrilu
  • Issue

Babban makasudin shine a cimma daidaitaccen tsari guda ɗaya don tura aikace-aikace a cikin gida da kuma samarwa, ba tare da hadaddun ayyuka ba, daga cikin akwatin.

Ana kuma buƙatar werf don samun yanayin aiki wanda a ciki zai dace don gyara lambar aikace-aikacen da karɓar amsa nan take daga aikace-aikacen da ke gudana don gyara kuskure.

Sabon tsaftataccen algorithm (NEW)

  • Shafin: v1.1
  • Kwanaki: Afrilu
  • Issue

A cikin sigar yanzu na werf v1.1 a cikin hanya cleanup Babu tanadi don tsaftace hotuna don tsarin tushen abun ciki - waɗannan hotuna za su taru.

Hakanan, sigar werf na yanzu (v1.0 da v1.1) suna amfani da manufofin tsaftacewa daban-daban don hotunan da aka buga ƙarƙashin makircin alamar: Git reshe, Git tag ko Git aikata.

Wani sabon algorithm don tsaftace hotuna dangane da tarihin aikatawa a cikin Git, wanda aka haɗa don duk makircin alamar, an ƙirƙira shi:

  • Kiyaye fiye da hotuna N1 masu alaƙa da N2 mafi kwanan nan aikata ga kowane git HEAD (reshe da alamun alama).
  • Ajiye sama da hotuna mataki na N1 masu alaƙa da N2 mafi kwanan nan aikata ga kowane git HEAD (reshe da alamomi).
  • Ajiye duk hotunan da aka yi amfani da su a cikin kowane albarkatun gungu na Kubernetes (duk mahallin kube na fayil ɗin sanyi da wuraren suna ana duba su; zaku iya iyakance wannan hali tare da zaɓuɓɓuka na musamman).
  • Ajiye duk hotunan da aka yi amfani da su a cikin saitin kayan aiki an adana su a cikin fitowar Helm.
  • Ana iya share hoto idan ba a haɗa shi da kowane HEAD daga git (misali, saboda an share HEAD ɗin da ya dace) kuma ba a yi amfani da shi a cikin kowane fage a cikin gungu na Kubernetes kuma a cikin sakin Helm.

Daidaitaccen ginin hoto (↓)

  • Shafin: v1.1
  • Kwanaki: Janairu-Fabrairu*

Sigar werf na yanzu yana tattara hotuna da kayan tarihi da aka bayyana a ciki werf.yaml, bi da bi. Wajibi ne a daidaita tsari na haɗa matakai masu zaman kansu na hotuna da kayan tarihi, da kuma samar da fitarwa mai dacewa da bayanai.

* Lura: an canza lokacin ƙarshe saboda ƙarin fifiko don aiwatar da taron da aka rarraba, wanda zai ƙara ƙarin damar haɓakawa a kwance, da kuma amfani da werf tare da Ayyukan GitHub. Haɗuwa da layi ɗaya shine mataki na ingantawa na gaba, yana samar da ma'auni a tsaye lokacin haɗa aikin ɗaya.

Canja wurin Helm 3 (↓)

  • Shafin: v1.2
  • Kwanaki: Fabrairu-Maris*

Ya haɗa da ƙaura zuwa sabon codebase Helm 3 da tabbataccen hanya mai dacewa don ƙaura abubuwan da ke akwai.

* Lura: canzawa zuwa Helm 3 ba zai ƙara mahimman fasalulluka zuwa werf ba, saboda duk mahimman abubuwan Helm 3 (haɗin-hanyar 3 kuma babu tiller) an riga an aiwatar da su a cikin werf. Bugu da ƙari, werf yana da ƙarin fasali ban da wadanda aka nuna. Koyaya, wannan sauyi ya kasance a cikin tsare-tsarenmu kuma za a aiwatar da shi.

Jsonnet don kwatanta tsarin Kubernetes (↓)

  • Shafin: v1.2
  • Kwanaki: Janairu-Fabrairu Afrilu-Mayu

Werf zai goyi bayan bayanan daidaitawa don Kubernetes a tsarin Jsonnet. A lokaci guda, werf zai kasance mai jituwa tare da Helm kuma za a sami zaɓi na sigar bayanin.

Dalili kuwa shine samfuran Go, bisa ga mutane da yawa, suna da babban shingen shigarwa, kuma fahimtar lambar waɗannan samfuran ma yana shan wahala.

Hakanan ana la'akari da yuwuwar gabatar da wasu tsarin bayanin daidaitawar Kubernetes (misali, Kustomize).

Yin aiki a cikin Kubernetes (↓)

  • Shafin: v1.2
  • Kwanaki: Afrilu-Mayu-Yuni

Manufar: Tabbatar cewa an gina hotuna kuma an isar da aikace-aikacen ta amfani da masu gudu a Kubernetes. Wadancan. Ana iya gina sabbin hotuna, buga, tsaftacewa, da tura su kai tsaye daga kwas ɗin Kubernetes.

Don aiwatar da wannan damar, da farko kuna buƙatar samun damar gina hotuna da aka rarraba (duba batu a sama).

Hakanan yana buƙatar tallafi don yanayin aiki na magini ba tare da uwar garken Docker ba (watau Kaniko-kamar ginawa ko ginawa a cikin sararin mai amfani).

Werf zai goyi bayan gini akan Kubernetes ba kawai tare da Dockerfile ba, har ma tare da magininsa na Stapel tare da ƙarin sake ginawa da Mai yiwuwa.

Mataki zuwa ga buɗaɗɗen ci gaba

Muna son al'ummar mu (GitHub, sakon waya) kuma muna son mutane da yawa su taimaka wajen inganta werf, fahimtar alkiblar da muke motsawa, da shiga cikin ci gaba.

Kwanan nan an yanke shawarar canzawa zuwa GitHub allunan aikin domin bayyana tsarin aiki na tawagar mu. Yanzu zaku iya ganin tsare-tsaren nan da nan, da kuma aikin na yanzu a cikin waɗannan yankuna:

An yi aiki da yawa tare da batutuwa:

  • An cire waɗanda ba su da mahimmanci.
  • Ana kawo waɗanda ke akwai zuwa tsari guda ɗaya, tare da isassun bayanai da cikakkun bayanai.
  • An ƙara sabbin batutuwa tare da ra'ayoyi da shawarwari.

Yadda ake kunna sigar v1.1

A halin yanzu akwai sigar a ciki channel 1.1 a (a cikin tashoshi barga и dutsen-m sakewa za su bayyana yayin da kwanciyar hankali ke faruwa, duk da haka ea kanta ya riga ya tsaya tsayin daka don amfani, saboda ya bi ta tashoshi Alpha и beta). Kunna ta hanyar multiwerf ta hanyar:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

ƙarshe

Sabbin gine-ginen ajiya na mataki da haɓaka haɓakawa don masu ginin Stapel da Dockerfile suna buɗe yuwuwar aiwatar da ginin da aka rarraba da daidaituwa a cikin werf. Waɗannan fasalulluka za su bayyana nan ba da jimawa ba a cikin sakin v1.1 iri ɗaya kuma za su kasance suna samuwa ta atomatik ta hanyar haɓakawa ta atomatik (ga masu amfani. multiwerf).

A cikin wannan sakin, an ƙara dabarun yin tambarin kan abun cikin hoto - tushen abun ciki tagging, wanda ya zama tsohuwar dabara. An kuma sake yin aikin babban log ɗin umarni: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Muhimmin mataki na gaba shine ƙara taruwa da aka rarraba. Gine-ginen da aka rarraba sun zama fifiko mafi girma fiye da ginin layi ɗaya tun daga v1.0 saboda suna ƙara ƙarin ƙima ga werf: ma'auni na maginin maginin tsaye da goyan baya ga masu ginin ephemeral a cikin tsarin CI / CD daban-daban, da kuma ikon yin tallafi na hukuma don Ayyukan GitHub . Don haka, an canza wa'adin aiwatar da majalisu masu kama da juna. Duk da haka, muna aiki don aiwatar da hanyoyi biyu da wuri-wuri.

Bi labarai! Kuma kar ku manta ku ziyarce mu a GitHubdon ƙirƙirar batu, nemo wanda yake da kuma ƙara ƙari, ƙirƙirar PR, ko kawai kallon ci gaban aikin.

PS

Karanta kuma a kan shafinmu:

source: www.habr.com

Add a comment