ProHoster > blog > Amministrazzjoni > Assemblaġġ dinamiku u skjerament ta 'immaġini Docker b'werf bl-użu ta' l-eżempju ta 'sit ta' dokumentazzjoni verżjoni
Assemblaġġ dinamiku u skjerament ta 'immaġini Docker b'werf bl-użu ta' l-eżempju ta 'sit ta' dokumentazzjoni verżjoni
Diġà tkellimna dwar l-għodda GitOps tagħna aktar minn darba. werf, u din id-darba nixtiequ naqsmu l-esperjenza tagħna fl-immuntar tas-sit mad-dokumentazzjoni tal-proġett innifsu - werf.io (il-verżjoni Russa tagħha hija en.werf.io). Dan huwa sit statiku ordinarju, iżda l-assemblaġġ tiegħu huwa interessanti peress li huwa mibni bl-użu ta 'numru dinamiku ta' artifacts.
Mur fl-sfumaturi ta 'l-istruttura tas-sit: ġenerazzjoni ta' menu komuni għall-verżjonijiet kollha, paġni b'informazzjoni dwar rilaxxi, eċċ. - aħna mhux se. Minflok, ejja niffukaw fuq il-kwistjonijiet u l-karatteristiċi tal-assemblaġġ dinamiku u ftit fuq il-proċessi CI/CD li jakkumpanjawhom.
Introduzzjoni: kif jaħdem is-sit
Biex tibda, id-dokumentazzjoni werf hija maħżuna flimkien mal-kodiċi tagħha. Dan jimponi ċerti rekwiżiti ta’ żvilupp li huma ġeneralment lil hinn mill-ambitu ta’ dan l-artikolu, iżda bħala minimu jista’ jingħad li:
Funzjonijiet ġodda tal-werf m'għandhomx jiġu rilaxxati mingħajr ma tiġi aġġornata d-dokumentazzjoni u, bil-maqlub, kwalunkwe tibdil fid-dokumentazzjoni timplika r-rilaxx ta' verżjoni ġdida tal-werf;
Il-proġett għandu żvilupp pjuttost intensiv: verżjonijiet ġodda jistgħu jiġu rilaxxati diversi drabi kuljum;
Kwalunkwe operazzjoni manwali biex jiġi skjerat sit b'verżjoni ġdida tad-dokumentazzjoni huma għall-inqas tedjanti;
Il-proġett jadotta approċċ semantiku verżjonijiet, b'5 kanali ta 'stabbiltà. Il-proċess ta 'rilaxx jinvolvi passaġġ sekwenzjali ta' verżjonijiet permezz ta 'kanali f'ordni ta' stabbiltà dejjem tiżdied: minn alfa għal solidu tal-blat;
Is-sit għandu verżjoni bil-lingwa Russa, li "tgħix u tiżviluppa" (jiġifieri, li l-kontenut tagħha huwa aġġornat) b'mod parallel mal-verżjoni prinċipali (jiġifieri, bil-lingwa Ingliża).
Biex taħbi din il-"kċina ta 'ġewwa" kollha mill-utent, toffrilu xi ħaġa li "taħdem biss", għamilna għodda separata ta 'installazzjoni u aġġornament tal-werf - dan hu multiwerf. Għandek bżonn biss li tispeċifika n-numru tar-rilaxx u l-kanal ta 'stabbiltà li inti lest biex tuża, u multiwerf se jiċċekkja jekk hemmx verżjoni ġdida fuq il-kanal u niżżlu jekk meħtieġ.
Fil-menu tal-għażla tal-verżjoni fuq il-websajt, l-aħħar verżjonijiet tal-werf huma disponibbli f'kull kanal. B'mod awtomatiku, bl-indirizz werf.io/dokumentazzjoni tiftaħ il-verżjoni tal-kanal l-aktar stabbli għall-aħħar rilaxx - hija wkoll indiċjata minn magni tat-tiftix. Id-dokumentazzjoni għall-kanal hija disponibbli f'indirizzi separati (pereżempju, werf.io/v1.0-beta/documentation għar-rilaxx beta 1.0).
B'kollox, is-sit għandu l-verżjonijiet li ġejjin disponibbli:
root (jinfetaħ awtomatikament),
għal kull kanal ta' aġġornament attiv ta' kull rilaxx (per eżempju, werf.io/v1.0-beta).
Biex tiġġenera verżjoni speċifika ta 'sit, b'mod ġenerali, huwa biżżejjed li tiġborha bl-użu Jekyllbilli taħdem fid-direttorju /docs werf repożitorju kmand korrispondenti (jekyll build), wara li taqleb għat-tikketta Git tal-verżjoni meħtieġa.
Fadal biss li żżid li:
l-utilità nnifisha (werf) tintuża għall-assemblaġġ;
Il-proċessi CI/CD huma mibnija fuq il-bażi ta 'GitLab CI;
u dan kollu, ovvjament, jimxi f'Kubernetes.
kompiti
Issa ejja nifformulaw kompiti li jqisu l-ispeċifiċitajiet kollha deskritti:
Wara li tbiddel il-verżjoni werf fuq kwalunkwe kanal ta 'aġġornament dokumentazzjoni fuq is-sit għandha tiġi aġġornata awtomatikament.
Għall-iżvilupp trid tkun kapaċi kultant ara verżjonijiet preview tas-sit.
Is-sit għandu jiġi kkompilat mill-ġdid wara li tinbidel il-verżjoni fuq kwalunkwe kanal mit-tikketti Git korrispondenti, iżda fil-proċess tal-bini tal-immaġni se jkollna l-karatteristiċi li ġejjin:
Peress li l-lista tal-verżjonijiet fuq il-kanali tinbidel, huwa meħtieġ biss li tinbena mill-ġdid id-dokumentazzjoni għall-kanali fejn il-verżjoni nbidlet. Wara kollox, il-bini mill-ġdid ta 'kollox mhux sabiħ ħafna.
Is-sett ta' kanali għar-rilaxxi jista' jinbidel. F'xi żmien, pereżempju, jista 'ma jkunx hemm verżjoni fuq il-kanali aktar stabbli mir-rilaxx ta' aċċess bikri 1.1, iżda maż-żmien dawn se jidhru - f'dan il-każ, m'għandekx tibdel l-assemblaġġ manwalment?
Jirriżulta li assemblaġġ jiddependi fuq it-tibdil tad-dejta esterna.
Реализация
Għażla ta' Approċċ
Inkella, tista' tħaddem kull verżjoni meħtieġa bħala pod separat f'Kubernetes. Din l-għażla timplika numru akbar ta 'oġġetti fil-cluster, li se jikbru biż-żieda fin-numru ta' rilaxxi ta 'werf stabbli. U dan, imbagħad, jimplika manutenzjoni aktar kumplessa: kull verżjoni għandha s-server HTTP tagħha stess, u b'tagħbija żgħira. Naturalment, dan jinvolvi wkoll spejjeż akbar tar-riżorsi.
Ħadna l-istess triq assemblaġġ tal-verżjonijiet kollha meħtieġa f'immaġni waħda. L-istatika kkumpilata tal-verżjonijiet kollha tas-sit tinsab f'kontenitur b'NGINX, u t-traffiku lejn l-Iskjerament korrispondenti jiġi permezz ta 'NGINX Ingress. Struttura sempliċi - applikazzjoni mingħajr stat - tippermettilek li tiskala faċilment l-Iskjerament (skond it-tagħbija) billi tuża Kubernetes innifsu.
Biex inkunu aktar preċiżi, qed niġbru żewġ immaġini: waħda għaċ-ċirkwit tal-produzzjoni, it-tieni hija waħda addizzjonali għaċ-ċirkwit dev. L-immaġni addizzjonali tintuża (mnedija) biss fuq iċ-ċirkwit dev flimkien ma 'dak prinċipali u fiha l-verżjoni tas-sit mill-impenn ta' reviżjoni, u r-rotot bejniethom isir bl-użu ta 'riżorsi Ingress.
werf vs git klonu u artifacts
Kif diġà ssemma, sabiex tiġġenera statika tas-sit għal verżjoni speċifika tad-dokumentazzjoni, trid tibni billi taqleb għat-tikketta tar-repożitorju xierqa. Tista 'wkoll tagħmel dan billi tikklona r-repożitorju kull darba li tibni, billi tagħżel it-tikketti xierqa minn lista. Madankollu, din hija operazzjoni pjuttost intensiva fir-riżorsi u, barra minn hekk, teħtieġ il-kitba ta 'struzzjonijiet mhux trivjali... Żvantaġġ serju ieħor huwa li b'dan l-approċċ m'hemm l-ebda mod biex tiġi cache xi ħaġa waqt l-assemblaġġ.
Hawnhekk l-utilità werf innifsu jiġi għall-għajnuna tagħna, implimentazzjoni caching intelliġenti u li jippermettilek tuża repożitorji esterni. L-użu ta 'werf biex iżżid kodiċi mir-repożitorju se tħaffef b'mod sinifikanti l-bini, għaliex werf essenzjalment jikklona r-repożitorju darba u mbagħad jesegwixxi bissfetch jekk meħtieġ. Barra minn hekk, meta nżidu dejta mir-repożitorju, nistgħu nagħżlu biss id-direttorji meħtieġa (fil-każ tagħna dan huwa d-direttorju docs), li se tnaqqas b'mod sinifikanti l-ammont ta 'dejta miżjuda.
Peress li Jekyll hija għodda ddisinjata għall-kumpilazzjoni ta’ data statika u mhix meħtieġa fl-immaġni finali, ikun loġiku li tiġi kkumpilata artifact werf, u fl-immaġni finali jimporta biss ir-riżultat tal-kumpilazzjoni.
Aħna niktbu werf.yaml
Għalhekk, iddeċidejna li se niġbru kull verżjoni f'artifatt werf separat. Madankollu aħna ma nafux kemm se jkun hemm minn dawn l-artifacts waqt l-assemblaġġ, għalhekk ma nistgħux niktbu konfigurazzjoni ta 'bini fiss (b'mod strett, xorta nistgħu, iżda mhux se tkun kompletament effettiva).
werf jippermettilek tuża Mur mudelli fil-fajl tal-konfigurazzjoni tiegħek (werf.yaml), u dan jagħmilha possibbli jiġġeneraw konfigurazzjoni fuq il-fly jiddependi fuq data esterna (dak li għandek bżonn!). Id-dejta esterna fil-każ tagħna hija informazzjoni dwar verżjonijiet u rilaxxi, li fuq il-bażi tagħha niġbru n-numru meħtieġ ta 'artifacts u bħala riżultat niksbu żewġ stampi: werf-doc и werf-dev biex taħdem fuq ċirkwiti differenti.
Id-dejta esterna tgħaddi minn varjabbli ambjentali. Hawnhekk hawn il-kompożizzjoni tagħhom:
RELEASES — linja b’lista ta’ rilaxxi u l-verżjoni attwali korrispondenti ta’ werf, fil-forma ta’ lista ta’ valuri separati bi spazju fil-format <НОМЕР_РЕЛИЗА>%<НОМЕР_ВЕРСИИ>. Eżempju: 1.0%v1.0.4-beta.20
CHANNELS — linja b’lista ta’ kanali u l-verżjoni kurrenti korrispondenti ta’ werf, fil-forma ta’ lista ta’ valuri separati bi spazju fil-format <КАНАЛ>%<НОМЕР_ВЕРСИИ>. Eżempju: 1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22
ROOT_VERSION — werf release verżjoni li għandha tintwera awtomatikament fuq is-sit (mhux dejjem meħtieġ li tintwera d-dokumentazzjoni bl-ogħla numru ta’ rilaxx). Eżempju: v1.0.4-beta.20
REVIEW_SHA — hash tal-kommit tar-reviżjoni li minnu trid tibni l-verżjoni għall-linja tat-test.
Dawn il-varjabbli se jimtlew fil-pipeline GitLab CI, u kif eżattament miktub hawn taħt.
L-ewwelnett, għall-konvenjenza, aħna niddefinixxu fi werf.yaml Mur varjabbli tal-mudelli, assenjawhom valuri minn varjabbli ambjentali:
Id-deskrizzjoni tal-artifact għall-kompilazzjoni tal-verżjoni statika tas-sit hija ġeneralment l-istess għall-każijiet kollha li għandna bżonn (inkluż il-ġenerazzjoni tal-verżjoni għerq, kif ukoll il-verżjoni għaċ-ċirkwit dev). Għalhekk, aħna se nimxu fi blokka separata billi tuża l-funzjoni define - għall-użu mill-ġdid sussegwenti include. Aħna se ngħaddu l-argumenti li ġejjin lill-mudell:
Version — verżjoni ġġenerata (isem tat-tikketta);
Channel — l-isem tal-kanal ta' aġġornament li għalih jiġi ġġenerat l-artifatt;
Commit — kommit hash, jekk l-artifact jiġi ġġenerat għal impenn ta' reviżjoni;
L-isem tal-artifatt għandu jkun uniku. Nistgħu niksbu dan, pereżempju, billi nżidu l-isem tal-kanal (il-valur tal-varjabbli .Channel) bħala suffiss għall-isem tal-artifatt: artifact: doc-{{ .Channel }}. Imma trid tifhem li meta timporta minn artifacts, ikollok bżonn tirreferi għall-istess ismijiet.
Meta tiddeskrivi artifatt, tintuża l-karatteristika werf li ġejja: immuntar. Immuntar li jindika d-direttorju tas-servizz build_dir jippermettilek li tissejvja l-cache Jekyll bejn il-pipeline runs, li tħaffef b'mod sinifikanti l-assemblaġġ mill-ġdid.
Inti jista 'wkoll innotajt l-użu tal-fajl releases.yml huwa fajl YAML b'data ta 'rilaxx mitluba minn Github.com (artifatt miksub meta tesegwixxi pipeline). Huwa meħtieġ meta tiġbor is-sit, iżda fil-kuntest tal-artiklu huwa interessanti għalina għax jiddependi mill-istat tiegħu assemblaġġ mill-ġdid ta’ artifact wieħed biss — artifact tal-verżjoni għerq tas-sit (mhux meħtieġ f'artifacts oħra).
Dan huwa implimentat bl-użu tad-dikjarazzjoni kondizzjonali if Mur mudelli u disinji {{ $Root.Files.Get "releases.yml" | sha256sum }} fl-istadju stadji. Taħdem kif ġej: meta tibni artifact għall-verżjoni għerq (varjabbli .Channel huwa daqs root) file hash releases.yml taffettwa l-firma tal-istadju kollu, peress li hija parti mill-isem tal-kompitu Ansible (parametru name). Għalhekk, meta tinbidel kontenut fajl releases.yml l-artifact korrispondenti se jerġa 'jinġabar.
Jekk jogħġbok oqgħod attent ukoll biex taħdem ma' repożitorju estern. Fl-immaġni ta 'artifact minn repożitorju tal-werf, id-direttorju biss huwa miżjud /docs, u skond il-parametri mgħoddija, id-dejta tat-tikketta meħtieġa jew impenn ta 'reviżjoni hija miżjuda immedjatament.
Biex tuża l-mudell tal-artifact biex tiġġenera deskrizzjoni tal-artifact tal-verżjonijiet trasferiti tal-kanali u r-rilaxxi, norganizzaw loop fuq il-varjabbli .WerfVersions в werf.yaml:
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}}
Għax il-linja se tiġġenera diversi artifacts (nittamaw li hekk), huwa meħtieġ li jittieħed kont tas-separatur bejniethom - is-sekwenza --- (Għal aktar informazzjoni dwar is-sintassi tal-fajl tal-konfigurazzjoni, ara dokumentazzjoni). Kif definit qabel, meta nsejħu mudell f'linja, ngħaddu l-parametri tal-verżjoni, l-URL u l-kuntest tal-għeruq.
Bl-istess mod, iżda mingħajr linja, insejħu l-mudell tal-artifact għal "każijiet speċjali": għall-verżjoni għerq, kif ukoll il-verżjoni mill-impenn tar-reviżjoni:
{{ dict "Version" .WerfRootVersion "Channel" "root" "Root" $Root | include "doc_artifact" }}
---
{{- if .WerfReviewCommit }}
{{ dict "Version" "review" "Channel" "review" "Commit" .WerfReviewCommit "Root" $Root | include "doc_artifact" }}
{{- end }}
Jekk jogħġbok innota li l-artifact għall-impenn tar-reviżjoni jinbena biss jekk il-varjabbli tkun issettjata .WerfReviewCommit.
L-artifacts huma lesti - wasal iż-żmien li tibda timporta!
L-immaġni finali, iddisinjata biex taħdem fuq Kubernetes, hija NGINX regolari b'fajl ta 'konfigurazzjoni tas-server miżjud nginx.conf u statiku minn artifacts. Minbarra l-artifact tal-verżjoni għerq tas-sit, għandna bżonn nirrepetu l-linja fuq il-varjabbli .WerfVersions biex timporta artifacts tal-kanal u tirrilaxxa verżjonijiet + segwi r-regola tal-ismijiet tal-artifact li adottajna qabel. Peress li kull artifact jaħżen verżjonijiet tas-sit għal żewġ lingwi, aħna jimportawhom fil-postijiet ipprovduti mill-konfigurazzjoni.
L-immaġni addizzjonali, li, flimkien ma 'dik prinċipali, hija mnedija fuq iċ-ċirkwit dev, fiha biss żewġ verżjonijiet tas-sit: il-verżjoni mill-impenn ta' reviżjoni u l-verżjoni għerq tas-sit (hemm assi ġenerali u, jekk tiftakar , rilaxx tad-data). Għalhekk, l-immaġni addizzjonali se tkun differenti minn dik prinċipali biss fit-taqsima tal-importazzjoni (u, ovvjament, fl-isem):
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 }}
Kif innutat hawn fuq, l-artifact għall-impenn tar-reviżjoni se jiġi ġġenerat biss meta titħaddem il-varjabbli ambjentali stabbilit REVIEW_SHA. Ikun possibbli li l-immaġni werf-dev ma tiġġenera xejn jekk ma jkun hemm l-ebda varjabbli ambjentali REVIEW_SHA, iżda sabiex tindif bil-policies L-immaġini Docker f'werf ħadmu għall-immaġni werf-dev, aħna se nħalluha tinbena biss bl-artifact tal-verżjoni tal-għeruq (diġà hija mibnija xorta waħda), biex tissimplifika l-istruttura tal-pipeline.
L-assemblaġġ huwa lest! Ejja ngħaddu għal CI/CD u sfumaturi importanti.
Pipeline f'GitLab CI u karatteristiċi ta 'bini dinamiku
Meta nħaddmu l-bini għandna bżonn nissettjaw il-varjabbli ambjentali użati fihom werf.yaml. Dan ma japplikax għall-varjabbli REVIEW_SHA, li aħna se nissettjaw meta nsejħu pipeline mill-ganċ GitHub.
Aħna se niġġeneraw id-dejta esterna meħtieġa fi skript Bash generate_artifacts, li se jiġġenera żewġ artifacts tal-pipeline GitLab:
fajl releases.yml b'data ta' rilaxx,
fajl common_envs.sh, li jkun fih il-varjabbli ambjentali li jridu jiġu esportati.
Kontenut tal-fajl generate_artifacts issib fil tagħna repożitorji b'eżempji. Ir-riċeviment tad-dejta nnifisha mhuwiex is-suġġett tal-artikolu, iżda l-fajl common_envs.sh huwa importanti għalina, għaliex ix-xogħol tal-werf jiddependi minnu. Eżempju tal-kontenut tiegħu:
Tista 'tuża l-output ta' tali skript, pereżempju, billi tuża l-funzjoni Bash source.
Issa tiġi l-parti divertenti. Sabiex kemm il-bini kif ukoll l-iskjerament tal-applikazzjoni jaħdmu b'mod korrett, huwa meħtieġ li jiġi żgurat li werf.yaml kien l-istess l-inqas fi ħdan pipeline wieħed. Jekk din il-kundizzjoni ma tiġix sodisfatta, allura l-firem tal-istadji li werf jikkalkula waqt l-assemblaġġ u, pereżempju, l-iskjerament, ikunu differenti. Dan iwassal għal żball fl-iskjerament, għaliex... l-immaġni meħtieġa għall-iskjerament se tkun nieqsa.
Fi kliem ieħor, jekk waqt l-assemblaġġ tal-immaġni tas-sit l-informazzjoni dwar ir-rilaxxi u l-verżjonijiet tkun l-istess, u fil-ħin tal-iskjerament tiġi rilaxxata verżjoni ġdida u l-varjabbli tal-ambjent għandhom valuri differenti, allura l-iskjerament ifalli bi żball: wara kollox, l-artifact tal-verżjoni l-ġdida għadha ma nbnietx.
Jekk ġenerazzjoni werf.yaml jiddependi fuq data esterna (per eżempju, lista ta 'verżjonijiet attwali, bħal fil-każ tagħna), allura l-kompożizzjoni u l-valuri ta' tali data għandhom jiġu rreġistrati fil-pipeline. Dan huwa speċjalment importanti jekk il-parametri esterni jinbidlu spiss.
Se nkunu tirċievi u tirreġistra data esterna fl-ewwel stadju tal-pipeline f'GitLab (Prebuild) u jittrasmettihom aktar fil-forma Artifatt GitLab CI. Dan jippermettilek tħaddem u terġa 'tibda l-impjiegi tal-pipeline (bini, skjerament, tindif) bl-istess konfigurazzjoni werf.yaml.
Wara li tkun qabad id-dejta esterna fl-artifatt, tista 'tibni u tuża l-istadji standard tal-pipeline GitLab CI: Ibni u Skjerament. Inniedu l-pipeline innifsu billi nużaw ganċijiet mir-repożitorju tal-Werf GitHub (jiġifieri, meta jkun hemm bidliet fir-repożitorju GitHub). Id-dejta għalihom tista 'tinstab fil-proprjetajiet tal-proġett GitLab fit-taqsima Settings CI/CD -> Pipeline triggers, u mbagħad oħloq il-Webhook korrispondenti f'GitHub (Settings -> Webhooks).
GitLab se jżid żewġ artifacts mill-istadju għall-istadju tal-bini Prebuild, għalhekk nesportaw varjabbli b'dejta ta 'input ippreparata bl-użu tal-kostrutt source common_envs.sh. Nibdew l-istadju tal-bini fil-każijiet kollha, ħlief għat-tnedija tal-pipeline skont skeda. Skont l-iskeda, se nħaddmu pipeline għat-tindif - f'dan il-każ m'hemmx bżonn li twettaq l-assemblaġġ.
Fl-istadju tal-iskjerament, se niddeskrivu żewġ kompiti - separatament għall-iskjerament għal ċirkwiti ta 'produzzjoni u dev, bl-użu ta' mudell YAML:
Il-kompiti essenzjalment ivarjaw biss billi jindikaw il-kuntest tal-cluster li fih werf għandu jwettaq l-iskjerament (WERF_KUBE_CONTEXT), u l-issettjar tal-varjabbli tal-ambjent tal-linja (environment.name и environment.url), li mbagħad jintużaw f'mudelli ta' chart Helm. Aħna mhux se nipprovdu l-kontenut tal-mudelli, għaliex... m'hemm xejn interessanti hemmhekk għas-suġġett inkwistjoni, iżda tista' ssibhom ġo repożitorji għall-artiklu.
Touch finali
Peress li l-verżjonijiet tal-werf huma rilaxxati spiss, immaġini ġodda se jinbnew ta 'spiss, u r-Reġistru Docker dejjem jikber. Għalhekk, huwa imperattiv li jiġi kkonfigurat it-tindif awtomatiku tal-immaġni bbażat fuq il-politiki. Huwa faċli ħafna li tagħmel.
Biex timplimenta ser ikollok bżonn:
Żid pass tat-tindif għal .gitlab-ci.yml;
Żid eżekuzzjoni perjodika ta 'kompitu ta' tindif;
Stabbilixxi varjabbli ambjentali b'token ta' aċċess għall-kitba.
Diġà rajna kważi dan kollu ftit ogħla - biss biex tnaddaf trid l-ewwel tidħol fir-Reġistru Docker b'token li għandu d-drittijiet li jħassar immaġini fir-Reġistru Docker (it-token tal-ħidma GitLab CI maħruġ awtomatikament ma jagħmilx). għandhom dawn id-drittijiet). It-token għandu jinħoloq f'GitLab minn qabel u l-valur tiegħu għandu jiġi speċifikat fil-varjabbli ambjentali WERF_IMAGES_CLEANUP_PASSWORD il-proġett (Settings CI/CD -> Varjabbli).
Iż-żieda ta 'kompitu ta' tindif bl-iskeda meħtieġa ssir fi CI/CD ->
Skedi.
Dak hu: proġett fir-Reġistru Docker mhux se jkompli jikber kontinwament minn immaġini mhux użati.
Fl-aħħar tal-parti prattika, ħalluni nfakkarkom li listi sħaħ mill-artiklu huma disponibbli fi go:
Irċevejna struttura ta 'assemblaġġ loġiku: artifact wieħed għal kull verżjoni.
L-assemblaġġ huwa universali u ma jeħtieġx bidliet manwali meta verżjonijiet ġodda ta 'werf jiġu rilaxxati: id-dokumentazzjoni fuq il-websajt tiġi aġġornata awtomatikament.
Żewġ stampi huma mmuntati għal kontorni differenti.
Jaħdem malajr, għaliex Il-caching jintuża kemm jista 'jkun - meta tiġi rilaxxata verżjoni ġdida ta' werf jew ganċ GitHub jissejjaħ għal impenn ta 'reviżjoni, jinbena mill-ġdid biss l-artifact korrispondenti bil-verżjoni mibdula.
M'hemmx għalfejn taħseb dwar it-tħassir ta 'immaġini mhux użati: it-tindif skont il-politiki tal-werf se jżomm ir-Reġistru Docker fl-ordni.
Sejbiet
L-użu ta 'werf jippermetti li l-assemblaġġ jaħdem malajr minħabba l-caching kemm tal-assemblaġġ innifsu kif ukoll il-caching meta taħdem ma' repożitorji esterni.
Il-ħidma ma 'repożitorji Git esterni telimina l-ħtieġa li r-repożitorju kollu jiġi kklonat kull darba jew tivvinta mill-ġdid ir-rota b'loġika ta' ottimizzazzjoni delikata. werf juża cache u jagħmel il-klonazzjoni darba biss, u mbagħad juża fetch u biss meta jkun meħtieġ.
Kapaċità li tuża mudelli Go fil-fajl tal-konfigurazzjoni tal-bini werf.yaml jippermettilek tiddeskrivi assemblaġġ li r-riżultat tiegħu jiddependi fuq data esterna.
L-użu tal-muntatura fil-werf iħaffef b'mod sinifikanti l-ġbir ta 'artifacts - minħabba l-cache, li huwa komuni għall-pipelines kollha.
werf jagħmilha faċli biex jiġi kkonfigurat it-tindif, li huwa speċjalment importanti meta tinbena b'mod dinamiku.