kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo

kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo

werf ndiye gwero lathu lotseguka la GitOps CLI pomanga ndi kutumiza mapulogalamu ku Kubernetes. Monga momwe analonjezera, kutulutsidwa kwa mtundu wa v1.0 adawonetsa chiyambi cha kuwonjezera zinthu zatsopano ku werf ndikukonzanso njira zachikhalidwe. Tsopano ndife okondwa kupereka kumasulidwa kwa v1.1, komwe ndi gawo lalikulu pakukula komanso maziko amtsogolo wokhometsa werf. Mtunduwu ulipo pano njira 1.1e.

Maziko a kumasulidwa ndi zomangamanga zatsopano za malo osungiramo siteji ndi kukhathamiritsa kwa ntchito ya onse osonkhanitsa (kwa Stapel ndi Dockerfile). Zomangamanga zatsopano zosungirako zimatsegula mwayi wogwiritsa ntchito misonkhano yogawidwa kuchokera ku makamu angapo ndi misonkhano yofanana pa gulu lomwelo.

Kukhathamiritsa kwa ntchito kumaphatikizapo kuchotsa ziwerengero zosafunikira panthawi yowerengera masiginecha ndikusintha njira zowerengera macheke a fayilo kuti akhale opambana. Kukhathamiritsa uku kumachepetsa nthawi yomwe projekiti imamanga pogwiritsa ntchito werf. Ndipo osagwira ntchito amamanga, pamene magawo onse alipo mu cache magawo-kusungirako, tsopano akuthamanga kwenikweni. Nthawi zambiri, kuyambiranso kumanga kudzatenga mphindi imodzi yokha! Izi zikugwiranso ntchito kumayendedwe otsimikizira magawo pakugwira ntchito kwamagulu. werf deploy и werf run.

Komanso pakutulutsa uku, njira yolembera zithunzi ndi zomwe zili mkati idawonekera - kutengera zolemba, yomwe tsopano yayatsidwa mwachisawawa komanso yokhayo yomwe ikulimbikitsidwa.

Tiyeni tiwone mwatsatanetsatane za zatsopano za werf v1.1, ndipo nthawi yomweyo ndikuuzeni za mapulani amtsogolo.

Kodi chasintha ndi chiyani mu werf v1.1?

Mawonekedwe atsopano a siteji ndi algorithm yosankha magawo kuchokera ku cache

Lamulo lopanga dzina latsopano. Tsopano siteji iliyonse yomanga imapanga dzina lapadera la siteji, lomwe lili ndi magawo awiri: siginecha (monga momwe zinalili mu v2) kuphatikizapo chizindikiritso chakanthawi kochepa.

Mwachitsanzo, dzina lachithunzi chonse likhoza kuwoneka motere:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

... kapena zambiri:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

Zomwe:

  • SIGNATURE ndi siginecha ya siteji, yomwe imayimira chizindikiritso cha zomwe zili pa siteji ndipo zimatengera mbiri ya zosintha mu Git zomwe zidatsogolera ku izi;
  • TIMESTAMP_MILLISEC ndi chizindikiritso chapadera chotsimikizika chomwe chimapangidwa panthawi yomwe chithunzi chatsopano chimapangidwa.

Algorithm yosankha magawo kuchokera ku cache idakhazikitsidwa pakuwunika ubale wa Git:

  1. Werf amawerengera siginecha ya gawo linalake.
  2. В magawo-kusungirako Pakhoza kukhala magawo angapo a siginecha yoperekedwa. Werf amasankha magawo onse omwe akugwirizana ndi siginecha.
  3. Ngati gawo lapano likulumikizidwa ndi Git (git-archive, siteji yachizolowezi yokhala ndi zigamba za Git: install, beforeSetup, setup; kapena git-latest-patch), ndiye werf amasankha magawo okhawo omwe amalumikizidwa ndi kudzipereka komwe ndi kholo la zomwe zikuchitika pano (zomwe zimatchedwanso).
  4. Kuchokera pazigawo zoyenera zotsalira, imodzi imasankhidwa - yakale kwambiri ndi tsiku la chilengedwe.

Gawo la nthambi zosiyanasiyana za Git limatha kukhala ndi siginecha yomweyo. Koma werf amalepheretsa cache yolumikizidwa ndi nthambi zosiyanasiyana kuti isagwiritsidwe ntchito pakati pa nthambi izi, ngakhale masiginecha agwirizane.

→ Zolemba.

Algorithm yatsopano yopangira ndikusunga magawo posungira siteji

Ngati, posankha magawo kuchokera ku cache, werf sapeza siteji yoyenera, ndiye kuti njira yosonkhanitsa siteji yatsopano imayambitsidwa.

Dziwani kuti njira zingapo (pa gulu limodzi kapena angapo) zitha kuyamba kupanga gawo lomwelo pafupifupi nthawi imodzi. Werf amagwiritsa ntchito njira yabwino yotsekereza magawo-kusungirako panthawi yosunga chithunzi chomwe chasonkhanitsidwa mwatsopano magawo-kusungirako. Mwanjira iyi, malo atsopano akakonzeka, werf blocks magawo-kusungirako ndikusunga chithunzi chosonkhanitsidwa kumene pokhapokha ngati chithunzi choyenera sichikupezeka pamenepo (ndi siginecha ndi magawo ena - onani algorithm yatsopano yosankha magawo kuchokera pa cache).

Chithunzi chosonkhanitsidwa chatsopano chimatsimikiziridwa kukhala ndi chizindikiritso chapadera ndi TIMESTAMP_MILLISEC (onani mawonekedwe atsopano a siteji). Ngati mu magawo-kusungirako chithunzi choyenera chidzapezeka, werf adzataya chithunzi chopangidwa mwatsopano ndipo adzagwiritsa ntchito chithunzicho kuchokera ku cache.

Mwa kuyankhula kwina: njira yoyamba yomaliza kumanga fano (yothamanga kwambiri) idzalandira ufulu woisunga mu magawo-kusungirako (ndiyeno ndi chithunzi chimodzi chomwe chidzagwiritsidwa ntchito pazomanga zonse). Kumanga pang'onopang'ono sikungalepheretse njira yofulumira kupulumutsa zotsatira zomanga za siteji yamakono ndikupita kumalo ena omanga.

→ Zolemba.

Kuchita bwino kwa omanga a Dockerfile

Pakadali pano, payipi ya magawo a chithunzi chopangidwa kuchokera ku Dockerfile ili ndi gawo limodzi - dockerfile. Powerengera siginecha, cheke cha mafayilo chimawerengedwa context, yomwe idzagwiritsidwe ntchito panthawi ya msonkhano. Izi zisanachitike, werf adayenda mobwerezabwereza m'mafayilo onse ndikupeza cheke pofotokoza mwachidule zomwe zili ndi fayilo iliyonse. Kuyambira ndi v1.1, werf atha kugwiritsa ntchito macheke owerengeka omwe amasungidwa munkhokwe ya Git.

Algorithm imakhazikitsidwa pa git ls-tree. The algorithm imaganizira zolemba mu akaunti .dockerignore ndi kudutsa mtengo wa fayilo mobwerezabwereza pokhapokha ngati kuli kofunikira. Chifukwa chake, tasiya kuwerenga mafayilo amafayilo, komanso kudalira kwa algorithm pakukula kwake context sizofunika.

Algorithm imayang'ananso mafayilo osasinthidwa ndipo, ngati kuli kofunikira, amawaganizira mu checksum.

Kuchita bwino potumiza mafayilo

Mabaibulo a werf v1.1 amagwiritsa ntchito seva ya rsync pamene kuitanitsa mafayilo kuchokera kuzinthu zakale ndi zithunzi. M'mbuyomu, kulowetsa kunkachitika m'masitepe awiri pogwiritsa ntchito khwekhwe la chikwatu kuchokera ku makina osungira.

Kulowetsamo pa macOS sikulinso malire ndi ma volume a Docker, ndipo kulowetsa kunja kumakwanira mu nthawi yofanana ndi Linux ndi Windows.

Kuyika ma taging okhudzana ndi zinthu

Werf v1.1 imathandizira zomwe zimatchedwa kuti tagging ndi zomwe zili pazithunzi - kutengera zolemba. Ma tag a zithunzi za Docker zomwe zatsatira zimadalira zomwe zili pazithunzizi.

Poyendetsa lamulo werf publish --tags-by-stages-signature kapena werf ci-env --tagging-strategy=stages-signature zithunzi zofalitsidwa za otchedwa siteji siginecha chithunzi. Chithunzi chilichonse chimayikidwa ndi siginecha yake ya magawo a chithunzichi, chomwe chimawerengedwa molingana ndi malamulo omwewo monga siginecha yokhazikika ya gawo lililonse padera, koma ndi chizindikiritso chonse cha chithunzicho.

Kusaina kwa magawo azithunzi kumatengera:

  1. zomwe zili pachithunzichi;
  2. mbiri za kusintha kwa Git zomwe zidapangitsa kuti izi zitheke.

Malo osungira a Git nthawi zonse amakhala ndi ma dummy omwe sasintha zomwe zili m'mafayilo azithunzi. Mwachitsanzo, amangopereka ndemanga kapena kuphatikiza zochita, kapena kuchita zomwe zikusintha mafayilo mu Git omwe sangalowe mu chithunzicho.

Mukamagwiritsa ntchito ma tagging okhudzana ndi zomwe zili, zovuta zoyambitsanso zosafunikira za pods ku Kubernetes chifukwa cha kusintha kwa dzina lachithunzichi zimathetsedwa, ngakhale zomwe zili pachithunzichi sizinasinthe. Mwa njira, ichi ndi chimodzi mwazifukwa zomwe zimalepheretsa kusunga ma microservices ambiri a pulogalamu imodzi munkhokwe imodzi ya Git.

Komanso, ma tagging otengera zomwe zili patsamba ndi njira yodalirika yoyika ma tag kuposa kuyika ma tagi panthambi za Git, chifukwa zomwe zili muzithunzi zomwe zatuluka sizitengera dongosolo lomwe mapaipi amapangidwira mu dongosolo la CI posonkhanitsa mabizinesi angapo anthambi yomweyo.

chofunika: kuyambira pano magawo - siginecha Ndi njira yokhayo yopangira ma tagging. Idzagwiritsidwa ntchito mwachisawawa mu lamulo werf ci-env (pokhapokha mutafotokoza mwatsatanetsatane chiwembu chosiyana ndi ma taging).

→ Zolemba. Buku linanso lidzaperekedwa ku mbali imeneyi. ZAsinthidwa (April 3): Nkhani yofotokoza zambiri losindikizidwa.

Miyezo yodula mitengo

Wogwiritsa ntchito tsopano ali ndi mwayi wowongolera zotuluka, kukhazikitsa mulingo wodula mitengo ndikugwira ntchito ndi chidziwitso chowongolera. Zosankha zawonjezeredwa --log-quiet, --log-verbose, --log-debug.

Mwachisawawa, zotulukazo zimakhala ndi mfundo zochepa:

kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo

Mukamagwiritsa ntchito verbose output (--log-verbose) mutha kuwona momwe werf amagwirira ntchito:

kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo

Zotuluka mwatsatanetsatane (--log-debug), kuwonjezera pa chidziwitso cha werf debugging, ilinso ndi zipika zamalaibulale omwe amagwiritsidwa ntchito. Mwachitsanzo, mutha kuwona momwe kuyanjana ndi Docker Registry kumachitika, ndikulembanso malo omwe nthawi yayitali imathera:

kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo

Zolinga zamtsogolo

Chonde chonde! Zosankha zomwe zafotokozedwa pansipa zalembedwa v1.1 ipezeka m'bukuli, ambiri aiwo posachedwapa. Zosintha zidzabwera kudzera pazosintha zokha Mukamagwiritsa ntchito multiwerf. Izi sizikhudza gawo lokhazikika la ntchito za v1.1; mawonekedwe awo safuna kulowererapo pamanja pamasinthidwe omwe alipo.

Thandizo lathunthu pakukhazikitsa kosiyanasiyana kwa Docker Registry (Chatsopano)

  • Mtundu: v1.1
  • Madeti: March
  • Nkhani

Cholinga chake ndi chakuti wogwiritsa ntchito azigwiritsa ntchito mwachizolowezi popanda zoletsa akamagwiritsa ntchito werf.

Pakadali pano, tazindikira njira zotsatirazi zomwe titi titsimikizire chithandizo chonse:

  • Zosasintha (laibulale/kaundula)*,
  • AWS ECR
  • Azure*,
  • Docker Hub
  • GCR*,
  • Phukusi la GitHub
  • GitLab Registry*,
  • Harbor*,
  • Quay.

Mayankho omwe pano amathandizidwa kwathunthu ndi werf amalembedwa ndi asterisk. Kwa ena pali chithandizo, koma ndi malire.

Mavuto akulu awiri azindikirika:

  • Mayankho ena samathandizira kuchotsa ma tag pogwiritsa ntchito Docker Registry API, kulepheretsa ogwiritsa ntchito kugwiritsa ntchito kuyeretsa kwa werf. Izi ndizoona kwa AWS ECR, Docker Hub, ndi GitHub Packages.
  • Mayankho ena samathandizira zomwe zimatchedwa kuti nested repositories (Docker Hub, GitHub Packages ndi Quay) kapena kutero, koma wogwiritsa ntchito ayenera kuzipanga pamanja pogwiritsa ntchito UI kapena API (AWS ECR).

Tithana ndi mavutowa ndi ena pogwiritsa ntchito ma API amtundu wa mayankho. Ntchitoyi ikuphatikizanso kuphimba kuzungulira kwa ntchito ya werf ndi mayeso a aliyense wa iwo.

Zithunzi zogawidwa (↑)

  • Mtundu: v1.2 v1.1 (chofunikira pakukhazikitsa izi chawonjezeka)
  • Madeti: Marichi-April Marichi
  • Nkhani

Pakadali pano, werf v1.0 ndi v1.1 zitha kugwiritsidwa ntchito pagulu limodzi lodzipereka pantchito yomanga ndi kusindikiza zithunzi ndikutumiza ku Kubernetes.

Kuti mutsegule mwayi wa ntchito yogawidwa ya werf, pamene kumanga ndi kutumizidwa kwa mapulogalamu ku Kubernetes kumayambitsidwa pamagulu angapo osasunthika ndipo makamuwa samapulumutsa dziko lawo pakati pa omanga (othamanga osakhalitsa), werf amafunika kuti agwiritse ntchito Docker Registry ngati malo ogulitsira.

M'mbuyomu, ntchito ya werf ikadali yotchedwa dapp, inali ndi mwayi wotero. Komabe, takumana ndi zovuta zingapo zomwe ziyenera kuganiziridwa pokhazikitsa izi mu werf.

ndemanga. Izi sizikufuna kuti wokhometsa azigwira ntchito mkati mwa Kubernetes pods, chifukwa Kuti muchite izi, muyenera kuchotsa kudalira kwa seva ya Docker yapafupi (mu Kubernetes pod mulibe mwayi wopita ku seva ya Docker yapafupi, chifukwa ndondomekoyi ikugwira ntchito mu chidebe, ndipo werf sichidzathandizira ndipo sichidzawathandiza. kugwira ntchito ndi seva ya Docker pamaneti). Thandizo loyendetsa Kubernetes lidzakhazikitsidwa padera.

Thandizo lovomerezeka la GitHub Actions (Chatsopano)

  • Mtundu: v1.1
  • Madeti: March
  • Nkhani

Mulinso zolemba za werf (magawo Buku и kutsogolera), komanso GitHub Action yovomerezeka yogwira ntchito ndi werf.

Kuphatikiza apo, zidzalola werf kugwira ntchito pa othamanga a ephemeral.

Makina ogwiritsira ntchito makina a CI adzakhazikika pakuyika zilembo pazopempha zokoka kuti ayambe kuchitapo kanthu kuti apange / kutulutsa pulogalamuyo.

Kupititsa patsogolo kwanuko ndi kutumizidwa kwa mapulogalamu ndi werf (↓)

  • Mtundu: v1.1
  • Madeti: Januwale-February April
  • Nkhani

Cholinga chachikulu ndikukwaniritsa chikhazikitso chimodzi chogwirizana chotumizira mapulogalamu onse kwanuko komanso popanga, popanda zochita zovuta, kunja kwa bokosi.

werf imafunikanso kukhala ndi mawonekedwe ogwiritsira ntchito momwe kungakhalire kosavuta kusintha kachidindo ka pulogalamuyo ndikulandila nthawi yomweyo mayankho kuchokera ku pulogalamu yomwe ikuyendetsa.

Njira yatsopano yoyeretsera (yatsopano)

  • Mtundu: v1.1
  • Madeti: April
  • Nkhani

Mu mtundu wamakono wa werf v1.1 mu ndondomekoyi cleanup Palibe njira yoyeretsera zithunzi zamakina otengera zomwe zili - zithunzi izi zichulukana.

Komanso, mtundu waposachedwa wa werf (v1.0 ndi v1.1) umagwiritsa ntchito mfundo zosiyana zotsuka zithunzi zosindikizidwa pansi pa ma tagi: Nthambi ya Git, tag ya Git kapena Git commit.

Njira yatsopano yoyeretsera zithunzi kutengera mbiri ya zochita ku Git, yolumikizidwa pamakina onse oyika, yapangidwa:

  • Sungani zithunzi zopitilira N1 zolumikizidwa ndi N2 zomwe zachitika posachedwa pa git HEAD iliyonse (nthambi ndi ma tag).
  • Sungani zithunzi zopitilira N1 zolumikizidwa ndi N2 zomwe zachitika posachedwa pa git HEAD iliyonse (nthambi ndi ma tag).
  • Sungani zithunzi zonse zomwe zimagwiritsidwa ntchito pamagulu aliwonse a Kubernetes (mitundu yonse ya kube yamafayilo osinthika ndi malo amazina amafufuzidwa; mutha kuchepetsa izi ndi zosankha zapadera).
  • Sungani zithunzi zonse zomwe zikugwiritsidwa ntchito pakusintha kwazinthu zosungidwa muzotulutsa za Helm.
  • Chithunzi chitha kuchotsedwa ngati sichikugwirizana ndi HEAD iliyonse kuchokera ku git (mwachitsanzo, chifukwa HEAD yofananirayo idachotsedwa) ndipo sichimagwiritsidwa ntchito paziwonetsero zilizonse mugulu la Kubernetes komanso kutulutsa kwa Helm.

Zithunzi zofananira (↓)

  • Mtundu: v1.1
  • Madeti: Januwale-February April *

Mtundu wapano wa werf umatenga zithunzi ndi zinthu zakale zomwe zafotokozedwa mu werf.yaml, motsatizana. Ndikofunikira kufananiza njira yosonkhanitsira magawo odziyimira pawokha azithunzi ndi zinthu zakale, komanso kupereka linanena bungwe labwino komanso lodziwitsa.

* Zindikirani: tsiku lomaliza lasinthidwa chifukwa chakuchulukirachulukira pakukhazikitsa msonkhano womwe wagawidwa, zomwe ziwonjezera kuthekera kokulirapo, komanso kugwiritsa ntchito werf ndi GitHub Actions. Kusonkhana kofanana ndi sitepe yotsatira yokhathamiritsa, yopereka mwayi woyima posonkhanitsa polojekiti imodzi.

Kusintha kupita ku Helm 3 (↓)

  • Mtundu: v1.2
  • Madeti: February-March May*

Kuphatikizira kusamukira ku codebase yatsopano Mtsinje 3 ndi njira yotsimikiziridwa, yabwino yosamutsira makhazikitsidwe omwe alipo.

* Zindikirani: kusinthira ku Helm 3 sikungawonjeze zinthu zofunikira pa werf, chifukwa zonse zofunika za Helm 3 (3-way-merge and no tiller) zakhazikitsidwa kale mu werf. Komanso, werf ali zina zowonjezera kuwonjezera pa zomwe zasonyezedwa. Komabe, kusinthaku kumakhalabe m'mapulani athu ndipo kukwaniritsidwa.

Jsonnet pofotokozera Kubernetes kasinthidwe (↓)

  • Mtundu: v1.2
  • Madeti: Januwale-February April-May

Werf ithandizira mafotokozedwe a Kubernetes mu mtundu wa Jsonnet. Nthawi yomweyo, werf idzakhala yogwirizana ndi Helm ndipo padzakhala kusankha mtundu wakufotokozera.

Chifukwa chake ndikuti Go ma templates, malinga ndi anthu ambiri, ali ndi chotchinga chachikulu cholowera, ndipo kumvetsetsa kwa code ya ma templateswa kumavutikanso.

Kuthekera koyambitsa njira zina zofotokozera za Kubernetes (mwachitsanzo, Kustomize) zikuganiziridwanso.

Kugwira ntchito mkati Kubernetes (↓)

  • Mtundu: v1.2
  • Madeti: April-May-May-June

Cholinga: Onetsetsani kuti zithunzi zamangidwa ndipo kugwiritsa ntchito kumaperekedwa pogwiritsa ntchito othamanga ku Kubernetes. Iwo. Zithunzi zatsopano zitha kupangidwa, kusindikizidwa, kutsukidwa, ndikutumizidwa mwachindunji kuchokera ku Kubernetes pods.

Kuti mugwiritse ntchito izi, choyamba muyenera kukhala ndi luso lopanga zithunzi zogawidwa (onani mfundo pamwambapa).

Zimafunikanso kuthandizira pamayendedwe a omanga popanda seva ya Docker (ie Kaniko-ngati build or build in userspace).

Werf ithandizira kumanga pa Kubernetes osati ndi Dockerfile yokha, komanso ndi omanga ake a Stapel okhala ndi zomanganso zowonjezera komanso Ansible.

Gawo lopita ku chitukuko chotseguka

Timakonda gulu lathu (GitHub, uthengawo) ndipo tikufuna anthu ochulukirachulukira kuti athandizire kupanga werf kukhala bwino, kumvetsetsa komwe tikupita, ndikutenga nawo gawo pachitukuko.

Posachedwapa adaganiza zosinthira GitHub polojekiti board kuti tiwulule momwe gulu lathu likugwirira ntchito. Tsopano mutha kuwona mapulani aposachedwa, komanso ntchito zomwe zikuchitika m'magawo otsatirawa:

Ntchito zambiri zachitika ndi zovuta:

  • Zachotsedwa zosafunikira.
  • Zomwe zilipo zimabweretsedwa ku mtundu umodzi, wokhala ndi zambiri zokwanira komanso zambiri.
  • Nkhani zatsopano zokhala ndi malingaliro ndi malingaliro awonjezedwa.

Momwe mungayambitsire mtundu wa v1.1

Mtunduwu ulipo pano njira 1.1e (mu channels Khola и mwala wolimba zotulutsidwa zidzawoneka ngati kukhazikika kukuchitika, komabe ea palokha yakhazikika kale kuti igwiritsidwe ntchito, chifukwa adadutsa munjira alpha и beta). Adayatsidwa kudzera pa multiwerf m'njira izi:

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

Pomaliza

Zomangamanga zatsopano zosungiramo siteji ndi kukhathamiritsa kwa omanga kwa omanga a Stapel ndi Dockerfile amatsegula mwayi wogwiritsa ntchito zomanga zogawidwa ndi zofanana mu werf. Izi ziwoneka posachedwa pamtundu womwewo wa v1.1 ndipo zizipezeka zokha kudzera pamakina osinthira okha (kwa ogwiritsa ntchito. multiwerf).

Pakutulutsa uku, njira yoyika ma tag yotengera zomwe zili pazithunzi yawonjezedwa - kutengera zolemba, yomwe yakhala njira yosasinthika. Lamulo lalikulu lalamulo lakonzedwanso: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Chotsatira chofunika kwambiri ndicho kuwonjezera misonkhano ikuluikulu. Zomangamanga zogawidwa zakhala zofunikira kwambiri kuposa zomanga zofanana kuyambira v1.0 chifukwa zimawonjezera phindu pa werf: kukweza koyima kwa omanga ndikuthandizira omanga ma ephemeral pamakina osiyanasiyana a CI/CD, komanso kuthekera kopanga chithandizo chovomerezeka cha GitHub Actions. . Chifukwa chake, masiku omalizira amisonkhano yofanana adasinthidwa. Komabe, tikugwira ntchito kuti tigwiritse ntchito zotheka zonsezi posachedwa.

Tsatirani nkhani! Ndipo musaiwale kutichezera ife pa GitHubkuti mupange vuto, pezani yomwe ilipo ndikuwonjezera, pangani PR, kapena kungoyang'ana momwe polojekiti ikuyendera.

PS

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga