แฉแแแ แฃแแแ แแ แแแ แแฎแแ แแแกแแฃแแ แแ แฉแแแแก GitOps แแแกแขแ แฃแแแแขแแ แแ แแแฏแแ แแ แแแกแฃแ แก แแแแแแแแ แแ แแแแกแแแขแแก แจแแฅแแแแก แแแแแชแแแแแแ แแแแแ แแ แแแฅแขแแก แแแแฃแแแแขแแชแแแกแแแ แแ แแแ - (แแแกแ แ แฃแกแฃแแ แแแ แกแแแ ). แแก แแ แแก แฉแแแฃแแแแ แแแ แกแขแแขแแแฃแ แ แกแแแขแ, แแแแ แแ แแแกแ แแฌแงแแแ แกแแแแขแแ แแกแแ แแแแ, แ แแ แแก แแแแแฃแแแ แแ แขแแคแแฅแขแแแแก แแแแแแแฃแ แ แ แแแแแแแแแก แแแแแงแแแแแแ.

แฉแแแ แแ แจแแแแฎแแแแ แกแแแขแแก แกแขแ แฃแฅแขแฃแ แแก แแแฃแแแกแแแก: แงแแแแ แแแ แกแแแกแแแแก แกแแแ แแ แแแแแฃแก แแแแแ แแ แแแแก, แแแแแจแแแแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แแฅแแแ แแแแ แแก แแ แ.แจ. แแแแก แแแชแแแแ, แฉแแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ แแแแแแแฃแ แ แแกแแแแแแแก แกแแแแแฎแแแกแ แแ แแแฎแแกแแแแแแแแแแ แแ แชแแขแแแแแ แแแแแฎแแแ CI/CD แแ แแชแแกแแแแ.
แจแแกแแแแแ: แ แแแแ แแฃแจแแแแก แกแแแขแ
แแแแแฌแงแแ แแแแ, แ แแ werf-แแก แแแแฃแแแแขแแชแแ แแแแฎแแแ แแแก แแแแแแ แแ แแแ. แแก แแแ แแแแฃแ แแแแฎแแแแแแก แแแแกแ แแแก แแแแแแแแ แแแแก, แ แแแแแแแช แแแแแแแ แกแชแแแแแแ แแ แกแขแแขแแแก แคแแ แแแแแก, แแแแ แแ แงแแแแ แจแแแแฎแแแแแจแ แจแแแแแซแแแ แแแฅแแแ, แ แแ:
- แแฎแแแ werf แคแฃแแฅแชแแแแ แแ แฃแแแ แแแแแแแแแก แแแแฃแแแแขแแชแแแก แแแแแฎแแแแแก แแแ แแจแ แแ, แแแ แแฅแแ, แแแแฃแแแแขแแชแแแจแ แแแแแกแแแแ แ แชแแแแแแแ werf-แแก แแฎแแแ แแแ แกแแแก แแแแแจแแแแแก แแฃแแแกแฎแแแแก;
- แแ แแแฅแขแก แกแแแแแแ แแแขแแแกแแฃแ แ แแแแแแแแ แแแ แแฅแแก: แแฎแแแ แแแ แกแแแแแก แแแแแจแแแแ แแฆแแจแ แ แแแแแแฏแแ แแแ แจแแกแแซแแแแแแ;
- แแแแฃแแแแขแแชแแแก แแฎแแแ แแแ แกแแแ แกแแแขแแก แแแแแแแแแแก แแแแแกแแแแ แ แฎแแแแ แจแแกแ แฃแแแแ, แกแฃแ แแชแแ แ, แแแแฆแแแแแ;
- แแ แแแฅแขแ แแงแแแแแก แกแแแแแขแแแฃแ แแแแแแแแก , 5 แกแขแแแแแฃแ แแแแก แแ แฎแแ. แแแแแจแแแแแก แแ แแชแแกแ แแฃแแแกแฎแแแแก แแแ แกแแแแแก แแแแแแแแแแ แฃแ แแแแแแก แแ แฎแแแจแ แกแขแแแแแฃแ แแแแก แแ แแแก แแแแแแแแแแ แแแแ: แแแคแแแแ แแแแแก แแกแแแแกแแแแแแ;
- แกแแแขแก แแฅแแก แ แฃแกแฃแแแแแแแแ แแแ แกแแ, แ แแแแแแช โแชแแชแฎแแแแก แแ แแแแแ แแแแโ (แแแฃ แแแกแ แจแแแแแ แกแ แแแแแฎแแแแแ) แซแแ แแแแแ (แแแฃ แแแแแแกแฃแ แแแแแแแ) แแแ แกแแแก แแแ แแแแแฃแ แแ.
แแแแฎแแแ แแแแแกแแแ แแ โแจแแแแแแแ แแแฅแแแแแแแแแกโ แแแกแแแแแแ แแ แแแกแแแแก แแกแแแ แ แแแแก แจแแแแแแแแแแกแแแแก, แ แแช โแฃแแ แแแแ แแฃแจแแแแกโ, แฉแแแ แจแแแฅแแแแแ แชแแแแ แแแกแขแ แฃแแแแขแ werf-แแก แแแกแขแแแแชแแแกแ แแ แแแแแฎแแแแแก แแแแแแ - แ แแแแแแแ แแฅแแแ แแฎแแแแ แฃแแแ แแแฃแแแแแ แแแแแจแแแแแก แแแแแ แ แแ แกแขแแแแแฃแ แแแแก แแ แฎแ, แ แแแแแก แแแแแงแแแแแแช แแกแฃแ แ แแ multiwerf แจแแแแแฌแแแแก, แแ แแก แแฃ แแ แ แแ แฎแแ แแฎแแแ แแแ แกแแ แแ แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ แแแแแแฌแแ แก แแแก.
werf-แแก แฃแแฎแแแกแ แแแ แกแแแแ แฎแแแแแกแแฌแแแแแแ แแแแแแฃแ แแ แฎแแ แกแแแขแแ แแแ แกแแแก แจแแ แฉแแแแก แแแแแฃแจแ. แแแแฃแแแกแฎแแแแแ, แฃแแฎแแแกแ แแแ แกแแแก แแ แฎแแก แงแแแแแแ แกแขแแแแแฃแ แ แแแ แกแแ แแฎแกแแแแ - แแก แแกแแแ แแแแแฅแกแแ แแแฃแแแ แกแแซแแแแ แกแแกแขแแแแแแก แแแแ . แแ แฎแแก แแแแฃแแแแขแแชแแ แฎแแแแแกแแฌแแแแแแ แชแแแแแฃแ แแแกแแแแ แแแแแ (แแแแแแแแแ, แแแขแ แแแ แกแแแกแแแแก 1.0).
แกแแแ แแ แฏแแแจแ, แกแแแขแแ แฎแแแแแกแแฌแแแแแแ แจแแแแแแ แแแ แกแแแแ:
- root (แแฎแกแแแแ แกแขแแแแแ แขแฃแแแ),
- แแแแแแฃแแ แแแ แกแแแก แแแแแแฃแแ แแฅแขแแฃแ แ แแแแแฎแแแแแก แแ แฎแแกแแแแก (แแแ. ).
แกแแแขแแก แแแแแ แแขแฃแแ แแแ แกแแแก แแแแแ แแ แแแแกแแแแก, แแแแแแแ, แกแแแแแ แแกแแ แแแกแ แแแแแแแแชแแ , แ แแแแแแช แแฃแจแแแแก แแแ แแฅแขแแ แแแจแ /docs werf แกแแชแแแ แจแแกแแแแแแกแ แแ แซแแแแแ (jekyll build), แแแก แจแแแแแ, แ แแช แแแ แ แแแแแแแแแ แกแแญแแ แ แแแ แกแแแก Git แขแแแแ.
แแฎแแแแ แแกแฆแ แแแแ แฉแแแแ แแแแแแแขแแ, แ แแ:
- แแแแแ แแ แแแ แแแ (werf) แแแแแแงแแแแแ แแกแแแแแแแกแแแแก;
- CI/CD แแ แแชแแกแแแ แแแแแฃแแแ GitLab CI-แแก แกแแคแฃแซแแแแแ;
- แแ แแก แงแแแแแคแแ แ, แ แ แแฅแแ แฃแแแ, Kubernetes-แจแ แแฃแจแแแแก.
แแแแชแแแแแ
แแฎแแ แแแแแ แฉแแแแแแงแแแแแแ แแแแแแแแแแ, แ แแแแแแแช แแแแแแแแแกแฌแแแแแแ แงแแแแ แแฆแฌแแ แแ แกแแแชแแคแแแแก:
- werf แแแ แกแแแก แจแแชแแแแก แจแแแแแ แแแแแกแแแแ แแแแแฎแแแแแก แแ แฎแแ แกแแแขแแ แแ แกแแแฃแแ แแแแฃแแแแขแแชแแ แแแขแแแแขแฃแ แแ แฃแแแ แแแแแฎแแแแก.
- แแแแแแแแ แแแแกแแแแก, แแแแฏแแ แฃแแแ แจแแแแซแแแ แกแแแขแแก แฌแแแแกแฌแแ แ แฎแแแแแแก แแแฎแแ.
แกแแแขแแก แฎแแแแฎแแแ แแแแแแแแชแแ แฃแแแ แแแแฎแแ แชแแแแแแก แจแแกแแแแแแกแ Git แขแแแแแแแแ แแแแแกแแแแ แแ แฎแแ แแแ แกแแแก แจแแชแแแแก แจแแแแแ, แแแแ แแ แกแฃแ แแแแก แแฌแงแแแแก แแ แแชแแกแจแ แแแแแฆแแแ แจแแแแแ แแแฎแแกแแแแแแแแแก:
- แ แแแแแ แแ แฎแแแแก แแแ แกแแแแแก แกแแ แแชแแแแแ, แกแแญแแ แแ แแฎแแแแ แแ แแ แฎแแแแก แแแแฃแแแแขแแชแแแก แฎแแแแฎแแ แจแแฅแแแ, แกแแแแช แแแ แกแแ แจแแแชแแแแ. แแแแแก แแ แแแแแก, แงแแแแแคแ แแก แแฃแแแแแ แฎแแแแฎแแ แจแแฅแแแ แแ แช แแกแ แแแ แแแ.
- แจแแกแแซแแแ, แแแแแจแแแแแแแก แแ แฎแแแแก แแแแ แแแ แจแแแชแแแแแก. แแแแแแแแแ, แแแ แแแแฃแ แแแแแแขแจแ, แจแแกแแซแแแ, แแ แฎแแแแ แแ แแ แกแแแแแแแก แแแ แกแแ, แ แแแแแแช แฃแคแ แ แกแขแแแแแฃแ แ แแฅแแแแ, แแแแ แ แแแ แแฃแแ แฌแแแแแแก 1.1 แแแ แกแแ, แแแแ แแ แแกแแแ แแ แแแ แแแแแแแแแแแจแ แแแแแฉแแแแแ - แแ แจแแแแฎแแแแแจแ, แแแแแแก แฎแแแแ แจแแชแแแ แจแแฃแซแแแแแแแ, แแ แ?
แแแแแแแก, แ แแ แแกแแแแแแ แแแแแแแแแแฃแแแ แแแ แ แแแแแชแแแแแแก แจแแชแแแแแ.
ะ ะตะฐะปะธะทะฐัะธั
แแแแแแแแก แแ แฉแแแ
แแแขแแ แแแขแแฃแแแ, แจแแแแซแแแแ Kubernetes-แจแ แแแแแแฃแแ แกแแญแแ แ แแแ แกแแ แชแแแแ แแแแแ แแแฃแจแแแ. แแก แแแ แแแแขแ แแฃแแแกแฎแแแแก แแแแกแขแแ แจแ แแแแแฅแขแแแแก แฃแคแ แ แแแ แ แแแแแแแแแก, แ แแแแแแช แแแแแ แแแแ แกแขแแแแแฃแ แ werf-แแก แแแแแจแแแแแแแก แ แแแแแแแแแก แแ แแแกแแแ แแ แแแ. แแก แแ, แแแแแก แแฎแ แแ, แฃแคแ แ แ แแฃแ แแแแแ-แแแขแ แแแแแแก แแฃแแแกแฎแแแแก: แแแแแแฃแ แแแ แกแแแก แแฅแแก แกแแแฃแแแ แ HTTP แกแแ แแแ แ, แแชแแ แ แแแขแแแ แแแแ. แ แ แแฅแแ แฃแแแ, แแก แแกแแแ แฃแคแ แ แแแ แ แแกแฃแ แกแแแแก แฎแแ แฏแแแกแแช แแฃแแแกแฎแแแแก.
แฉแแแแช แแแแแ แแแแ แฌแแแแแแ แงแแแแ แกแแญแแ แ แแแ แกแแแก แแฌแงแแแ แแ แ แกแฃแ แแแจแแกแแแขแแก แงแแแแ แแแ แกแแแก แแแแแแแแ แแแฃแแ แกแขแแขแแกแขแแแ NGINX-แแแ แแ แแแ แแแแขแแแแแ แจแแ แแ แจแแกแแแแแแก แแแแแแแแแแแ แขแ แแคแแแ NGINX Ingress-แแก แแแจแแแแแแ แฎแแ แชแแแแแแแ. แแแ แขแแแ แกแขแ แฃแฅแขแฃแ แ โ แฃแกแขแแขแฃแกแ แแแแแแแชแแ โ แกแแจแฃแแแแแแก แแแซแแแแ แแแ แขแแแแ แแแกแจแขแแแแ แแแ แแแฃแแแแแ แแแแแแแแแแก (แแแขแแแ แแแแก แแแฎแแแแแ) แแแแแ Kubernetes-แแก แแแแแงแแแแแแ.
แฃแคแ แ แแฃแกแขแแ, แฉแแแ แแแจแแแแแ แแ แกแฃแ แแแก: แแ แแ แฌแแ แแแแแแก แกแฅแแแแกแแแแก, แแแแ แ แแ แแแแแขแแแแแแ, แแแแแแแแแ แแก แกแฅแแแแกแแแแก. แแแแแขแแแแแ แกแฃแ แแแ แแแแแแงแแแแแ (แแจแแแแ) แแฎแแแแ แแแแแแแแแ แแก แฌแ แแแแ แแแแแแ แแแ แแ แแแ แแ แจแแแชแแแก แกแแแขแแก แแแ แกแแแก review commit-แแแ, แฎแแแ แแแ แจแแ แแก แแแ แจแ แฃแขแแแแชแแ แฎแแ แชแแแแแแแ Ingress แ แแกแฃแ แกแแแแก แแแแแงแแแแแแ.
werf vs git แแแแแ แแ แแ แขแแคแแฅแขแแแ
แ แแแแ แช แแฆแแแแจแแแ, แแแแฃแแแแขแแชแแแก แแแแแ แแขแฃแแ แแแ แกแแแกแแแแก แกแแแขแแก แกแขแแขแแแแก แแแแแ แแ แแแแกแแแแก, แแฅแแแ แฃแแแ แจแแฅแแแแ แจแแกแแแแแแก แกแแชแแแแก แขแแแแ แแแแแกแแแแ. แแแแก แแแแแแแแ แแกแแแ แจแแแแซแแแแ แกแแชแแแแก แแแแแแ แแแแ แงแแแแแ แจแแฅแแแแกแแก, แจแแกแแแแแแกแ แขแแแแแแก แกแแแแแ แแ แฉแแแแ. แแฃแแชแ, แแก แกแแแแแแ แ แแกแฃแ แกแแแแก แแแแแฎแแแแ แแแแ แแชแแแ แแ, แแแ แแ แแแแกแ, แแแแแฎแแแก แแ แแขแ แแแแแแฃแ แ แแแกแขแ แฃแฅแชแแแแแก แแแฌแแ แแก... แแแแแ แแ แแ แกแแ แแแแฃแแ แแแแแ แแก แแ แแก, แ แแ แแ แแแแแแแแ, แจแแฅแแแแก แแ แแก แแ แแคแ แแก แฅแแจแแ แแแ แจแแฃแซแแแแแแแ.
แแฅ แแแแแ werf แแ แแแ แแแ แแแแฎแแแ แแแ, แ แแแแแแช แแฎแแ แชแแแแแแก แญแแแแแแ แฅแแจแแ แแแ แแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแงแแแแ . แ แแกแฃแ แกแแแแ แแแแแก แแแกแแแแขแแแแแ werf-แแก แแแแแงแแแแแ แแแแจแแแแแแแแแ แแแแฉแฅแแ แแแก แแฌแงแแแแก แแ แแชแแกแก, แ แแแแแ werf แแ แกแแแแแแ แแ แแฎแแ แแแแแแ แแแแก แฃแแแแแแก แ แแกแฃแ แกแก แแ แจแแแแแ แแแฃแจแแแแแก. แแฎแแแแ fetch แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ. แแแ แแ แแแแกแ, แกแแชแแแแแแ แแแแแชแแแแแแก แแแแแขแแแแกแแก, แฉแแแ แจแแแแแซแแแ แแฎแแแแ แกแแญแแ แ แแแ แแฅแขแแ แแแแแก แแ แฉแแแ (แฉแแแแก แจแแแแฎแแแแแจแ, แแก แแ แแก แแแ แแฅแขแแ แแ docs), แ แแช แแแแจแแแแแแแแแ แจแแแแชแแ แแแก แแแแแขแแแฃแแ แแแแแชแแแแแแก แ แแแแแแแแแก.
แ แแแแแ Jekyll แแ แแก แแแกแขแ แฃแแแแขแ, แ แแแแแแช แจแแฅแแแแแแ แกแขแแขแแแฃแ แ แคแแแแแแแก แแแแแแแแชแแแกแแแแก แแ แแ แแ แแก แกแแญแแ แ แกแแแแแแ แกแฃแ แแแจแ, แแแแแแฃแ แ แแฅแแแแแแ แแแกแ แแแแแแแแชแแ แแ แกแแแแแแ แกแฃแ แแแแ แแฎแแแแ แแแแแแแแชแแแก แจแแแแแแก แแแแแ แขแ.
แฉแแแ แแฌแแ แ werf.yaml-แก
แแกแ แ แแ, แฉแแแ แแแแแแฌแงแแแขแแ, แ แแ แแแแแแฃแแ แแแ แกแแ แชแแแแ werf แแ แขแแคแแฅแขแแ แจแแแแแแ แแแแแแแ. แแฃแแชแ, แฉแแแ แแ แแแชแแ, แ แแแแแแ แแกแแแ แแ แขแแคแแฅแขแ แแฅแแแแ แแฌแงแแแแก แแ แแก, แแแแขแแ แฉแแแ แแ แจแแแแแซแแแ แคแแฅแกแแ แแแฃแแ แแฌแงแแแแก แแแแคแแแฃแ แแชแแแก แแแฌแแ แ (แแแแชแ แแ แ แแ แแแฅแแแ, แจแแแแแซแแแ, แแแแ แแ แแก แแ แแฅแแแแ แซแแแแแ แแคแแฅแขแฃแ แ).
werf แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแงแแแแ แแฅแแแแก แแแแคแแแฃแ แแชแแแก แคแแแแจแ (werf.yaml), แแ แแก แจแแกแแซแแแแแแก แฎแแแก แแแแคแแแฃแ แแชแแแก แแแแแ แแ แแแ "แแงแแกแแแ แแ" แแแ แ แแแแแชแแแแแแ แแแงแ แแแแแแ (แ แแช แแแญแแ แแแแ!). แฉแแแแก แจแแแแฎแแแแแจแ, แแแ แ แแแแแชแแแแแ แแ แแก แแแคแแ แแแชแแ แแแ แกแแแแแกแ แแ แแแแแจแแแแแแแก แจแแกแแฎแแ, แ แแแแแก แกแแคแฃแซแแแแแแช แฉแแแ แแแแ แแแแแ แแ แขแแคแแฅแขแแแแก แกแแญแแ แ แ แแแแแแแแแก แแ แจแแแแแแ แแแฆแแแ แแ แกแฃแ แแแก: werf-doc ะธ werf-dev แกแฎแแแแแกแฎแแ แฌแ แแแแ แแแกแแฌแงแแแแ.
แแแ แ แแแแแชแแแแแ แแแแแแชแแแ แแแ แแแแก แชแแแแแแแแก แแแจแแแแแแ. แแฅ แแ แแก แแแแ แจแแแแแแแแแแแ:
-
RELEASESโ แฎแแแ แแแแแจแแแแแแแก แกแแแ แแ werf-แแก แจแแกแแแแแแกแ แแแแแแแแ แ แแแ แกแแแ, แคแแ แแแขแจแ แแ แกแแแฃแแ แแแแจแแแแแแแแแแก แกแแแก แกแแฎแแ, แ แแแแแแช แแแแแงแแคแแแแ แกแแแ แชแแ.<ะะะะะ _ะ ะะะะะ>%<ะะะะะ _ะะะ ะกะะ>... แแแแแแแแ:1.0%v1.0.4-beta.20 -
CHANNELSโ แฎแแแ แแ แฎแแแแก แกแแแ แแ werf-แแก แจแแกแแแแแแกแ แแแแแแแแ แ แแแ แกแแแ, แแแแจแแแแแแแแแแก แกแแแก แกแแฎแแ, แคแแ แแแขแจแ, แกแแแ แชแแ แแแแแงแแคแแแ แกแแแก แกแแฎแแ.<ะะะะะ>%<ะะะะะ _ะะะ ะกะะ>... แแแแแแแแ:1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22 -
ROOT_VERSIONโ werf-แแก แแแแแจแแแแแก แแแ แกแแ แกแแแขแแ แแแแฃแแแกแฎแแแแแ แฃแแแ แแงแแก แแแฉแแแแแแ (แแแแฃแแแแขแแชแแแก แงแแแแแแ แแแฆแแแ แแแแแจแแแแแก แแแแ แแ แฉแแแแแแ แงแแแแแแแแก แแฃแชแแแแแแแ แแ แแ แแก). แแแแแแแแ:v1.0.4-beta.20 -
REVIEW_SHAโ แแ แแแแฎแแแแแก แแแแแขแแก แฐแแจแ, แกแแแแแแแช แฃแแแ แแจแแแแแก แกแแขแแกแขแ แกแฅแแแแก แแแ แกแแ.
แแก แชแแแแแแแ แจแแแแกแแแ GitLab CI แแแแกแแแแแจแ แแ แแฃแกแขแแ แ แแแแ , แฅแแแแแ แแ แแก แแฆแฌแแ แแแ.
แแแ แแแ แ แแแจแ, แแแฎแแ แฎแแแฃแแแแแกแแแแก, แแแแแ แแแแแกแแแฆแแ แแ werf.yaml แจแแแแแแแก แชแแแแแแแแ แแแแแกแแแ แแแ แแแแก แชแแแแแแแแแแ แแแแจแแแแแแแแแแก แแแแแญแแแแ:
{{ $_ := set . "WerfVersions" (cat (env "CHANNELS") (env "RELEASES") | splitList " ") }}
{{ $Root := . }}
{{ $_ := set . "WerfRootVersion" (env "ROOT_VERSION") }}
{{ $_ := set . "WerfReviewCommit" (env "REVIEW_SHA") }} แกแแแขแแก แกแขแแขแแแฃแ แ แแแ แกแแแก แแแแแแแแชแแแกแแแแก แแ แขแแคแแฅแขแแก แแฆแฌแแ แ แแแแแแแ แแแแแแ แงแแแแ แกแแญแแ แ แจแแแแฎแแแแแกแแแแก (แแแ แจแแ แแก root แแแ แกแแแก แแแแแ แแ แแแแกแแแแก, แแกแแแ dev-contour-แแก แแแ แกแแแกแแแแก). แแแแขแแ, แคแฃแแฅแชแแแก แแแแแงแแแแแแ แแแก แชแแแแ แแแแแจแ แแแแแแแขแแแ. define โ แจแแแแแแแ แฎแแแแฎแแแ แแแแแงแแแแแแกแแแแก แแแฎแแแ แแแแ includeแจแแแแแแก แจแแแแแ แแ แแฃแแแแขแแแก แแแแแแชแแแ:
-
Versionโ แแแแแ แแ แแแฃแแ แแแ แกแแ (แขแแแแก แกแแฎแแแ); -
Channelโ แแแแแฎแแแแแก แแ แฎแแก แกแแฎแแแ, แ แแแแแกแแแแกแแช แแแแแ แแ แแแแ แแ แขแแคแแฅแขแ; -
Commitโ commit แฐแแจแ, แแฃ แแ แขแแคแแฅแขแ แแแแแ แแ แแแฃแแแ แแแแฎแแแแแก commit-แแกแแแแก; - แแแแขแแฅแกแขแ.
แแ แขแแคแแฅแขแแก แจแแแแแแแก แแฆแฌแแ แ
{{- 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 }} แแ แขแแคแแฅแขแแก แกแแฎแแแ แฃแแแแแแฃแ แ แฃแแแ แแงแแก. แแแแก แแแฆแฌแแแ แจแแแแแซแแแ, แแแแแแแแแ, แแ แฎแแก แกแแฎแแแแก แแแแแขแแแแ (แชแแแแแ แแแแจแแแแแแแ) .Channel) แแ แขแแคแแฅแขแแก แกแแฎแแแแก แกแฃแคแแฅแกแแก แกแแฎแแ: artifact: doc-{{ .Channel }}แแแแ แแ แฃแแแ แแแกแแแแแ, แ แแ แแ แขแแคแแฅแขแแแแแแ แแแแแ แขแแกแแก, แแแแแ แกแแฎแแแแแแก แแแแแแแแ แแแแญแแ แแแแแ.
แแ แขแแคแแฅแขแแก แแฆแฌแแ แแกแแก แแแแแแงแแแแแ แจแแแแแแ werf แคแฃแแฅแชแแ: แแแแขแแแ แแแแแแแแฃแแ แกแแ แแแกแแก แแแ แแฅแขแแ แแแ build_dir แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ Jekyll-แแก แฅแแจแ แแแแกแแแแแแก แแแจแแแแแแก แจแแ แแก, แ แแช แแแแจแแแแแแแแแ แแฉแฅแแ แแแก แฎแแแแฎแแ แแฌแงแแแแก.
แจแแกแแซแแแ, แแกแแแ แจแแแแฉแแแแ แคแแแแแก แแแแแงแแแแแ releases.yml โ แแ แแก YAML แคแแแแ, แ แแแแแก แแแแแจแแแแแก แแแแแชแแแแแแช แแแแฎแแแแแแแ (แแแแกแแแแแแก แจแแกแ แฃแแแแแกแแก แแแฆแแแฃแแ แแ แขแแคแแฅแขแ). แแก แกแแญแแ แแ แกแแแขแแก แแแแแแแแชแแแกแแก, แแแแ แแ แกแขแแขแแแก แแแแขแแฅแกแขแจแ แฉแแแแแแแก แกแแแแขแแ แแกแแ, แ แแแแแ แแแกแ แแแแแแแ แแแแ แแแแแแแแแแฃแแแ แแฎแแแแ แแ แแ แแ แขแแคแแฅแขแแก แฎแแแแฎแแ แแฌแงแแแ โ แกแแแขแแก root แแแ แกแแแก แแ แขแแคแแฅแขแ (แกแฎแแ แแ แขแแคแแฅแขแแแจแ แแก แกแแญแแ แ แแ แแ แแก).
แแก แฎแแ แชแแแแแแแ แแแ แแแแแ แแแแ แแขแแ แแก แแแแแงแแแแแแ. if Go-แก แจแแแแแแแแ แแ แแแแกแขแ แฃแฅแชแแแแ {{ $Root.Files.Get "releases.yml" | sha256sum }} แกแชแแแแแ แแก แแกแ แแฃแจแแแแก: root แแแ แกแแแกแแแแก แแ แขแแคแแฅแขแแก แจแแฅแแแแกแแก (แชแแแแแ .Channel แแ แแก root) แคแแแแแก แฐแแจแ releases.yml แแแแแแแแก แแฎแแแแก แแแแแ แแขแแแแก แฎแแแแแฌแแ แแแ, แ แแแแแ แแก Ansible แแแแแแแแแก แกแแฎแแแแก แแแแแแแแแขแแ (แแแ แแแแขแ แ nameแแแแแแ แแ, แชแแแแแแแแกแแก แจแแแแแ แกแ แคแแแแ releases.yml แจแแกแแแแแแกแ แแ แขแแคแแฅแขแ แฎแแแแฎแแ แแแฌแงแแแ.
แแกแแแ, แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแ แ แกแแชแแแแแ แแฃแจแแแแแก. แแ แขแแคแแฅแขแแก แแแแแกแแฎแฃแแแแแจแ , แแฎแแแแ แแแ แแฅแขแแ แแ แแแแแแขแแแ /docsแแ แแแแแชแแแฃแแ แแแ แแแแขแ แแแแก แแแฎแแแแแ, แกแแญแแ แ แขแแแแก แแ แแแแแฎแแแแแก แแแแแขแ แแแฃแงแแแแแแแแ แแแแขแแแ.
แแ แขแแคแแฅแขแแก แจแแแแแแแก แแแแแกแแงแแแแแแแ แแแแแชแแแฃแแ แแ แฎแแก แแแ แกแแแแแกแ แแ แ แแแแแแแแก แแ แขแแคแแฅแขแแก แแฆแฌแแ แแก แแแแแ แแ แแแแกแแแแก, แฉแแแ แแแฌแงแแแ แชแแแแก แชแแแแแแก แแแฎแแแแแ. .WerfVersions ะฒ werf.yaml:
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}} แ แแแแแ แชแแแแ แ แแแแแแแแ แแ แขแแคแแฅแขแก แฌแแ แแแฅแแแแก (แแแแแแแแแแแ, แ แแ แแกแแ), แแฃแชแแแแแแแแ แแแแแแแแแแกแฌแแแแ แแแ แจแแ แแก แแแแงแแคแ - แแแแแแแแแแ แแแ --- (แแแแคแแแฃแ แแชแแแก แคแแแแแก แกแแแขแแฅแกแแก แจแแกแแฎแแ แแแแแขแแแแแ แแแคแแ แแแชแแแกแแแแก แแฎแแแแ แ แแแแ แช แแแ แ แแแแแกแแแฆแแ แแ, แชแแแแจแ แจแแแแแแแก แแแแแซแแฎแแแแกแแก, แฉแแแ แแแแแแชแแแ แแแ แกแแแก แแแ แแแแขแ แแแก, URL-แก แแ root แแแแขแแฅแกแขแก.
แแแแแแแแฃแ แแ, แแแแ แแ แชแแแแแก แแแ แแจแ, แแ แขแแคแแฅแขแแก แจแแแแแแก แแแซแแฎแแแ โแแแแกแแแฃแแ แแแฃแแ แจแแแแฎแแแแแแแกแแแแกโ: root แแแ แกแแแกแแแแก, แแกแแแ review commit-แแก แแแ แกแแแกแแแแก:
{{ 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 }} แแแแแแแแแกแฌแแแแ, แ แแ แแแแแฎแแแแแก แแแแแกแขแฃแ แแแแก แแ แขแแคแแฅแขแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ แจแแแฅแแแแแ, แแฃ แชแแแแแ แแแงแแแแแฃแแแ. .WerfReviewCommit.
แแ แขแแคแแฅแขแแแ แแแแแแ - แแแแแ แขแแก แแแฌแงแแแแก แแ แแ!
Kubernetes-แแ แแแกแแจแแแแแ แแแแแฃแแแแแแ แกแแแแแแ แกแฃแ แแแ แแ แแก แฉแแแฃแแแแ แแแ NGINX, แ แแแแแกแแช แแแแแขแแแฃแแ แแฅแแก แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแก แคแแแแ. nginx.conf แแ แกแขแแขแแแ แแ แขแแคแแฅแขแแแแแแ. แกแแแขแแก แซแแ แแฃแแ แแแ แกแแแก แแ แขแแคแแฅแขแแก แแแ แแ, แชแแแแ แชแแแแแแ แฃแแแ แแแแแแแแ แแ. .WerfVersions แแ แฎแแกแ แแ แแแแแจแแแแแก แแแ แกแแแก แแ แขแแคแแฅแขแแแแก แแแแแ แขแแกแแแแก + แแแแชแแแแ แแ แขแแคแแฅแขแแแแก แแแกแแฎแแแแแแก แฌแแกแ, แ แแแแแแช แแแ แ แแแแแฆแแ. แ แแแแแ แแแแแแฃแแ แแ แขแแคแแฅแขแ แแแแฎแแแก แกแแแขแแก แแแ แกแแแแก แแ แ แแแแกแแแแก, แฉแแแ แแแ แแแแแ แขแแ แแแแก แแแฎแแแแ แแแแคแแแฃแ แแชแแแ แแแแแแแแฃแ แแแแแแแแจแ.
แกแแแแแแ แกแฃแ แแแแก 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 -}}แแแแแขแแแแแ แกแฃแ แแแ, แ แแแแแแช แแแแแแแแแ แฃแ แฌแ แแแแ แแแแแแ แกแฃแ แแแแแ แแ แแแ แแฎแกแแแแ, แกแแแขแแก แแฎแแแแ แแ แแแ แกแแแก แจแแแชแแแก: แแแแฎแแแแแก แแแแแขแแแแ แแแ แกแแแก แแ แกแแแขแแก root แแแ แกแแแก (แแก แจแแแชแแแก แกแแแ แแ แแฅแขแแแแแก แแ, แแฃ แแแฎแกแแแ, แแแแแจแแแแแก แแแแแชแแแแแก). แแแ แแแแ, แแแแแขแแแแแ แกแฃแ แแแ แซแแ แแแแแ แกแฃแ แแแแกแแแ แแฎแแแแ แแแแแ แขแแก แแแแงแแคแแแแแแ (แแ, แ แ แแฅแแ แฃแแแ, แกแแฎแแแแ) แแแแกแฎแแแแแแแ:
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 }} แ แแแแ แช แแแแแ แแฆแแแแจแแ, แแแแแฎแแแแแก แแแแแขแแกแแแแก แแ แขแแคแแฅแขแ แแฎแแแแ set environment แชแแแแแแก แแแจแแแแแกแแก แแแแแ แแ แแแแ. REVIEW_SHA. แจแแกแแซแแแแแแ แแฅแแแแแแ werf-dev แแแแฏแแก แกแแแ แแแ แแ แแแแแ แแ แแแ, แแฃ แแแ แแแแก แชแแแแแ แแ แแฅแแแแแแ. REVIEW_SHA, แแแแ แแ แแแแกแแแแแก, แ แแ werf-แจแ Docker-แแก แแแแฏแแแ werf-dev แแแแฏแแกแแแแก แแฃแจแแแแแ, แแแกแ แแแแแ แแฎแแแแ root แแแ แกแแแก แแ แขแแคแแฅแขแแ แแแฎแแแแ (แแก แแกแแแแช แฃแแแ แแแแแฃแแแ), แ แแแ แแแแแ แขแแแแแก pipeline แกแขแ แฃแฅแขแฃแ แ.
แแฌแงแแแ แแแแแแ! แแแแแแแแแ CI/CD-แแ แแ แแแแจแแแแแแแแ แแแฃแแแกแแแแ.
GitLab CI-แจแ แแแแกแแแแแ แแ แแแแแแแฃแ แ แแฌแงแแแแก แแแฎแแกแแแแแแแแแ
แแฌแงแแแแก แแแจแแแแแกแแก, แฉแแแ แฃแแแ แแแแแงแแแแ แแแ แแแแก แชแแแแแแแ, แ แแแแแแแช แแแแแแงแแแแแ werf.yamlแแก แแ แแฎแแแ REVIEW_SHA แชแแแแแก, แ แแแแแกแแช GitHub-แแก แฐแฃแแแแแ แแแแกแแแแแแก แแแแแซแแฎแแแแกแแก แแแแแงแแแแแ.
แกแแญแแ แ แแแ แ แแแแแชแแแแแแก แคแแ แแแ แแแแก Bash แกแแ แแแขแจแ แแแแแแแขแแแ. generate_artifacts, แ แแแแแแช แฌแแ แแแฅแแแแก GitLab-แแก แแ แแแแกแแแแแแก แแ แขแแคแแฅแขแก:
- แคแแแแ
releases.ymlแแแแแจแแแแแก แแแแแชแแแแแแ, - แคแแแแ
common_envs.sh, แ แแแแแแช แจแแแชแแแก แแฅแกแแแ แขแแกแแแแก แแแแแฃแแแแแ แแแ แแแแก แชแแแแแแแก.
แคแแแแแก แจแแแแแ แกแ generate_artifacts แแฅแแแ แแแแแแ แฉแแแแก แกแขแแขแแแก แแแแ แแแแแ แแแแแชแแแแ แจแแแ แแแแแ แแ แแ แ, แแ แแแแ แคแแแแแ. common_envs.sh แฉแแแแแแแก แแแแจแแแแแแแแแแ, แ แแแแแ werf-แแก แแแฅแแแแแแ แแแกแแแ แแแแแแแแแแฃแแ. แแแกแ แจแแแแแ แกแแก แแแแแแแแ:
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' แแกแแแ แกแแ แแแขแแก แแแแแแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก, แแแแแแแแแ, Bash แคแฃแแฅแชแแแก แแแแแงแแแแแแ. source.
แแฎแแ แงแแแแแแ แกแแแแขแแ แแกแ แแแฌแแแ แแฌแงแแแ. แแแแกแแแแแก, แ แแ แแแแแแแชแแแก แแฌแงแแแแแแช แแ แแแแแแแแแแแแช แกแฌแแ แแ แแแฃแจแแแก, แแฃแชแแแแแแแแ แแแ แฌแแฃแแแแ, แ แแ werf.yaml แแงแ แแแแแ แงแแแแ แจแแแแฎแแแแแจแ แแ แแ แแแแกแแแแแแก แคแแ แแแแแจแแแฃ แแก แแแ แแแ แแ แแแแแแงแแคแแแแแแ, แแแจแแ werf-แแก แแแแ แแฌแงแแแแกแ แแ, แแแแแแแแแ, แแแแแแแแแแก แแ แแก แแแแแแแแแแ แแขแแแแก แฎแแแแแฌแแ แแแ แแแแกแฎแแแแแแฃแแ แแฅแแแแ. แแก แแแแแแฌแแแแก แแแแแแแแแแก แจแแชแแแแแก, แ แแแแแ แแแแแแแแแแกแแแแก แกแแญแแ แ แกแฃแ แแแ แแ แแฅแแแแ.
แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแฃ แกแแแขแแก แกแฃแ แแแแก แแฌแงแแแแก แแ แแก แแแคแแ แแแชแแ แแแแแจแแแแแแแกแ แแ แแแ แกแแแแแก แจแแกแแฎแแ แแแแแแ, แฎแแแ แแแแแแแแแแก แแ แแก แแแแแแแก แแฎแแแ แแแ แกแแ แแ แแแ แแแแก แชแแแแแแแก แแแแกแฎแแแแแแฃแแ แแแแจแแแแแแแแแ แแฅแแ, แแแจแแ แแแแแแแแแ แจแแชแแแแแ แแแกแ แฃแแแแแ: แแแแแก แแ แแแแแก, แแฎแแแ แแแ แกแแแก แแ แขแแคแแฅแขแ แฏแแ แแ แแ แแก แแฌแงแแแแแ.
แแฃ แแแแแ werf.yaml แแแแแแแแแแฃแแแ แแแ แ แแแแแชแแแแแแ (แแแแแแแแแ, แแแแแแแแ แ แแแ แกแแแแแก แกแแแแ, แ แแแแ แช แฉแแแแก แจแแแแฎแแแแแจแแ), แแแจแแ แแกแแแ แแแแแชแแแแแแก แจแแแแแแแแแแแ แแ แแแแจแแแแแแแแแ แฃแแแ แฉแแแฌแแ แแก แแแแกแแแแแจแ. แแก แแแแกแแแฃแแ แแแแ แแแแจแแแแแแแแแแ, แแฃ แแแ แ แแแ แแแแขแ แแแ แกแแแแแแ แฎแจแแ แแ แแชแแแแแ.
แฉแแแ แแแแฅแแแแ แแแ แ แแแแแชแแแแแแก แแแฆแแแ แแ แฉแแฌแแ แ GitLab-แจแ แแแแกแแแแแแก แแแ แแแ แแขแแแแ (แฌแแแแกแฌแแ แ แแฌแงแแแ) แแ แแแแแกแชแแก แแกแแแ แจแแแแแแแจแ แคแแ แแแ GitLab CI แแ แขแแคแแฅแขแแแแแก แกแแจแฃแแแแแแก แแแแชแแแ แแแฃแจแแแ แแ แแแแแขแแแ แแแ แแแแกแแแแแแก แแแแชแแแแแ (แจแแฅแแแ, แแแแแแแแแ, แแแฌแแแแแ) แแแแแ แแแแคแแแฃแ แแชแแแ werf.yaml.
แกแชแแแแก แจแแแแแ แกแ แฌแแแแกแฌแแ แ แแฌแงแแแ แคแแแแ .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 weekแแ แขแแคแแฅแขแจแ แแแ แ แแแแแชแแแแแแก แแแคแแฅแกแแ แแแแก แจแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแฌแงแแ แแ แแแแแแแแกแแ GitLab CI แแแแกแแแแแแก แกแขแแแแแ แขแฃแแ แแขแแแแแแก แแแแแงแแแแแแ: Build and Deploy. แฉแแแ แแแแแ แแแแกแแแแแก แแฃแจแแแแ werf GitHub แ แแแแแแขแแ แแแแ แฐแฃแแแแแก แแแแแงแแแแแแ (แแแฃ, แ แแแแกแแช GitHub-แแ แ แแแแแแขแแ แจแ แชแแแแแแแแแแ). แแแแแแแก แแแแแชแแแแแแก แแฆแแแ แจแแกแแซแแแแแแแ แแแแงแแคแแแแแแจแ GitLab แแ แแแฅแขแแก แแแแกแแแแแแแแ. CI/CD แแแ แแแแขแ แแแ -> แแแแกแแแแแแก แขแ แแแแ แแแแแ แจแแแแแ แจแแฅแแแแแ แจแแกแแแแแแกแ Webhook GitHub-แจแ (แแแ แแแแขแ แแแ -> แแแแฐแฃแแแแ).
แจแแฅแแแแก แแขแแแ แแกแ แแแแแแงแฃแ แแแ:
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 แกแชแแแแแแ แจแแฅแแแแก แแขแแแแ แแ แแ แขแแคแแฅแขแก แแแแแแขแแแก. แฌแแแแกแฌแแ แ แแฌแงแแแ, แแแแขแแ แฉแแแ แแฅแกแแแ แขแก แแแฎแแ แชแแแแแแ แชแแแแแแแแก แแฅแกแแแ แขแแ แแแแแแแแแฃแแ แจแแงแแแแแก แแแแแชแแแแแแ แแแแกแขแ แฃแฅแขแแก แแแแแงแแแแแแ source common_envs.shแแจแแแแแแแแแก แแขแแแก แงแแแแ แจแแแแฎแแแแแจแ แแแฌแงแแแ, แแแ แแ แแแแกแแแแแแก แแ แแคแแแแ แแแจแแแแแกแ. แแ แแคแแแแ, แแแแกแแแแแก แแแฌแแแแแแกแแแแก แแแแฃแจแแแแ - แแ แจแแแแฎแแแแแจแ แแจแแแแแแแแแก แจแแกแ แฃแแแแ แกแแญแแ แ แแ แแ แแก.
แแแแแแแแแแก แแขแแแแ, แฉแแแ แแฆแแฌแแ แ แแ แแแแชแแแแก - แชแแ-แชแแแแ แฌแแ แแแแแแกแ แแ แแแแแแแแ แแแแก แฌแ แแแแแจแ แแแแแแแแแแกแแแแก, 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 แแแแแแแแแแ แแ แกแแแแแแ แแแแกแฎแแแแแแแ แแฎแแแแ แแ แแแแกแขแแ แแก แแแแขแแฅแกแขแแก แแแแแแแแแ, แ แแแแแจแแช werf-แแ แฃแแแ แแแแแฎแแ แชแแแแแก แแแแแแแแแ (WERF_KUBE_CONTEXT), แแ แแแแขแฃแ แฃแแ แแแ แแแแก แชแแแแแแแแก แแแงแแแแแ (environment.name ะธ environment.url), แ แแแแแแแช แจแแแแแ แแแแแแงแแแแแ Helm-แแก แแแแแ แแแแก แจแแแแแแแแจแ. แฉแแแ แแ แแแแแฌแแแแ แจแแแแแแแแแก แจแแแแแ แกแก, แ แแแแแ แแแแกแแฎแแแแแแ แแแแแกแแแแก แแ แแคแแ แแ แกแแแแขแแ แแกแ, แแแแ แแ แแแแ แแแแแ แจแแแแซแแแแ .
แกแแแแแแ แจแแฎแแแ
แ แแแแแ werf แแแ แกแแแแ แกแแแแแแ แฎแจแแ แแ แแแแแแแก, แแฎแแแ แกแฃแ แแแแแ แฎแจแแ แแ แจแแแฅแแแแแ แแ Docker-แแก แ แแแกแขแ แ แแฃแแแแแแ แแแแแ แแแแ. แแแแขแแ, แแฃแชแแแแแแแแ แกแฃแ แแแแแแก แแแขแแแแขแฃแ แ แแแฌแแแแแแก แแแงแแแแแ แแแแแขแแแแก แแแฎแแแแแ. แแก แซแแแแแ แแแ แขแแแแ.
แแแแฎแแ แชแแแแแแแกแแแแก แแแแญแแ แแแแแ:
- แแแแแแขแแ แแแกแฃแคแแแแแแแก แแขแแแ
.gitlab-ci.yml; - แแแแแแขแแ แแแกแฃแคแแแแแแแก แแแแแแแแแก แแแ แแแแฃแแ แจแแกแ แฃแแแแ;
- แแแแงแแแแ แแแ แแแแก แชแแแแแ แฉแแฌแแ แแก แฌแแแแแแก แขแแแแแแ.
แแแแแแขแแ แแแกแฃแคแแแแแแแก แแขแแแ .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
แแแแแ แแก แแแแฅแแแก แงแแแแแคแแ แ แฃแแแ แแแแฎแแ โ แแฎแแแแ แแแก แแแกแแกแฃแคแแแแแแแแ, แฏแแ Docker Registry-แจแ แฃแแแ แจแแฎแแแแแ แแกแแแ แขแแแแแแ, แ แแแแแกแแช แแฅแแก Docker Registry-แจแ แกแฃแ แแแแแแก แฌแแจแแแก แฃแคแแแแ (GitLab CI แแแแแแแแแก แแแขแแแแขแฃแ แแ แแแชแแแฃแ แขแแแแแก แแกแแแ แฃแคแแแแแแ แแ แแฅแแก). แขแแแแแ แฌแแแแกแฌแแ แฃแแแ แจแแแฅแแแแก GitLab-แจแ แแ แแแกแ แแแแจแแแแแแแ แฃแแแ แแงแแก แแแแแแแแฃแแ แแแ แแแแก แชแแแแแจแ. WERF_IMAGES_CLEANUP_PASSWORD แแ แแแฅแขแ (CI/CD แแแ แแแแขแ แแแ -> แชแแแแแแแ).
แแแกแฃแคแแแแแแแก แแแแแแแแแก แแแแแขแแแ แกแแญแแ แ แแ แแคแแแแ แฎแแแแ CI/CD ->
แกแฎแแแแแแ.
แกแฃแ แแกแแ: แแฅแแแแ Docker Registry แแ แแแฅแขแ แแฆแแ แแแแแ แแแแ แแฃแแแแแแ แแแแแฃแงแแแแแแแ แกแฃแ แแแแแแแแ.
แแ แแฅแขแแแฃแแ แแแฌแแแแก แแแกแแกแ แฃแแก, แแแแแ แจแแแแฎแกแแแแ, แ แแ แกแขแแขแแแแแ แกแ แฃแแ แฉแแแแแแแแแแ แฎแแแแแกแแฌแแแแแแ :
- ;
- .
แจแแแแแ
- แฉแแแ แแแแแฆแแ แแแแแแฃแ แ แแกแแแแแแแก แกแขแ แฃแฅแขแฃแ แ: แแ แแ แแ แขแแคแแฅแขแ แแแแ แแแ แกแแแแ.
- แแกแแแแแแ แฃแแแแแ แกแแแฃแ แแ แแ แแ แกแแญแแ แแแแก แฎแแแแ แชแแแแแแแแแก werf-แแก แแฎแแแ แแแ แกแแแแแก แแแแแกแแแแกแแก: แกแแแขแแ แแแแฃแแแแขแแชแแ แแแขแแแแขแฃแ แแ แแแแแฎแแแแแ.
- แกแฎแแแแแกแฎแแ แแแแขแฃแ แแแแกแแแแก แแ แ แกแฃแ แแแแ แจแแแ แแแแแฃแแ.
- แแก แกแฌแ แแคแแ แแฃแจแแแแก, แ แแแแแ แฅแแจแแ แแแ แแแฅแกแแแแแฃแ แแ แแแแแแงแแแแแ - แ แแแแกแแช werf-แแก แแฎแแแ แแแ แกแแ แแแแแแแก แแ GitHub hook แแแแแแซแแฎแแแ แแแแแฎแแแแแก แฉแแกแแฌแแ แแ, แแฎแแแแ แจแแชแแแแแ แแแ แกแแแก แจแแกแแแแแแกแ แแ แขแแคแแฅแขแ แฎแแแแฎแแ แแฅแแแแแ.
- แแ แแ แแก แกแแญแแ แ แแแแแฃแงแแแแแแแ แกแฃแ แแแแแแก แฌแแจแแแแ แคแแฅแ แ: werf แแแแแขแแแแแ แแแคแฃแซแแแแฃแแ แแแฌแแแแแ แแฅแแแแก Docker-แแก แ แแแกแขแ แก แแแฌแแกแ แแแแแฃแแแ แจแแแแแ แฉแฃแแแแก.
แแแกแแแแแแ
- werf-แแก แแแแแงแแแแแ แกแแจแฃแแแแแแก แแซแแแแก แแแแแก แกแฌแ แแคแแ แแแฃแจแแแก แ แแแแ แช แแแแแ แแแแแแก, แแกแแแ แแแ แ แ แแแแแแขแแ แแแแแ แแฃแจแแแแแกแแก แฅแแจแแ แแแแก แแแแ.
- แแแ แ Git แ แแแแแแขแแ แแแแแแ แแฃแจแแแแ แแแแแ แแชแฎแแแก แ แแแแแแขแแ แแก แงแแแแ แฏแแ แแ แกแ แฃแแแ แแแแแแ แแแแก แแ แ แแฃแแ แแแขแแแแแแชแแแก แแแแแแแ แแแ แแแแก แฎแแแแฎแแ แแแแแแแแแแแก แกแแญแแ แแแแแก. werf แแงแแแแแก แฅแแจแก แแ แแแแแแ แแแแก แแฎแแแแก แแฎแแแแ แแ แแฎแแ, แจแแแแแ แแ แแงแแแแแก
fetchแแ แแฎแแแแ แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ. - Go แจแแแแแแแแแก แแแแแงแแแแแแก แจแแกแแซแแแแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแจแ
werf.yamlแกแแจแฃแแแแแแก แแแซแแแแ แแฆแฌแแ แแ แแกแแแแแแ, แ แแแแแก แจแแแแแแช แแแแแแแแแแฃแแแ แแแ แ แแแแแชแแแแแแ. - werf-แจแ แแแแแแขแแแแแแก แแแแแงแแแแแ แแแแจแแแแแแแแแ แแฉแฅแแ แแแก แแ แขแแคแแฅแขแแแแก แจแแแ แแแแแแก - แฅแแจแแก แฌแงแแแแแแ, แ แแแแแแช แงแแแแ แแแแกแแแแแแกแแแแก แกแแแ แแแ.
- werf แแแแแแแแแก แแแกแฃแคแแแแแแแก แแแแคแแแฃแ แแชแแแก, แ แแช แแแแกแแแฃแแ แแแแ แแแแจแแแแแแแแแแ แแแแแแแฃแ แ แแแแแแแแกแแแแก.
PS
แแกแแแ แฌแแแแแแฎแแ แฉแแแแก แแแแแแ:
- ยซ";
- ยซ";
- ยซ";
- ยซ".
แฌแงแแ แ: www.habr.com
