Ua uma ona matou talanoa e uiga i la matou meafaigaluega GitOps sili atu ma le tasi. , ma o le taimi lenei matou te fia faʻasoa atu lo matou poto masani i le faʻapipiʻiina o le saite ma faʻamaumauga o le poloketi lava ia - (o lana lomiga Rusia o ). O se nofoaga masani masani lenei, ae o lona faʻapotopotoga e manaia ona o loʻo fausia e faʻaaoga ai se numera malosi o mea taua.

Alu i nuances o le fausaga o le upega tafaʻilagi: fatuina o se lisi masani mo faʻaliliuga uma, itulau ma faʻamatalaga e uiga i faʻasalalauga, ma isi. - matou te le. Nai lo lena, sei o tatou taulai atu i mataupu ma foliga o le faʻapotopotoga malosi ma sina mea itiiti ile faʻagasologa o le CI / CD.
Folasaga: fa'afefea ona galue le saite
I le amataga, o faʻamaumauga werf o loʻo teuina faʻatasi ma lona code. O lenei mea e tuʻuina atu ai ni manaʻoga tau atinaʻe e masani lava i tua atu o le lautele o lenei tusiga, ae i se tulaga maualalo e mafai ona faʻapea:
- O galuega fou a le werf e le tatau ona tatalaina e aunoa ma le faʻafouina o faʻamaumauga ma, i se isi itu, soʻo se suiga i faʻamaumauga e faʻaalia ai le tatalaina o se faʻamatalaga fou o le werf;
- O le poloketi o loʻo i ai se atinaʻe malosi: e mafai ona faʻasalalau faʻamatalaga fou i le tele o taimi i le aso;
- So'o se fa'agaioiga tusi lesona e fa'apipi'i ai se 'upega tafa'ilagi ma se fa'amatalaga fou o fa'amaumauga e le'i fa'avaivai;
- O le poloketi e faʻaaogaina se auala faʻapitoa , fa'atasi ai ma ala mautu 5. O le fa'agaioiga fa'asa'oloto e aofia ai fa'asologa fa'asolosolo o fa'aliliuga e ala i alavai ina ia fa'atuputeleina le mautu: mai le alafa'atasi i le papa-mautu;
- O le 'upega tafaʻilagi o loʻo i ai se gagana Rusia-gagana, lea e "ola ma atiina ae" (o lona uiga, o mea o loʻo faʻafouina) e tutusa ma le autu (ie, Igilisi-gagana).
Ina ia natia uma nei " umukuka i totonu " mai le tagata faʻaoga, ofoina atu ia te ia se mea "naʻo le galue", na matou faia fa'apipi'i werf ma fa'afou meafaigaluega - o lea lava . E tatau lava ona e faʻamaonia le numera faʻamalolo ma le laina mautu o loʻo e sauni e faʻaoga, ma multiwerf o le a siaki pe iai se faʻamatalaga fou i luga o le auala ma sii mai pe a manaʻomia.
I le lisi o filifiliga filifiliga i luga o le upega tafaʻilagi, o lomiga fou o le werf o loʻo avanoa i alalaupapa taʻitasi. E ala ile tuatusi, ile tuatusi o le lomiga o le auala sili ona mautu mo le faʻasalalauga lata mai ua tatalaina - o loʻo faʻasinoina foi e masini suʻesuʻe. E maua fa'amaumauga mo le alalaupapa i tuatusi eseese (fa'ata'ita'iga, mo le tatalaina o le beta 1.0).
I le aotelega, o le saite o loʻo i ai faʻamatalaga nei e maua:
- a'a (tatala e ala i le faaletonu),
- mo ta'iala fa'afouina ta'itasi o fa'asalalauga ta'itasi (mo se fa'ata'ita'iga, ).
Ina ia fatuina se faʻamatalaga patino o se 'upega tafaʻilagi, i se tulaga lautele, ua lava le faʻapipiʻiina e faʻaaoga ai e ala i le tamoe i totonu o le lisi /docs werf repository poloaiga tutusa (jekyll build), pe a uma ona sui i le Git tag o le lomiga manaʻomia.
E na'o le fa'aopoopo e fa'apea:
- o le aoga lava ia (werf) e faʻaaogaina mo le faʻapotopotoga;
- CI/CD fa'agasologa o lo'o fausia ile fa'avae ole GitLab CI;
- ma o nei mea uma, ioe, e tamoe i Kubernetes.
Galuega
Seʻi o tatou faʻatulagaina galuega e amanaʻia uma faʻamatalaga faʻamatalaina:
- A maeʻa ona suia le werf version i luga o soʻo se auala faʻafouina fa'amaumauga i luga o le saite e tatau ona otometi ona fa'afouina.
- Mo le atinaʻe e tatau ona e mafaia i nisi taimi va'ai mua'i fa'aaliga o le saite.
E tatau ona toe faʻapipiʻi le 'upega tafaʻilagi pe a uma ona suia le faʻasologa i luga o soʻo se auala mai faʻailoga Git tutusa, ae i le faagasologa o le fausiaina o le ata o le a tatou maua ai foliga nei:
- Talu ai ona o le lisi o faʻaliliuga i luga o auala e suia, e naʻo le manaʻomia o le toe fausia o faʻamaumauga mo auala ua suia ai le faʻasologa. A uma, o le toe fausia o mea uma e le manaia tele.
- E ono suia le seti o alalaupapa mo fa'asalalauga. I se taimi i le taimi, mo se faʻataʻitaʻiga, atonu e leai se faʻamatalaga i luga o auala e sili atu ona mautu nai lo le faʻasalalauga 1.1 vave, ae i le aluga o taimi o le a aliali mai - i lenei tulaga, e le tatau ona e suia le faʻapotopotoga ma le lima?
E fesuiaʻi lena mea fa'apotopotoga fa'alagolago i le suia o fa'amatalaga mai fafo.
Š ŠµŠ°Š»ŠøŠ·Š°ŃŠøŃ
Filifilia o se Auala
I le isi itu, e mafai ona e faʻataʻitaʻiina taʻitasi manaʻomia o se isi pod i Kubernetes. O lenei filifiliga e fa'aalia ai le tele o mea faitino i totonu o le fuifui, lea o le a fa'atupulaia ma le fa'ateleina o le numera o fa'amalologa werf mautu. Ma o lenei, i le isi itu, o lona uiga e sili atu le faigata o le tausiga: o faʻasalalauga taʻitasi e iai lana lava HTTP server, ma faʻatasi ai ma sina uta. O le mea moni, o lenei mea e aofia ai foʻi le tele o tau o punaoa.
Sa matou uia le ala lava e tasi fa'apotopoto uma fa'aliliuga talafeagai i le ata e tasi. O faʻamaumauga tuʻufaʻatasia o ituaiga uma o le upega tafaʻilagi o loʻo i totonu o se atigipusa ma NGINX, ma o fefaʻatauaiga i le Faʻasalalauga tutusa e sau mai le NGINX Ingress. O se fausaga faigofie - o se talosaga e leai ni setete - e mafai ai ona e faʻaogaina faigofie le faʻatulagaina (faʻalagolago i le uta) faʻaaoga Kubernetes lava ia.
Ina ia sili atu le saʻo, matou te aoina ni ata se lua: tasi mo le gaosiga o le gaosiga, o le lona lua o se faʻaopoopoga faʻaopoopo mo le matagaluega dev. O le ata faʻaopoopo e faʻaaogaina (faʻalauiloaina) naʻo luga o le dev circuit faʻatasi ma le autu autu ma o loʻo i ai le faʻasologa o le saite mai le iloiloga commit, ma o le taʻavale i le va o latou e faʻaaogaina e faʻaaoga ai punaoa Ingress.
werf vs git clone ma mea taua
E pei ona uma ona taʻua, ina ia mafai ona faʻatupuina faʻamaumauga o le upega tafaʻilagi mo se faʻamatalaga patino o faʻamaumauga, e tatau ona e fausia e ala i le fesuiaʻi i le faʻailoga talafeagai. E mafai foʻi ona e faia lenei mea e ala i le faʻapipiʻiina o le fale teu oloa i taimi uma e te fausia ai, filifili faʻailoga talafeagai mai se lisi. Ae ui i lea, o se faʻagaioiga e sili atu le faʻaogaina o punaoa ma, e le gata i lea, e manaʻomia le tusiaina o faʻatonuga e le taua ... O le isi faʻaletonu matuia o le faʻatasi ai ma lenei auala e leai se auala e teu ai se mea i le taimi o le faʻapotopotoga.
O iinei o le werf utility lava ia e sau e fesoasoani ia i matou, faʻatinoina fa'aoga atamai ma faʻatagaina oe e faʻaaoga . O le faʻaaogaina o le werf e faʻaopoopo ai le code mai le fale teu oloa o le a faʻavaveina ai le fausiaina, aua Werf e fa'apipi'i fa'atasi le fale teu oloa ona fa'atino lea ae fetch pe a mana'omia. E le gata i lea, pe a faʻaopoopo faʻamatalaga mai le fale teu oloa, e mafai ona matou filifilia naʻo faʻatonuga talafeagai (i la matou tulaga o le lisi lea docs), lea o le a matua faʻaitiitia ai le aofaʻi o faʻamatalaga faʻaopoopo.
Talu ai o Jekyll o se meafaigaluega ua fuafuaina mo le tuufaatasia o faʻamaumauga faʻamaumauga ma e le manaʻomia i le ata mulimuli, e talafeagai le tuʻufaʻatasia i totonu. , ma i le ata mulimuli fa'aulufale mai na'o le i'uga tu'ufa'atasi.
Matou te tusia werf.yaml
O lea, na matou filifili ai o le a matou tuʻufaʻatasia faʻasalalauga taʻitasi i se mea faʻapitoa werf. Ae peitai o matou matou te le iloa pe fia le tele o nei meafaitino o le ai ai i le taimi o le faʻapotopotoga, o lea e le mafai ai ona matou tusia se faʻatulagaga faʻatulagaina fau (faʻapitoa, matou te mafaia lava, ae o le a le aoga atoatoa).
werf faʻatagaina oe e faʻaaoga i lau faila faila (werf.yaml), ma o lenei mea e mafai ai fa'atupu config ile lele faʻalagolago i faʻamatalaga mai fafo (mea e te manaʻomia!). O faʻamatalaga mai fafo i la matou mataupu o faʻamatalaga e uiga i faʻaliliuga ma faʻasalalauga, i luga o le faʻavae matou te aoina ai le numera manaʻomia o mea taua ma o se taunuuga matou te mauaina ni ata se lua: werf-doc и werf-dev e tamo'e i ta'amilosaga eseese.
O fa'amatalaga mai fafo e pasi atu i fesuiaiga o le siosiomaga. O la latou fatuga lenei:
-
RELEASES- se laina faŹ»atasi ma se lisi o faŹ»asalalauga ma le faŹ»asologa o loŹ»o i ai nei o le werf, i le tulaga o se lisi vaeluaga o tulaga taua i le faatulagaga<ŠŠŠŠŠ _Š ŠŠŠŠŠ>%<ŠŠŠŠŠ _ŠŠŠ Š”ŠŠ>. O se faŹ»ataŹ»itaŹ»iga:1.0%v1.0.4-beta.20 -
CHANNELS- se laina faŹ»atasi ma se lisi o auala ma le faŹ»asologa o loŹ»o i ai nei o le werf, i le tulaga o se lisi vaeluaga o tulaga taua i le faatulagaga<ŠŠŠŠŠ>%<ŠŠŠŠŠ _ŠŠŠ Š”ŠŠ>. O se faŹ»ataŹ»itaŹ»iga:1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22 -
ROOT_VERSION- Werf faʻasalalauga faʻaaliga e faʻaalia e ala i le faaletonu i luga o le 'upega tafaʻilagi (e le o taimi uma e manaʻomia ai le faʻaalia o faʻamaumauga e le numera faʻamalolo sili ona maualuga). Faataitaiga:v1.0.4-beta.20 -
REVIEW_SHA- hash o le toe iloiloga commit lea e te manaʻomia e fausia ai le faʻasologa mo le suʻega suʻega.
O nei fesuiaiga o le a faʻatumu i le GitLab CI pipeline, ma pe faʻapefea ona tusia tonu i lalo.
Muamua, mo le faigofie, matou te faʻamatalaina i totonu werf.yaml Alu faʻataʻitaʻiga fesuiaiga, tuʻuina atu ia i latou tau mai suiga o le siosiomaga:
{{ $_ := set . "WerfVersions" (cat (env "CHANNELS") (env "RELEASES") | splitList " ") }}
{{ $Root := . }}
{{ $_ := set . "WerfRootVersion" (env "ROOT_VERSION") }}
{{ $_ := set . "WerfReviewCommit" (env "REVIEW_SHA") }} O le faʻamatalaga o mea faʻapitoa mo le tuʻufaʻatasia o le static version of the site e masani lava ona tutusa mo mataupu uma tatou te manaʻomia (e aofia ai le faʻatupuina o le aʻa, faʻapea foʻi ma le version mo le dev circuit). O le mea lea, o le a matou faʻanofoina i totonu o se poloka ese e faʻaaoga ai le galuega define - mo le toe fa'aogaina mulimuli ane include. O le a matou pasi atu finauga nei i le mamanu:
-
Version- fa'atupuina lomiga (igoa igoa); -
Channel- o le igoa o le alalaupapa faʻafouina lea na faʻatupuina ai le mea taua; -
Commit- fai hash, pe a fai o le meafaitino na gaosia mo se toe iloiloga commit; - talaaga.
Fa'amatalaga Fa'ata'ita'i Fa'ailoga
{{- define "doc_artifact" -}}
{{- $Root := index . "Root" -}}
artifact: doc-{{ .Channel }}
from: jekyll/builder:3
mount:
- from: build_dir
to: /usr/local/bundle
ansible:
install:
- shell: |
export PATH=/usr/jekyll/bin/:$PATH
- name: "Install Dependencies"
shell: bundle install
args:
executable: /bin/bash
chdir: /app/docs
beforeSetup:
{{- if .Commit }}
- shell: echo "Review SHA - {{ .Commit }}."
{{- end }}
{{- if eq .Channel "root" }}
- name: "releases.yml HASH: {{ $Root.Files.Get "releases.yml" | sha256sum }}"
copy:
content: |
{{ $Root.Files.Get "releases.yml" | indent 8 }}
dest: /app/docs/_data/releases.yml
{{- else }}
- file:
path: /app/docs/_data/releases.yml
state: touch
{{- end }}
- file:
path: "{{`{{ item }}`}}"
state: directory
mode: 0777
with_items:
- /app/main_site/
- /app/ru_site/
- file:
dest: /app/docs/pages_ru/cli
state: link
src: /app/docs/pages/cli
- shell: |
echo -e "werfVersion: {{ .Version }}nwerfChannel: {{ .Channel }}" > /tmp/_config_additional.yml
export PATH=/usr/jekyll/bin/:$PATH
{{- if and (ne .Version "review") (ne .Channel "root") }}
{{- $_ := set . "BaseURL" ( printf "v%s" .Channel ) }}
{{- else if ne .Channel "root" }}
{{- $_ := set . "BaseURL" .Channel }}
{{- end }}
jekyll build -s /app/docs -d /app/_main_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/tmp/_config_additional.yml
jekyll build -s /app/docs -d /app/_ru_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/app/docs/_config_ru.yml,/tmp/_config_additional.yml
args:
executable: /bin/bash
chdir: /app/docs
git:
- url: https://github.com/flant/werf.git
to: /app/
owner: jekyll
group: jekyll
{{- if .Commit }}
commit: {{ .Commit }}
{{- else }}
tag: {{ .Version }}
{{- end }}
stageDependencies:
install: ['docs/Gemfile','docs/Gemfile.lock']
beforeSetup: '**/*'
includePaths: 'docs'
excludePaths: '**/*.sh'
{{- end }} E tatau ona tulaga ese le igoa o meafaitino. E mafai ona tatou ausia lenei mea, mo se faʻataʻitaʻiga, e ala i le faʻaopopoina o le igoa o le alalaupapa (le tau o le fesuiaiga .Channel) o se suffix i le igoa o le mea taua: artifact: doc-{{ .Channel }}. Ae e tatau ona e malamalama pe a faʻaulufale mai mea taulima, e tatau ona e faʻasino i igoa tutusa.
Pe a faʻamatalaina se mea faʻapitoa, o loʻo faʻaogaina le faʻaogaina o le werf: . Faʻapipiʻi e faʻaalia ai le lisi o auaunaga build_dir faʻatagaina oe e faʻasaoina le Jekyll cache i le va o laina paipa, lea matua faatelevaveina toe faʻapipiʻi.
Atonu na e matauina foi le faʻaogaina o le faila releases.yml o se faila YAML ma faʻamaumauga tuʻuina mai e talosagaina mai (se mea taua na maua pe a fa'atino se paipa). E manaʻomia pe a tuʻufaʻatasia le saite, ae i le anotusi o le tusiga e manaia ia i tatou aua e faʻalagolago i lona tulaga toe fa'aopoopoina na'o le tasi mea fa'apitoa - o se mea faʻapitoa o le aʻa o le saite (e le manaʻomia i isi mea taua).
E fa'atinoina lea e fa'aaoga ai le fa'amatalaga o tuutuuga if Alu mamanu ma mamanu {{ $Root.Files.Get "releases.yml" | sha256sum }} i le tulaga . E galue e pei ona taua i lalo: pe a fausia se mea faʻapitoa mo le aʻa (variable .Channel e tutusa root) faila hash releases.yml aafia ai le saini o le tulaga atoa, talu ai o se vaega o le igoa o le galuega Ansible (parameter name). O lea la, pe a suia anotusi faila releases.yml o le a toe faʻapipiʻiina mea faʻatatau.
Fa'amolemole fa'alogo lelei fo'i i le galulue fa'atasi ma se fale teu oloa i fafo. I le ata o se mea taua mai , na'o le fa'atonuga e fa'aopoopoina /docs, ma e fa'atatau i fa'ailoga ua pasia, o fa'amaumauga o le fa'ailoga mana'omia po'o le toe iloiloga e fa'aopoopo vave.
Mo le fa'aogaina o le fa'ata'ita'iga fa'ata'ita'i e fa'atupu ai se fa'amatalaga o le fa'ailoga o fa'aliliuga fa'aliliuina o alalaupapa ma fa'asalalauga, matou te fa'atulaga se matasele i luga o le fesuiaiga. .WerfVersions в werf.yaml:
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}} Aua o le matasele o le a maua ai le tele o mea taua (matou te faʻamoemoe), e tatau ona amanaʻia le vaeluaga i le va o latou - o le faasologa. --- (Mo nisi faʻamatalaga ile faʻasologa o faila faila, vaʻai ). E pei ona faʻamatalaina muamua, pe a valaʻau se faʻataʻitaʻiga i se matasele, matou te pasia le faʻasologa o faʻasologa, URL ma le aʻa.
E faʻapea foʻi, ae leai se matasele, matou te taʻua le faʻataʻitaʻiga faʻataʻitaʻiga mo "mataupu faʻapitoa": mo le aʻa, faʻapea foʻi ma le faʻasologa mai le iloiloga na faia:
{{ 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 }} Fa'amolemole e fa'apea o le meafaitino mo le iloiloga o le a na'o le fausiaina pe a fa'atulaga le fesuiaiga .WerfReviewCommit.
Ua sauni mea taua - ua o'o i le taimi e amata ai ona fa'aulufale mai!
O le ata mulimuli, ua fuafuaina e tamoʻe i luga o Kubernetes, o se NGINX masani faʻatasi ai ma se faila faʻapipiʻi faʻapipiʻi faʻaopoopo nginx.conf ma static mai mea taulima. I le faʻaopoopoga i le faʻaogaina o le aʻa o le upega tafaʻilagi, e manaʻomia le toe faia o le matasele i luga o le fesuiaiga .WerfVersions e fa'aulufale mai mea taua o le alalaupapa ma fa'amalo fa'aliliuga + mulimuli i le tulafono fa'aigoa mea fa'aigoa na matou fa'aaogaina muamua. Talu ai o meafaitino ta'itasi o lo'o teuina fa'aliliuga o le saite mo gagana e lua, matou te fa'aulufale mai i totonu o nofoaga o lo'o saunia e le fa'atulagaga.
Fa'amatalaga o le ata mulimuli werf-doc
image: werf-doc
from: nginx:stable-alpine
ansible:
setup:
- name: "Setup /etc/nginx/nginx.conf"
copy:
content: |
{{ .Files.Get ".werf/nginx.conf" | indent 8 }}
dest: /etc/nginx/nginx.conf
- file:
path: "{{`{{ item }}`}}"
state: directory
mode: 0777
with_items:
- /app/main_site/assets
- /app/ru_site/assets
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
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
add: /app/_main_site
to: /app/main_site/v{{ $Channel }}
before: setup
{{ end -}}
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
add: /app/_ru_site
to: /app/ru_site/v{{ $Channel }}
before: setup
{{ end -}}O le ata faʻaopoopo, lea, faʻatasi ai ma le autu autu, o loʻo faʻalauiloaina i luga o le dev circuit, e naʻo le lua lomiga o le upega tafaʻilagi: o le faʻasologa mai le iloiloga commit ma le aʻa o le upega tafaʻilagi (o loʻo i ai aseta lautele ma, pe a e manatua , fa'amaumauga tu'u). O lea la, o le ata faaopoopo o le a ese mai le mea autu na o le vaega faaulufale mai (ma, ioe, i le igoa):
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 }} E pei ona ta'ua i luga, o le meafaitino mo le iloiloga commit o le a fa'atupuina pe a fa'atino le suiga o le si'osi'omaga seti REVIEW_SHA. E mafai ona le faʻatupuina le ata werf-dev pe a leai se fesuiaiga o le siosiomaga REVIEW_SHA, ae ina ia mafai O ata Docker i le werf na galue mo le ata werf-dev, o le a matou tuʻuina e fausia naʻo le aʻa faʻasologa o mea (ua uma ona fausia), e faafaigofie ai le fausaga o paipa.
Ua sauni le faapotopotoga! Sei o tatou agai i luma ile CI/CD ma mea taua.
Pipeline i le GitLab CI ma foliga o le fausiaina malosi
Pe a faʻatautaia le fausiaina e manaʻomia le setiina o fesuiaiga o le siosiomaga o loʻo faʻaaogaina i totonu werf.yaml. E le fa'atatau i le REVIEW_SHA fesuia'i, lea o le a matou setiina pe a vala'au paipa mai le GitHub matau.
O le a matou gaosia faʻamatalaga mai fafo e manaʻomia i totonu o se tusitusiga Bash generate_artifacts, lea o le a fa'atupuina ai ni fa'ailoga e lua a le GitLab pipeline:
- faila
releases.ymlfa'atasi ai ma fa'amaumauga tu'u mai, - faila
common_envs.sh, o lo'o i ai suiga o le si'osi'omaga e auina atu i fafo.
Fa'amau faila generate_artifacts o le ae maua i la matou . O le mauaina o faʻamatalaga lava ia e le o le autu o le tusiga, ae o le faila common_envs.sh e taua ia i tatou, aua e faalagolago i ai le galuega a werf. O se faʻataʻitaʻiga o lona anotusi:
export RELEASES='1.0%v1.0.6-4'
export CHANNELS='1.0-alpha%v1.0.7-1 1.0-beta%v1.0.7-1 1.0-ea%v1.0.6-4 1.0-stable%v1.0.6-4 1.0-rock-solid%v1.0.6-4'
export ROOT_VERSION='v1.0.6-4' E mafai ona e faʻaogaina le gaioiga o sea tusitusiga, mo se faʻataʻitaʻiga, faʻaaogaina le galuega Bash source.
O lea ua oo mai le vaega malie. Ina ia mafai ona lelei le fausiaina ma le faʻapipiʻiina o le talosaga, e tatau ona faʻamautinoa werf.yaml sa tutusa lava laʻititi i totonu o le paipa e tasi. Afai e le ausia lenei tulaga, o saini o laʻasaga e faʻatatauina i le taimi o le faʻapotopotoga ma, mo se faʻataʻitaʻiga, faʻapipiʻiina, o le a ese. O lenei mea o le a taʻitaʻia ai le faʻaogaina o mea sese, aua ... o le ata e manaʻomia mo le faʻapipiʻiina o le a misi.
I se isi faaupuga, afai i le taimi o le faʻapotopotoga o le ata o le upega tafaʻilagi o faʻamatalaga e uiga i faʻasalalauga ma faʻaliliuga e tutusa, ma i le taimi o le faʻapipiʻiina e tuʻuina atu se faʻamatalaga fou ma o suiga o le siʻosiʻomaga e eseese tulaga taua, o le a le manuia le faʻapipiʻiina i se mea sese: pe a uma, o le mea moni o le lomiga fou e leʻi fausia.
Afai o tupulaga werf.yaml faʻalagolago i faʻamatalaga i fafo (mo se faʻataʻitaʻiga, o se lisi o lomiga o loʻo i ai nei, e pei o la tatou tulaga), ona faʻamauina lea o le tuufaatasiga ma le taua o ia faʻamaumauga i totonu o le paipa. E taua tele lenei mea pe a fai e fai si suiga i fafo.
Matou te maua ma faamaumau faamatalaga mai fafo i le laasaga muamua o le paipa i GitLab (mua'i fausia) ma fa'asalalau atili atu i le fomu GitLab CI meafaitino. Ole mea lea ole a fa'atagaina oe e tamo'e ma toe amata galuega paipa (fausia, fa'apipi'i, fa'amama) fa'atasi ai ma le fa'atulagaga tutusa i totonu werf.yaml.
Anotusi o le tulaga mua'i fausia faila .gitlab-ci.yml:
Prebuild:
stage: prebuild
script:
- bash ./generate_artifacts 1> common_envs.sh
- cat ./common_envs.sh
artifacts:
paths:
- releases.yml
- common_envs.sh
expire_in: 2 weekI le pu'eina o fa'amatalaga i fafo i totonu o le mea fa'apitoa, e mafai ona e fausia ma fa'apipi'i e fa'aaoga ai le tulaga masani GitLab CI pipeline stages: Fausia ma Fa'asoa. Matou te faʻalauiloaina le paipa lava ia e faʻaaoga ai matau mai le werf GitHub repository (ie, pe a iai suiga i le GitHub repository). O faʻamatalaga mo i latou e mafai ona maua i le GitLab project properties i le vaega CI/CD Seti -> Pipeline fa'aoso, ona fai lea o le Webhook talafeagai i GitHub (Fa'atonu -> Webhooks).
O le tulaga o le fausiaina o le a pei o lenei:
Build:
stage: build
script:
- type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
- type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
- source common_envs.sh
- werf build-and-publish --stages-storage :local
except:
refs:
- schedules
dependencies:
- Prebuild GitLab o le a faʻaopoopoina ni mea faʻapitoa se lua mai le tulaga i le tulaga faufale mua'i fausia, o lea matou te auina atu i fafo fesuiaiga ma faʻamatalaga faʻapipiʻi saunia e faʻaaoga ai le fausiaina source common_envs.sh. Matou te amataina le fausiaina o tulaga i tulaga uma, sei vagana ai le faʻalauiloaina o le paipa e tusa ai ma se faʻatulagaga. E tusa ai ma le faʻatulagaga, o le a matou faʻatautaia se paipa mo le faʻamamaina - i lenei tulaga e leai se manaʻoga e faia faʻapotopotoga.
I le tulaga faʻapipiʻi, o le a matou faʻamatalaina galuega e lua - eseese mo le faʻapipiʻiina i le gaosiga ma faʻataʻitaʻiga, e faʻaaoga ai se mamanu YAML:
.base_deploy: &base_deploy
stage: deploy
script:
- type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
- type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
- source common_envs.sh
- werf deploy --stages-storage :local
dependencies:
- Prebuild
except:
refs:
- schedules
Deploy to Production:
<<: *base_deploy
variables:
WERF_KUBE_CONTEXT: prod
environment:
name: production
url: werf.io
only:
refs:
- master
except:
variables:
- $REVIEW_SHA
refs:
- schedules
Deploy to Test:
<<: *base_deploy
variables:
WERF_KUBE_CONTEXT: dev
environment:
name: test
url: werf.test.flant.com
except:
refs:
- schedules
only:
variables:
- $REVIEW_SHA O galuega e matua'i ese lava i le fa'ailoaina o le fa'asologa o le fuifui lea e tatau ona fa'atino ai e le werf le fa'atinoina (WERF_KUBE_CONTEXT), ma le setiina o suiga o le siosiomaga matasele (environment.name и environment.url), ona fa'aaogaina lea i fa'ata'ita'iga siata o Helm. Matou te le tuʻuina atu mea o loʻo i totonu o faʻataʻitaʻiga, aua ... e leai se mea manaia iina mo le autu o loʻo fesiligia, ae e mafai ona e mauaina i totonu .
pa'i mulimuli
Talu ai e faʻasalalau faʻasalalauga faʻasalalau, o ata fou o le a fausia soo, ma o le Docker Registry o le a faʻatupulaia pea. O le mea lea, e taua tele le faʻapipiʻi otometi faʻamamaina ata e faʻavae i luga o faiga faʻavae. E matua faigofie lava ona fai.
Ina ia faʻatinoina e te manaʻomia:
- Fa'aopoopo se laasaga fa'amama i
.gitlab-ci.yml; - Fa'aopoopo le fa'atinoina o galuega fa'amama;
- Seti se suiga o le si'osi'omaga ma se fa'ailoga avanoa e tusitusi ai.
Fa'aopoopoina se vaega fa'amamÄ i .gitlab-ci.yml:
Cleanup:
stage: cleanup
script:
- type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
- type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
- source common_envs.sh
- docker login -u nobody -p ${WERF_IMAGES_CLEANUP_PASSWORD} ${WERF_IMAGES_REPO}
- werf cleanup --stages-storage :local
only:
refs:
- schedules
Ua uma ona matou vaʻaia toetoe o nei mea uma e sili atu le maualuga - naʻo le faʻamamaina e te manaʻomia muamua e te ulufale i le Docker Registry ma se faʻailoga e iai le aia tatau e tape ai ata i le Docker Registry (o le faʻailoga otometi na tuʻuina atu GitLab CI galuega faʻailoga e le e iai ia aia tatau). O le faailoga e tatau ona faia i le GitLab muamua ma o lona tau e tatau ona faʻamaonia i le fesuiaiga o le siosiomaga WERF_IMAGES_CLEANUP_PASSWORD le poloketi (CI/CD Seti -> Fesuiaiga).
O le fa'aopoopoina o se galuega fa'amamÄ ma le fa'atulagaga mana'omia ua faia i totonu CI/CD ->
Faamatalaga.
O le mea lena: o se poloketi i le Docker Registry o le a le toe tupu i taimi uma mai ata e leʻi faʻaaogaina.
I le faaiuga o le vaega aoga, sei ou faamanatu atu ia te oe o lisi atoa mai le tusiga o loʻo avanoa i totonu :
- ;
- .
iʻuga
- Na matou mauaina se fausaga faʻapipiʻi talafeagai: tasi mea faʻapitoa i le lomiga.
- O le faʻapotopotoga e lautele ma e le manaʻomia ni suiga i le tusi lesona pe a faʻasalalau lomiga fou o le werf: o faʻamaumauga i luga o le upega tafaʻilagi e otometi ona faʻafouina.
- E lua ata o lo'o fa'apipi'iina mo ta'aloga eseese.
- E galue vave, aua E fa'aogaina le fa'aoga i le tele e mafai ai - pe a fa'amatu'u se fa'amatalaga fou o le werf po'o le fa'amau GitHub e vala'au mo se toe iloiloga, na'o le mea fa'atusa e fetaui ma le suiga ua toe fausia.
- Leai se manaʻoga e mafaufau i le tapeina o ata e leʻi faʻaaogaina: faʻamamaina e tusa ai ma faiga faʻavae werf o le a faʻatumauina ai le Docker Registry i le faasologa.
sailiiliga
- O le fa'aogaina o le werf e mafai ai e le fa'apotopotoga ona galue vave ona o le fa'aogaina o le fa'apotopotoga lava ia ma le fa'aogaina pe a galue ma fale teu oloa i fafo.
- O le galue i fafo Git repositories e faʻaumatia ai le manaʻoga e faʻapipiʻi le faleteuoloa atoa i taimi uma pe toe faʻafouina le uili ma le faʻaogaina o mafaufauga faʻapitoa. werf fa'aoga se fa'aoga ma fai le fa'a-cloning na'o le tasi, ona fa'aaoga lea
fetchma na'o le taimi e tatau ai. - Malosiaga e faʻaoga Go templates i le faʻatulagaina o faila
werf.yamlfa'atagaina oe e fa'amatala se fa'apotopotoga o lona taunu'uga e fa'alagolago i fa'amatalaga mai fafo. - O le faʻaaogaina o le mount in werf e faʻavaveina ai le aoina o mea taua - ona o le cache, lea e masani ai i paipa uma.
- werf fa'afaigofie ona fa'atulaga le fa'amama, lea e sili ona taua pe a fau fau.
SALA
Faitau foi i la matou blog:
- Ā«";
- Ā«";
- Ā«";
- Ā«".
puna: www.habr.com
