ProHoster > Blog > İdarə > Versiyalaşdırılmış sənəd saytı nümunəsində werf ilə Docker şəkillərinin dinamik qurulması və yerləşdirilməsi
Versiyalaşdırılmış sənəd saytı nümunəsində werf ilə Docker şəkillərinin dinamik qurulması və yerləşdirilməsi
GitOps alətimiz haqqında artıq bir dəfədən çox danışmışıq. werf, və bu dəfə saytı layihənin özünün sənədləri ilə toplamaq təcrübəmizi bölüşmək istərdik - werf.io (onun rus versiyası en.werf.io). Bu, adi statik saytdır, lakin onun yığılması maraqlıdır ki, o, dinamik sayda artefaktlardan istifadə etməklə qurulur.
Sayt strukturunun nüanslarına keçin: bütün versiyalar üçün ümumi menyu yaratmaq, buraxılışlar haqqında məlumat olan səhifələr və s. - etməyəcəyik. Bunun əvəzinə, dinamik montajın məsələlərinə və xüsusiyyətlərinə və bir az da onu müşayiət edən CI/CD proseslərinə diqqət yetirək.
Giriş: sayt necə işləyir
Başlamaq üçün, werf sənədləri kodu ilə birlikdə saxlanılır. Bu, ümumiyyətlə bu məqalənin əhatə dairəsindən kənarda olan müəyyən inkişaf tələblərini qoyur, lakin ən azı belə demək olar:
Yeni werf funksiyaları sənədləri yeniləmədən buraxılmamalıdır və əksinə, sənədlərdə hər hansı dəyişiklik werf-in yeni versiyasının buraxılmasını nəzərdə tutur;
Layihə kifayət qədər intensiv inkişafa malikdir: yeni versiyalar gündə bir neçə dəfə buraxıla bilər;
Sənədlərin yeni versiyası ilə saytı yerləşdirmək üçün hər hansı əl əməliyyatları ən azı yorucudur;
Layihə semantik yanaşmanı qəbul edir versiyalaşdırma, 5 sabitlik kanalı ilə. Buraxılış prosesi sabitliyin artırılması üçün kanallar vasitəsilə versiyaların ardıcıl keçidini nəzərdə tutur: alfadan qaya kimi möhkəmliyə;
Saytın əsas (yəni ingilis dilli) versiyası ilə paralel olaraq "yaşayan və inkişaf edən" (yəni məzmunu yenilənən) rusdilli versiyası var.
Bütün bu "daxili mətbəxi" istifadəçidən gizlətmək üçün ona "sadəcə işləyən" bir şey təklif etdik ayrı werf quraşdırma və yeniləmə aləti - Mi multiwerf. Siz sadəcə olaraq buraxılış nömrəsini və istifadəyə hazır olduğunuz stabillik kanalını göstərməlisiniz və multiwerf kanalda yeni versiyanın olub-olmadığını yoxlayacaq və lazım gələrsə onu endirin.
Veb saytdakı versiya seçimi menyusunda werf-in ən son versiyaları hər bir kanalda mövcuddur. Varsayılan olaraq, ünvana görə werf.io/documentation ən son buraxılış üçün ən sabit kanalın versiyası açılır - o da axtarış motorları tərəfindən indekslənir. Kanal üçün sənədlər ayrı-ayrı ünvanlarda mövcuddur (məsələn, werf.io/v1.0-beta/documentation beta buraxılışı 1.0 üçün).
Ümumilikdə saytda aşağıdakı versiyalar mövcuddur:
kök (standart olaraq açılır),
hər buraxılışın hər bir aktiv yeniləmə kanalı üçün (məsələn, werf.io/v1.0-beta).
Bir saytın konkret versiyasını yaratmaq üçün, ümumiyyətlə, istifadə edərək tərtib etmək kifayətdir Jekyllkataloqda işləməklə /docs werf repository müvafiq əmri (jekyll build), tələb olunan versiyanın Git teqinə keçdikdən sonra.
Yalnız əlavə etmək qalır:
kommunal özü (werf) montaj üçün istifadə olunur;
CI/CD prosesləri GitLab CI əsasında qurulur;
və bütün bunlar, əlbəttə ki, Kubernetesdə işləyir.
vəzifələri
İndi bütün təsvir olunan xüsusiyyətləri nəzərə alan vəzifələri tərtib edək:
İstənilən yeniləmə kanalında werf versiyasını dəyişdikdən sonra saytdakı sənədlər avtomatik olaraq yenilənməlidir.
İnkişaf üçün bəzən bacarmalısan saytın önizləmə versiyalarına baxın.
Müvafiq Git teqlərindən istənilən kanaldakı versiyanı dəyişdirdikdən sonra sayt yenidən tərtib edilməlidir, lakin təsvirin qurulması prosesində biz aşağıdakı xüsusiyyətləri əldə edəcəyik:
Kanallardakı versiyaların siyahısı dəyişdiyindən, yalnız versiyanın dəyişdiyi kanallar üçün sənədləri yenidən qurmaq lazımdır. Axı, hər şeyi yenidən qurmaq çox xoş deyil.
Buraxılışlar üçün kanallar dəsti dəyişə bilər. Məsələn, bir anda kanallarda erkən giriş 1.1 buraxılışından daha sabit versiya olmaya bilər, lakin zaman keçdikcə onlar görünəcək - bu halda montajı əl ilə dəyişməli deyilsiniz?
O çıxır ki, montaj xarici məlumatların dəyişdirilməsindən asılıdır.
Tətbiq
Bir yanaşmanın seçilməsi
Alternativ olaraq, hər bir tələb olunan versiyanı Kubernetes-də ayrıca pod kimi işlədə bilərsiniz. Bu seçim klasterdə sabit werf buraxılışlarının sayının artması ilə artacaq daha çox sayda obyekti nəzərdə tutur. Və bu, öz növbəsində, daha mürəkkəb texniki xidmət göstərir: hər versiyanın öz HTTP serveri var və kiçik bir yüklə. Təbii ki, bu da daha böyük resurs xərclərini nəzərdə tutur.
Eyni yolu tutduq bütün lazımi versiyaları bir görüntüdə toplamaq. Saytın bütün versiyalarının tərtib edilmiş statikası NGINX ilə konteynerdə yerləşir və müvafiq Yerləşdirməyə trafik NGINX Ingress vasitəsilə gəlir. Sadə bir quruluş - vətəndaşlığı olmayan proqram - Kubernetes-in özündən istifadə edərək Yerləşdirməni (yükdən asılı olaraq) asanlıqla miqyaslandırmağa imkan verir.
Daha dəqiq desək, iki şəkil toplayırıq: biri istehsal sxemi üçün, ikincisi isə inkişaf dövrəsi üçün əlavədir. Əlavə şəkil əsas ilə birlikdə yalnız dev sxemində istifadə olunur (başa salınır) və baxışdan alınan saytın versiyasını ehtiva edir və onlar arasında marşrutlaşdırma Ingress resurslarından istifadə etməklə həyata keçirilir.
werf vs git klonu və artefaktları
Artıq qeyd edildiyi kimi, sənədlərin müəyyən bir versiyası üçün sayt statikası yaratmaq üçün müvafiq depo etiketinə keçərək qurmalısınız. Bunu, hər dəfə qurduğunuzda anbarı klonlaşdırmaqla, siyahıdan müvafiq teqləri seçməklə də edə bilərsiniz. Bununla belə, bu, kifayət qədər resurs tələb edən bir əməliyyatdır və üstəlik, qeyri-trivial təlimatların yazılmasını tələb edir... Başqa bir ciddi çatışmazlıq budur ki, bu yanaşma ilə montaj zamanı nəyisə keş etmək imkanı yoxdur.
Burada werf yardım proqramının özü həyata keçirərək köməyimizə gəlir smart caching və istifadə etməyə imkan verir xarici depolar. Repozitoriyadan kod əlavə etmək üçün werf-dən istifadə tikintini əhəmiyyətli dərəcədə sürətləndirəcək, çünki werf mahiyyətcə deponu bir dəfə klonlayır və sonra icra edir yalnızfetch zəruridirsə. Bundan əlavə, depodan məlumat əlavə edərkən biz yalnız lazımi qovluqları seçə bilərik (bizim vəziyyətimizdə bu kataloqdur docs), bu, əlavə məlumatların miqdarını əhəmiyyətli dərəcədə azaldacaq.
Jekyll statik məlumatların tərtibi üçün nəzərdə tutulmuş bir alət olduğundan və son görüntüdə lazım olmadığından, burada tərtib etmək məntiqli olardı. werf artefaktı, və son görüntüyə daxil olun yalnız kompilyasiya nəticəsini idxal edin.
werf.yaml yazırıq
Beləliklə, hər bir versiyanı ayrıca bir werf artefaktında tərtib etməyə qərar verdik. Bununla belə biz montaj zamanı bu artefaktlardan nə qədərinin olacağını bilmirik, buna görə də biz sabit konfiqurasiya yaza bilmirik (doğru desək, hələ də edə bilərik, lakin bu, tamamilə effektiv olmayacaq).
werf istifadə etməyə imkan verir Şablonlara keçin konfiqurasiya faylınızda (werf.yaml) və bu, mümkün edir konfiqurasiyanı tez yaradın xarici məlumatlardan asılı olaraq (sizə nə lazımdır!). Bizim vəziyyətimizdə xarici məlumatlar versiyalar və buraxılışlar haqqında məlumatdır, bunun əsasında lazımi sayda artefakt toplayırıq və nəticədə iki şəkil əldə edirik: werf-doc и werf-dev müxtəlif dövrələrdə işləmək.
Xarici məlumatlar mühit dəyişənləri vasitəsilə ötürülür. Budur onların tərkibi:
RELEASES - formatda boşluqla ayrılmış dəyərlər siyahısı şəklində buraxılışların siyahısı və werf-in müvafiq cari versiyası olan bir xətt <НОМЕР_РЕЛИЗА>%<НОМЕР_ВЕРСИИ>. Nümunə: 1.0%v1.0.4-beta.20
CHANNELS - formatda boşluqla ayrılmış dəyərlər siyahısı şəklində kanalların siyahısı və werf-in müvafiq cari versiyası olan bir xətt <КАНАЛ>%<НОМЕР_ВЕРСИИ>. Nümunə: 1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22
ROOT_VERSION — werf buraxılış versiyası standart olaraq saytda göstərilməlidir (sənədləri ən yüksək buraxılış nömrəsi ilə göstərmək həmişə lazım deyil). Misal: v1.0.4-beta.20
REVIEW_SHA — sınaq dövrəsinin versiyasını qurmaq üçün lazım olan baxış öhdəliyinin hashı.
Bu dəyişənlər GitLab CI boru kəmərində doldurulacaq və aşağıda dəqiq necə yazılacaq.
Hər şeydən əvvəl, rahatlıq üçün biz müəyyən edirik werf.yaml Şablon dəyişənlərinə keçin, onlara mühit dəyişənlərindən dəyərlər təyin edin:
Saytın statik versiyasını tərtib etmək üçün artefaktın təsviri ümumiyyətlə ehtiyac duyduğumuz bütün hallar üçün eynidır (o cümlədən kök versiyasını yaratmaq, həmçinin inkişaf dövrəsi üçün versiya). Buna görə də, funksiyadan istifadə edərək onu ayrı bir bloka köçürəcəyik define - sonradan təkrar istifadə üçün include. Aşağıdakı arqumentləri şablona ötürəcəyik:
Artefakt adı unikal olmalıdır. Buna, məsələn, kanal adını (dəyişənin dəyərini) əlavə etməklə nail ola bilərik .Channel) artefaktın adına şəkilçi olaraq: artifact: doc-{{ .Channel }}. Ancaq başa düşməlisiniz ki, artefaktlardan idxal edərkən eyni adlara müraciət etməlisiniz.
Artefaktı təsvir edərkən aşağıdakı werf xüsusiyyətindən istifadə olunur: montaj. Xidmət kataloqunu göstərən montaj build_dir boru kəmərləri arasında Jekyll keşini saxlamağa imkan verir yenidən yığılmasını əhəmiyyətli dərəcədə sürətləndirir.
Faylın istifadəsinə də diqqət yetirmiş ola bilərsiniz releases.yml buraxılış məlumatları tələb olunan YAML faylıdır Github.com (boru kəmərinin icrası zamanı əldə edilən artefakt). Saytı tərtib edərkən lazımdır, lakin məqalənin kontekstində vəziyyətindən asılı olduğu üçün bizim üçün maraqlıdır yalnız bir artefaktın yenidən yığılması — saytın kök versiyasının artefaktı (digər artefaktlarda buna ehtiyac yoxdur).
Bu şərti ifadədən istifadə etməklə həyata keçirilir if Şablonlara və dizaynlara keçin {{ $Root.Files.Get "releases.yml" | sha256sum }} mərhələdə mərhələləri. Bu aşağıdakı kimi işləyir: kök versiyası üçün artefakt qurarkən (dəyişən .Channel bərabərdir root) fayl hash releases.yml Ansible tapşırığının adının bir hissəsi olduğu üçün bütün mərhələnin imzasına təsir göstərir (parametr name). Beləliklə, dəyişdirərkən məzmun fayl releases.yml müvafiq artefakt yenidən yığılacaq.
Xahiş edirəm xarici repozitoriya ilə işləməyə də diqqət yetirin. Bir artefakt şəklində werf deposu, yalnız kataloq əlavə olunur /docs, və keçən parametrlərdən asılı olaraq, tələb olunan etiket və ya nəzərdən keçirmə öhdəliyinin məlumatları dərhal əlavə edilir.
Kanalların və buraxılışların köçürülmüş versiyalarının artefaktının təsvirini yaratmaq üçün artefakt şablonundan istifadə etmək üçün dəyişən üzərində dövrə təşkil edirik. .WerfVersions в werf.yaml:
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}}
Çünki döngə bir neçə artefakt yaradacaq (ümid edirik), onların arasındakı ayırıcını - ardıcıllığı nəzərə almaq lazımdır --- (Konfiqurasiya faylının sintaksisi haqqında ətraflı məlumat üçün bax sənədləşdirmə). Daha əvvəl müəyyən edildiyi kimi, şablonu dövrədə çağırarkən biz versiya parametrlərini, URL və kök kontekstini ötürürük.
Eynilə, lakin döngə olmadan, biz “xüsusi hallar” üçün artefakt şablonunu çağırırıq: kök versiya üçün, eləcə də nəzərdən keçirilən versiya üçün:
{{ 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 }}
Nəzərdən keçirmə öhdəliyi üçün artefaktın yalnız dəyişən təyin edildikdə qurulacağını unutmayın .WerfReviewCommit.
Artefaktlar hazırdır - idxal etməyə başlamağın vaxtıdır!
Kubernetes-də işləmək üçün hazırlanmış son şəkil server konfiqurasiya faylı əlavə edilmiş adi NGINX-dir. nginx.conf və artefaktlardan statik. Saytın kök versiyasının artefaktına əlavə olaraq, dəyişəndəki döngəni təkrarlamalıyıq .WerfVersions kanal artefaktlarını idxal etmək və versiyaları buraxmaq + əvvəllər qəbul etdiyimiz artefakt adlandırma qaydasına əməl edin. Hər bir artefakt saytın iki dil üçün versiyalarını saxladığından, biz onları konfiqurasiyanın təmin etdiyi yerlərə idxal edirik.
Əsas ilə birlikdə dev sxemində işə salınan əlavə şəkil saytın yalnız iki versiyasını ehtiva edir: baxışdan alınan versiya və saytın kök versiyası (ümumi aktivlər var və xatırlayırsınızsa , buraxılış məlumatları). Beləliklə, əlavə şəkil əsasdan yalnız idxal bölməsində (və təbii ki, adda) fərqlənəcək:
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 }}
Yuxarıda qeyd edildiyi kimi, nəzərdən keçirmə öhdəliyi üçün artefakt yalnız müəyyən edilmiş mühit dəyişəni işə salındıqda yaradılacaq. REVIEW_SHA. Heç bir mühit dəyişəni olmasa, werf-dev şəklini ümumiyyətlə yaratmamaq mümkün olardı REVIEW_SHA, lakin etmək üçün siyasətlə təmizləmə Werf-dəki Docker şəkilləri werf-dev təsviri üçün işlədi, biz onu yalnız kök versiya artefaktı ilə (hər halda qurulub) ilə tikilməyə buraxacağıq, boru kəmərinin strukturunu sadələşdirmək üçün.
Məclis hazırdır! CI/CD və mühüm nüanslara keçək.
GitLab CI-də boru kəməri və dinamik quruluşun xüsusiyyətləri
Quraşdırmanı işləyərkən istifadə olunan mühit dəyişənlərini təyin etməliyik werf.yaml. Bu, GitHub çəngəlindən boru xəttinə zəng edərkən təyin edəcəyimiz REVIEW_SHA dəyişəninə aid deyil.
Biz Bash skriptində lazımi xarici məlumatları yaradacağıq generate_artifacts, iki GitLab boru kəməri artefaktını yaradacaq:
fayl releases.yml buraxılış məlumatları ilə,
fayl common_envs.sh, ixrac ediləcək mühit dəyişənlərini ehtiva edir.
Fayl məzmunu generate_artifacts bizdə tapa bilərsiniz nümunələri ilə depolar. Məlumatların qəbulu məqalənin mövzusu deyil, fayldır common_envs.sh bizim üçün vacibdir, çünki werf-in işi ondan asılıdır. Onun məzmununa bir nümunə:
Belə bir skriptin çıxışından, məsələn, Bash funksiyasından istifadə edə bilərsiniz source.
İndi əyləncə hissəsi gəlir. Tətbiqin həm qurulması, həm də yerləşdirilməsinin düzgün işləməsi üçün bunu təmin etmək lazımdır werf.yaml oldu eyni heç olmasa bir boru kəməri daxilində. Bu şərt yerinə yetirilməzsə, o zaman werf-in montaj və məsələn, yerləşdirmə zamanı hesabladığı mərhələlərin imzaları fərqli olacaq. Bu, yerləşdirmə xətasına səbəb olacaq, çünki... yerləşdirmə üçün tələb olunan şəkil itkin olacaq.
Başqa sözlə, əgər sayt şəklinin yığılması zamanı buraxılışlar və versiyalar haqqında məlumat eyni olarsa və yerləşdirmə zamanı yeni versiya buraxılırsa və ətraf mühit dəyişənləri fərqli dəyərlərə malikdirsə, onda yerləşdirmə xəta ilə uğursuz olacaq: axı yeni versiyanın artefaktı hələ qurulmayıb.
Əgər nəsil werf.yaml xarici məlumatlardan asılıdır (məsələn, bizim vəziyyətimizdə olduğu kimi cari versiyaların siyahısı), onda belə məlumatların tərkibi və dəyərləri boru kəməri daxilində qeyd edilməlidir. Xarici parametrlər olduqca tez-tez dəyişirsə, bu xüsusilə vacibdir.
Biz edəcəyik xarici məlumatları qəbul etmək və qeyd etmək GitLab-da boru kəmərinin birinci mərhələsində (Əvvəlcədən qurulma) və onları formada daha da ötürün GitLab CI artefaktı. Bu, sizə eyni konfiqurasiya ilə boru kəməri işlərini (qurma, yerləşdirmə, təmizləmə) yerinə yetirməyə və yenidən başlamağa imkan verəcək. werf.yaml.
Artefaktdakı xarici məlumatları ələ keçirdikdən sonra standart GitLab CI boru kəməri mərhələlərindən istifadə edərək qura və yerləşdirə bilərsiniz: Qurmaq və Yerləşdirmək. Biz werf GitHub repozitoriyasındakı qarmaqlardan istifadə edərək (yəni, GitHub deposunda dəyişikliklər olduqda) boru kəmərinin özünü işə salırıq. Onlar üçün məlumatları bölmədəki GitLab layihəsinin xüsusiyyətlərində tapa bilərsiniz CI/CD Parametrləri -> Boru kəməri tetikleyicileri, və sonra GitHub-da müvafiq Webhook yaradın (Parametrlər -> Webhooks).
GitLab səhnədən tikinti mərhələsinə iki artefakt əlavə edəcək Əvvəlcədən qurulma, buna görə də konstruksiyadan istifadə edərək hazırlanmış giriş məlumatları ilə dəyişənləri ixrac edirik source common_envs.sh. Boru kəmərinin qrafikə uyğun işə salınması istisna olmaqla, biz bütün hallarda tikinti mərhələsinə başlayırıq. Cədvələ uyğun olaraq, təmizləmə üçün bir boru kəməri çəkəcəyik - bu halda montaj yerinə yetirməyə ehtiyac yoxdur.
Yerləşdirmə mərhələsində biz iki tapşırığı təsvir edəcəyik - ayrıca YAML şablonundan istifadə edərək istehsal və inkişaf sxemlərinə yerləşdirmə üçün:
Tapşırıqlar yalnız werf-in yerləşdirməni yerinə yetirməli olduğu klaster kontekstini göstərməklə əsaslı şəkildə fərqlənir (WERF_KUBE_CONTEXT) və dövrə mühiti dəyişənlərinin təyin edilməsi (environment.name и environment.url), daha sonra Helm diaqram şablonlarında istifadə olunur. Şablonların məzmununu təqdim etməyəcəyik, çünki... orada sözügedən mövzu üçün maraqlı heç nə yoxdur, lakin siz onları burada tapa bilərsiniz məqalə üçün depolar.
Final toxunuşu
Werf versiyaları tez-tez buraxıldığından, tez-tez yeni şəkillər qurulacaq və Docker Registry daim böyüyəcəkdir. Buna görə də, siyasətlərə əsaslanaraq avtomatik təsvirin təmizlənməsini konfiqurasiya etmək vacibdir. Bunu etmək çox asandır.
Həyata keçirmək üçün sizə lazım olacaq:
Təmizləmə addımını əlavə edin .gitlab-ci.yml;
Təmizləmə tapşırığının dövri icrasını əlavə edin;
Yazma giriş nişanı ilə mühit dəyişənini qurun.
Təmizləmə mərhələsinin əlavə edilməsi .gitlab-ci.yml:
Demək olar ki, bunların hamısını bir az daha yüksək görmüşük - yalnız onu təmizləmək üçün əvvəlcə Docker Reyestrində şəkilləri silmək hüququna malik olan bir işarə ilə Docker Reyestrinə daxil olmalısınız (avtomatik olaraq buraxılmış GitLab CI tapşırıq nişanı yoxdur. belə hüquqlara malikdir). Token əvvəlcədən GitLab-da yaradılmalı və onun dəyəri mühit dəyişənində göstərilməlidir WERF_IMAGES_CLEANUP_PASSWORD Layihə (CI/CD Parametrləri -> Dəyişənlər).
Tələb olunan cədvəllə təmizlik tapşırığı əlavə edilir CI/CD ->
Cədvəllər.
Budur: Docker Registry-dəki bir layihə artıq istifadə olunmamış şəkillərdən daim inkişaf etməyəcək.
Praktiki hissənin sonunda sizə xatırlatmaq istəyirəm ki, məqalənin tam siyahıları burada mövcuddur get:
Məntiqi montaj strukturu əldə etdik: hər versiya üçün bir artefakt.
Montaj universaldır və werf-in yeni versiyaları buraxıldıqda əl ilə dəyişikliklər tələb etmir: veb-saytdakı sənədlər avtomatik olaraq yenilənir.
Müxtəlif konturlar üçün iki şəkil yığılmışdır.
Tez işləyir, çünki Mümkün qədər keşləmə istifadə olunur - werf-in yeni versiyası buraxıldıqda və ya GitHub çəngəl nəzərdən keçirməyə çağırıldıqda, yalnız dəyişdirilmiş versiya ilə uyğun artefakt yenidən qurulur.
İstifadə edilməmiş şəkilləri silmək barədə düşünməyə ehtiyac yoxdur: werf siyasətlərinə uyğun təmizləmə Docker Registry-ni qaydasında saxlayacaq.
Tapıntılar
Werf-dən istifadə həm montajın özünün keşləşdirilməsi, həm də xarici depolarla işləyərkən keşləşdirilməsi sayəsində montajın tez işləməsinə imkan verir.
Xarici Git repozitoriyaları ilə işləmək hər dəfə bütün repozitoriyanın klonlanması və ya çətin optimallaşdırma məntiqi ilə çarxı yenidən kəşf etmək ehtiyacını aradan qaldırır. werf keşdən istifadə edir və klonlaşdırmanı yalnız bir dəfə edir və sonra istifadə edir fetch və yalnız lazım olduqda.
Quraşdırma konfiqurasiya faylında Go şablonlarından istifadə etmək imkanı werf.yaml nəticəsi xarici məlumatlardan asılı olan montajı təsvir etməyə imkan verir.
Werf-də montajdan istifadə, bütün boru kəmərləri üçün ümumi olan önbellek sayəsində artefaktların yığılmasını əhəmiyyətli dərəcədə sürətləndirir.
werf təmizləməni konfiqurasiya etməyi asanlaşdırır, bu xüsusilə dinamik şəkildə qurarkən vacibdir.