Pulogalamu ya ProHoster > Blog > Ulamuliro > Kusonkhana kwamphamvu ndi kutumiza zithunzi za Docker ndi werf pogwiritsa ntchito chitsanzo cha tsamba lazolemba
Kusonkhana kwamphamvu ndi kutumiza zithunzi za Docker ndi werf pogwiritsa ntchito chitsanzo cha tsamba lazolemba
Talankhula kale za chida chathu cha GitOps kangapo. werf, ndipo nthawi ino tikufuna kugawana zomwe takumana nazo pakusonkhanitsa malowa ndi zolemba za polojekitiyo - werf.io (mtundu wake waku Russia ndi en.werf.io). Awa ndi malo wamba osasunthika, koma msonkhano wake ndi wosangalatsa chifukwa umamangidwa pogwiritsa ntchito zinthu zambiri zakale.
Lowani m'mapangidwe amasamba: kupanga menyu wamba wamitundu yonse, masamba omwe ali ndi chidziwitso chotulutsa, ndi zina zambiri. - sitidzatero. M'malo mwake, tiyeni tiyang'ane pa nkhani ndi mawonekedwe a gulu lamphamvu komanso pang'ono panjira zotsagana ndi CI/CD.
Mau oyamba: momwe tsamba limagwirira ntchito
Poyamba, zolemba za werf zimasungidwa limodzi ndi code yake. Izi zimakhazikitsa zofunikira zina zachitukuko zomwe nthawi zambiri sizingaganizidwe ndi nkhaniyi, koma pang'ono tinganene kuti:
Ntchito zatsopano za werf siziyenera kutulutsidwa popanda kukonzanso zolembazo ndipo, mosiyana, kusintha kulikonse muzolemba kumatanthauza kutulutsidwa kwa mtundu watsopano wa werf;
Pulojekitiyi ili ndi chitukuko chozama: mitundu yatsopano imatha kutulutsidwa kangapo patsiku;
Ntchito zamanja zilizonse zotumizira tsamba ndi zolemba zatsopano ndizotopetsa;
Pulojekitiyi imagwiritsa ntchito njira ya semantic kumasulira, yokhala ndi njira 5 zokhazikika. Njira yotulutsira imaphatikizapo magawo otsatizana a matembenuzidwe kudzera mumayendedwe kuti achuluke kukhazikika: kuchokera ku alpha kupita ku rock-solid;
Tsambali lili ndi chilankhulo cha Chirasha, chomwe "chimakhala ndikukula" (mwachitsanzo, zomwe zasinthidwa) molingana ndi mtundu waukulu (ie, Chingerezi).
Kuti tibise "khitchini yamkati" yonseyi kwa wogwiritsa ntchito, kumupatsa chinachake chomwe "chimagwira ntchito", tinachita osiyana werf unsembe ndi update chida Ndi multiwerf. Mukungoyenera kufotokoza nambala yotulutsidwa ndi njira yokhazikika yomwe mwakonzeka kugwiritsa ntchito, ndipo multiwerf idzayang'ana ngati pali mtundu watsopano pa tchanelo ndikutsitsa ngati kuli kofunikira.
Muzosankha zosankhidwa patsamba lawebusayiti, mitundu yaposachedwa ya werf ikupezeka munjira iliyonse. Mwa kusakhulupirika, ndi adilesi werf.io/documentation mtundu wa njira yokhazikika kwambiri yotulutsidwa kwaposachedwa imatsegulidwa - imayikidwanso ndi injini zosakira. Zolemba za tchanelo zimapezeka pamaadiresi osiyana (mwachitsanzo, werf.io/v1.0-beta/documentation kumasulidwa kwa beta 1.0).
Pazonse, tsambali lili ndi mitundu iyi:
root (amatsegula mwachisawawa),
pa tchanelo chilichonse chosinthira chotulutsa chilichonse (mwachitsanzo, werf.io/v1.0-beta).
Kuti mupange tsamba linalake, nthawi zambiri, ndikwanira kuliphatikiza pogwiritsa ntchito Jekyllpothamanga mu chikwatu /docs lamulo lolingana ndi werf repository (jekyll build), mutasinthira ku tag ya Git ya mtundu wofunikira.
Kapenanso, mutha kuyendetsa mtundu uliwonse wofunikira ngati poto yosiyana ku Kubernetes. Izi zikutanthawuza kuchuluka kwa zinthu zomwe zili mgululi, zomwe zidzakula ndi kuchuluka kwa kutulutsa kokhazikika kwa werf. Ndipo izi, zikutanthawuza kukonza zovuta kwambiri: mtundu uliwonse uli ndi seva yake ya HTTP, komanso ndi katundu wochepa. Zowona, izi zimaphatikizaponso ndalama zokulirapo.
Tinatenga njira yomweyo kuphatikiza mitundu yonse yofunikira mu chithunzi chimodzi. Ma statics ophatikizidwa amitundu yonse yatsambali ali mu chidebe chokhala ndi NGINX, ndipo magalimoto opita ku Deployment yofananira amabwera kudzera mu NGINX Ingress. Kapangidwe kosavuta - ntchito yopanda malire - imakupatsani mwayi wokulitsa Kutumiza (kutengera katundu) pogwiritsa ntchito Kubernetes palokha.
Kuti tikhale olondola, tikusonkhanitsa zithunzi ziwiri: imodzi ya dera lopangira, yachiwiri ndi yowonjezera ya dera la dev. Chithunzi chowonjezeracho chimagwiritsidwa ntchito (choyambitsidwa) kokha pa dera la dev limodzi ndi chachikulu ndipo chimakhala ndi mtundu wa tsambalo kuchokera pakuwunikanso, ndikuwongolera pakati pawo kumachitika pogwiritsa ntchito zida za Ingress.
werf vs git clone ndi zinthu zakale
Monga tanenera kale, kuti mupange ma statics atsamba pamtundu wina wa zolembazo, muyenera kumanga posinthira ku tag yoyenera. Mukhozanso kuchita izi mwa kupanga nkhokwe nthawi iliyonse yomwe mukumanga, ndikusankha ma tag oyenerera pamndandanda. Komabe, iyi ndi ntchito yogwiritsa ntchito zinthu zambiri ndipo, kuwonjezera apo, imafuna kulemba malangizo osakhala ang'onoang'ono ... Choyipa china chachikulu ndikuti ndi njira iyi palibe njira yosungira china chake panthawi ya msonkhano.
RELEASES - mzere wokhala ndi mndandanda wazotulutsa ndi mtundu waposachedwa wa werf, mu mawonekedwe a mndandanda wazinthu zomwe zimasiyana ndi malo <ΠΠΠΠΠ _Π ΠΠΠΠΠ>%<ΠΠΠΠΠ _ΠΠΠ Π‘ΠΠ>. Chitsanzo: 1.0%v1.0.4-beta.20
CHANNELS - mzere wokhala ndi mndandanda wamakanema ndi mtundu wofananira wa werf, mu mawonekedwe a mndandanda wazinthu zosiyanitsidwa ndi malo <ΠΠΠΠΠ>%<ΠΠΠΠΠ _ΠΠΠ Π‘ΠΠ>. Chitsanzo: 1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22
Chithunzi chowonjezera, chomwe, pamodzi ndi chachikulu, chimakhazikitsidwa pa dera la dev, chili ndi mitundu iwiri yokha ya tsambalo: mtundu wochokera ku ndemanga yobwereza komanso mtundu wamasamba (pali katundu wamba ndipo, ngati mukukumbukira , kutulutsa deta). Chifukwa chake, chithunzi chowonjezeracho chidzasiyana ndi chachikulu chokhacho mu gawo lolowera (ndipo, m'dzina):
image: werf-dev
...
import:
- artifact: doc-root
add: /app/_main_site
to: /app/main_site
before: setup
- artifact: doc-root
add: /app/_ru_site
to: /app/ru_site
before: setup
{{- if .WerfReviewCommit }}
- artifact: doc-review
add: /app/_main_site
to: /app/main_site/review
before: setup
- artifact: doc-review
add: /app/_ru_site
to: /app/ru_site/review
before: setup
{{- end }}
Monga tafotokozera pamwambapa, chojambula cha kubwereza chidzapangidwa kokha pamene kusintha kwa chilengedwe kumayendetsedwa REVIEW_SHA. Zingakhale zotheka kusapanga chithunzi cha werf-dev ngati palibe kusintha kwa chilengedwe REVIEW_SHA, koma kuti kuyeretsa ndi ndondomeko Zithunzi za Docker mu werf zidagwiritsidwa ntchito pa chithunzi cha werf-dev, tisiya kuti chimangidwe kokha ndi mtundu wamtundu wamtundu (wamangidwa kale), kuti muchepetse kapangidwe ka mapaipi.
Msonkhanowu wakonzeka! Tiyeni tipitirire ku CI/CD ndi ma nuances ofunikira.
Pipeline mu GitLab CI ndi mawonekedwe amphamvu yomanga
Pamene tikugwira ntchito yomanga tiyenera kuyika zosintha zachilengedwe zomwe zimagwiritsidwa ntchito werf.yaml. Izi sizikugwira ntchito ku REVIEW_SHA kusinthika, komwe tidzakhazikitsa poyimba mapaipi kuchokera pa hook ya GitHub.
Tidzapanga zofunikira zakunja mu Bash script generate_artifacts, yomwe ipanga mapaipi awiri a GitLab:
fayilo releases.yml ndi data yotulutsidwa,
fayilo common_envs.sh, yokhala ndi zosintha zachilengedwe zomwe ziyenera kutumizidwa kunja.
Zomwe zili mufayilo generate_artifacts mudzapeza m'nkhani yathu nkhokwe ndi zitsanzo. Kulandira deta palokha si nkhani ya nkhaniyi, koma wapamwamba common_envs.sh ndi zofunika kwa ife, chifukwa ntchito ya werf imadalira pa izo. Chitsanzo cha zomwe zili:
Mwa kuyankhula kwina, ngati panthawi yosonkhanitsa chithunzi cha tsambalo zidziwitso za kutulutsidwa ndi kumasulira ndizofanana, ndipo panthawi yotumizira mtundu watsopano umatulutsidwa ndipo zosintha za chilengedwe zimakhala ndi makhalidwe osiyanasiyana, ndiye kuti kutumizidwa kudzalephera ndi cholakwika: pambuyo pa zonse, chojambula cha mtundu watsopano sichinamangidwebe.
Ngati m'badwo werf.yaml zimadalira deta kunja (mwachitsanzo, mndandanda wa Mabaibulo panopa, monga ifeyo), ndiye zikuchokera ndi mfundo za deta imeneyi ayenera kulembedwa mu payipi. Izi ndizofunikira makamaka ngati magawo akunja amasintha nthawi zambiri.
Tidzatero kulandira ndi kulemba deta yakunja pa gawo loyamba la payipi ku GitLab (Kumangatu) ndikuwatumiziranso mu mawonekedwe Zithunzi za GitLab CI. Izi zimakupatsani mwayi woyendetsa ndikuyambitsanso ntchito zamapaipi (kumanga, kutumiza, kuyeretsa) ndikusintha komweko mu werf.yaml.
Tawona kale pafupifupi zonsezi zitakwera pang'ono - kuti muziyeretsa muyenera kulowa mu Docker Registry ndi chizindikiro chomwe chili ndi ufulu wochotsa zithunzi mu Docker Registry (chizindikiro cha ntchito cha GitLab CI sichimatuluka. ali ndi ufulu wotere). Chizindikirocho chiyenera kupangidwa mu GitLab pasadakhale ndipo mtengo wake uyenera kufotokozedwa pazosintha zachilengedwe WERF_IMAGES_CLEANUP_PASSWORD ntchito (Zikhazikiko za CI/CD -> Zosintha).
Kuwonjezera ntchito yoyeretsa ndi ndondomeko yofunikira ikuchitika CI/CD ->
Ndandanda.
Ndi momwemo: pulojekiti mu Docker Registry sidzakulanso kuchokera pazithunzi zosagwiritsidwa ntchito.
Pamapeto pa gawo lothandiza, ndiroleni ndikukumbutseni kuti mindandanda yonse ya nkhaniyi ikupezeka Giti:
Zimagwira ntchito mwachangu, chifukwa Caching imagwiritsidwa ntchito momwe mungathere - mtundu watsopano wa werf ukatulutsidwa kapena mbedza ya GitHub itayitanidwa kuti iwunikenso, chojambula chofanana ndi chomwe chasinthidwa chimamangidwanso.
Palibe chifukwa choganizira zochotsa zithunzi zosagwiritsidwa ntchito: kuyeretsa molingana ndi mfundo za werf kumasunga Docker Registry kukhala mwadongosolo.
anapezazo
Kugwiritsa ntchito werf kumalola msonkhanowo kuti ugwire ntchito mwachangu chifukwa cha kusungidwa kwa msonkhano womwewo komanso posungira pogwira ntchito ndi nkhokwe zakunja.
Kugwira ntchito ndi nkhokwe zakunja za Git kumathetsa kufunikira kophatikiza malo onse nthawi iliyonse kapena kubwezeretsanso gudumu ndi malingaliro okhathamira. werf amagwiritsa ntchito cache ndikupanga cloning kamodzi kokha, kenako amagwiritsa ntchito fetch ndipo pokhapokha pakufunika.
Kutha kugwiritsa ntchito ma template a Go mufayilo yosinthira yomanga werf.yaml amakulolani kufotokoza msonkhano umene zotsatira zake zimadalira deta yakunja.
Kugwiritsa ntchito mount in werf kumafulumizitsa kwambiri kusonkhanitsa zinthu zakale - chifukwa cha posungira, zomwe ndizofala pamapaipi onse.