ืืืจ ืืึธืื ืฉืืื ืืขืจืขืื ืืืขืื ืืื ืืืขืจ GitOps ืืขืฆืืึทื ืืขืจ ืืื ืึทืืึธื.
ืืืื ืืื ืื ื ืืึทื ืกืื ืคืื ืื ืคึผืืึทืฅ ืกืืจืืงืืืจ: ืืืฉืขื ืขืจืืืืื ื ืึท ืคึผืจืึธืกื ืืขื ืื ืคึฟืึทืจ ืึทืืข ืืืขืจืกืืขืก, ืืืขืืขืจ ืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืจืืืืกืื, ืขืืง. โ ืืืจ ืฐืขืื ื ืืฉื. ืึทื ืฉืืึธื, ืืึธืืืจ ืคืึธืงืืก ืืืืฃ ืื ืืฉืื ืืื ืคึฟืขืึดืงืืืื ืคืื ืืื ืึทืืืฉ ืคึฟืึทืจืืึทืืืื ื ืืื ืึท ืืืกื ืืืืฃ ืื ืึทืงืึทืืคึผืึทื ืืื ื ืกื / ืกื ืคึผืจืึทืกืขืกืึทื.
ืืงืืื: ืืื ืื ืคึผืืึทืฅ ืึทืจืืขื
ืฆื ืึธื ืืืืื ืืื, ืืืึธืจืฃ ืืึทืงืืืืขื ืืืืฉืึทื ืืื ืกืืึธืจื ืฆืืืืืขื ืืื ืืืึทื ืงืึธื. ืืึธืก ืืืคึผืึธืืืึทื ืืืืขืจ ืึทื ืืืืืงืืื ื ืจืขืงืืืืจืขืืขื ืฅ ืืืึธืก ืืขื ืขื ืืืื ืืืืึทืืขืจ ืคืื ืื ืคืึทืจื ืขื ืคืื ืืขื ืึทืจืืืงื, ืึธืืขืจ ืืื ืึท ืืื ืืืื ืขืก ืงืขื ืขื ืืืื ืืขืืึธืื ืึทื:
- ื ืื ืืืึธืจืฃ ืคืึทื ืืงืฉืึทื ื ืืึธื ื ืื ืืืื ืืืคืจืืื ืึธื ืึทืคึผืืืืืื ื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืื, ืคืึทืจืงืขืจื, ืงืืื ืขื ืืขืจืื ืืขื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืคึผืืืื ืื ืืขืืืื ื ืคืื ืึท ื ืืึทืข ืืืขืจืกืืข ืคืื โโโโืืืขืจืฃ;
- ืื ืคึผืจืืืขืงื ืืื ืึท ืืึทื ืฅ ืืื ืืขื ืกืืืืข ืึทื ืืืืืงืืื ื: ื ืืึทืข ืืืขืจืกืืขืก ืงืขื ืขื ืืืื ืจืขืืขืึทืกืขื ืขืืืขืืข ืืึธื ืึท ืืึธื;
- ืงืืื ืืึทื ืืึทื ืึทืคึผืขืจืืืฉืึทื ื ืฆื ืฆืขืืืืงืืขื ืึท ืคึผืืึทืฅ ืืื ืึท ื ืืึทืข ืืืขืจืกืืข ืคืื โโืืึทืงืืืืขื ืืืืฉืึทื ืืขื ืขื ืืคึผืืืช ืืืืืึทืก;
- ืืขืจ ืคึผืจืืืขืงื ืึทืืึทืคึผืฅ ืึท ืกืขืืึทื ืืืง ืฆืืืึทื ื
ืืืขืจืกืืข , ืืื 5 ืคืขืกืืงืืึทื ืืฉืึทื ืึทืื. ืืขืจ ืืขืืืื ื ืคึผืจืึธืฆืขืก ืื ืืืึทืืืื ืกืึทืงืืืขื ืืฉืึทื ืืืจืืคืึธืจ ืคืื ืืืขืจืกืืขืก ืืืจื ืืฉืึทื ืึทืื ืืื ืกืืจ ืคืื ืื ืงืจืืกืื ื ืคืขืกืืงืืึทื: ืคืื ืึทืืฃ ืฆื ืฉืืืื-ืืึทืจื; - ืืขืจ ืคึผืืึทืฅ ืืื ืึท ืจืืกืืฉ-ืฉืคึผืจืึทื ืืืขืจืกืืข, ืืืึธืก "ืืขืื ืืื ืืขืืืขืืึธืคึผืก" (ื"ื, ืืขืจ ืืื ืืึทืื ืคืื ืืืึธืก ืืื ืืขืจืืืึทื ืืืงื) ืืื ืคึผืึทืจืึทืืขื ืืื ืื ืืืืคึผื (ื"ื ืขื ืืืืฉ-ืฉืคึผืจืึทื) ืืืขืจืกืืข.
ืฆื ืืึทืืึทืืื ืึทืืข ืืขื "ืื ืขืจ ืงืื" ืคืื ืื ืืึทื ืืฆืขืจ, ืคืึธืจืฉืืึธืื ืืื ืขืคึผืขืก ืืืึธืก "ื ืึธืจ ืึทืจืืขื", ืืืจ ืืืื ืืึทืืื ืืขืจ ืืืึธืจืฃ ืื ืกืืึทืืืจืื ื ืืื ืืขืจืืืึทื ืืืงื ืืขืฆืืึทื - ืืื
ืืื ืื ืืืขืจืกืืข ืกืขืืขืงืฆืืข ืืขื ืื ืืืืฃ ืืขื ืืืขืืืืืื, ืื ืืขืฆืืข ืืืขืจืกืืขืก ืคืื werf ืืขื ืขื ืื ืืืฆื ืืื ืืขืืขืจ ืงืึทื ืึทื. ืืืจื ืคืขืืืงืืึทื, ืืืจื ืึทืืจืขืก
ืืื ืืึทื ืฅ, ืื ืคึผืืึทืฅ ืืื ืื ืคืืืืขื ืืข ืืืขืจืกืืขืก ืื ืืืฆื:
- root (ืขืคืขื ืขื ืืืจื ืคืขืืืงืืึทื),
- ืคึฟืึทืจ ืืขืืขืจ ืึทืงืืืื ืืขืจืืืึทื ืืืงื ืงืึทื ืึทื ืคืื ืืขืืขืจ ืืขืืืื ื (ืืืฉื,
werf.io/v1.0-beta ).
ืฆื ืืืฉืขื ืขืจืืื ืึท ืกืคึผืขืฆืืคืืฉ ืืืขืจืกืืข ืคืื โโโโืึท ืคึผืืึทืฅ, ืืื ืึทืืืขืืืื, ืขืก ืืื ืืขื ืื ืฆื ืืึทืืืขื ืขืก ื ืืฆื /docs
werf ืจืืคึผืึทืืึทืืึธืจื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืึทืคึฟืขื (jekyll build
), ื ืึธื ืกืืืืืฉืื ื ืฆื ืื ืืื ืงืืืืื ืคืื ืื ืคืืจืืื ืื ืืืขืจืกืืข.
ืขืก ืืืืืื ื ืึธืจ ืฆื ืืืืื ืึทื:
- ืื ื ืืฆื ืืื (werf) ืืื ืืขื ืืฆื ืคึฟืึทืจ ืคึฟืึทืจืืึทืืืื ื;
- ืกื / ืกื ืคึผืจืึทืกืขืกืึทื ืืขื ืขื ืืขืืืื ืืืืฃ ืื ืืงืขืจ ืคืื GitLab CI;
- ืืื ืืึธืก ืึทืืฅ ืืืืคื ืืึธื ืืื ืงืืืขืจื ืขืืขืก.
ืืึทืกืงืก
ืืืฆื ืืึธืื ืืื ืื ืคืึธืจืืืืืจื ืืึทืกืงืก ืืืึธืก ื ืขืืขื ืืื ืืฉืืื ืึทืืข ืื ืืืกืงืจืืืื ืกืคึผืขืกืืคืืงืก:
- ื ืึธื ืืฉืึทื ืืื ื ืื ืืืึธืจืฃ ืืืขืจืกืืข ืืืืฃ ืงืืื ืืขืจืืืึทื ืืืงื ืงืึทื ืึทื ืืึทืงืืืืขื ืืืืฉืึทื ืืืืฃ ืืขื ืคึผืืึทืฅ ืืึธื ืืืื ืืืืืึธืืึทืืืฉ ืืขืจืืืึทื ืืืงื.
- ืคึฟืึทืจ ืึทื ืืืืืงืืื ื ืืืจ ืืึทืจืคึฟื ืฆื ืงืขื ืขื ืฆื ืืื ืงืืง ืคืึธืจืืืกืืงืข ืืืืึทืืื ื ืืืขืจืกืืขืก ืคืื ืืขื ืคึผืืึทืฅ.
ืืขืจ ืคึผืืึทืฅ ืืืื ืืืื ืจืืงืึธืืคึผืืืื ื ืึธื ืืฉืึทื ืืื ื ืื ืืืขืจืกืืข ืืืืฃ ืงืืื ืงืึทื ืึทื ืคึฟืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืื ืืึทืืก, ืึธืืขืจ ืืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืืืืขื ืื ืืืื ืืืจ ืืืขืื ืืึทืงืืืขื ืื ืคืืืืขื ืืข ืคึฟืขืึดืงืืืื:
- ืืื ื ืื ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืืืืฃ ืืฉืึทื ืึทืื ืขื ืืขืจืื ืืขื, ืขืก ืืื ืืืืื ื ืืืืืง ืฆื ืจืืืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืคึฟืึทืจ ืืฉืึทื ืึทืื ืืื ืื ืืืขืจืกืืข ืืื ืืขืืืื. ื ืึธื ืึทืืข, ืจืืืืืืื ื ืึทืืฅ ืืืืืขืจ ืืื ื ืืฉื ืืืืขืจ ืคืืึทื.
- ืืขืจ ืืึทื ื ืคืื ืืฉืึทื ืึทืื ืคึฟืึทืจ ืจืืืืกืื ืงืขื ืืืืฉื. ืืื ืขืืืขืืข ืคืื ื ืืื ืฆืืื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืงืขื ื ืืฉื ืืืื ืึท ืืืขืจืกืืข ืืืืฃ ืื ืืฉืึทื ืึทืื ืืขืจ ืกืืึทืืื ืืื ืื ืคืจื-ืึทืงืกืขืก 1.1 ืืขืืืื ื, ืึธืืขืจ ืืื ืฆืืื ืืื ืืืขืื ืืขืจืฉืืึทื ืขื - ืืื ืืขื ืคืึทื, ืืึธื ืืืจ ื ืืฉื ืืืืฉื ืื ืคึฟืึทืจืืึทืืืื ื ืืึทื ืืืึทืื?
ืขืก ืืืจื ืก ืืืืก ืึทื ืคึฟืึทืจืืึทืืืื ื ืืขืคึผืขื ืืก ืืืืฃ ืืฉืึทื ืืื ื ืคืื ืืจืืืกื ืืืง ืืึทืื.
ืืืคึผืืขืืขื ืืึทืืืึธื
ืืฉืึธืึธืกืื ื ืึท ืฆืืืึทื ื
ืึทืืืขืจื ืึทืืืืืขืื, ืืืจ ืงืขื ืขื ืืืืคื ืืขืืขืจ ืคืืจืืื ืื ืืืขืจืกืืข ืืื ืึท ืืึทืืื ืืขืจ ืคึผืึธื ืืื Kubernetes. ืื ืึธืคึผืฆืืข ืืืคึผืืืื ืึท ืืจืขืกืขืจืข ื ืืืขืจ ืคืื ืึทืืืืฉืขืงืฅ ืืื ืืขื ืงื ืืื, ืืืึธืก ืืืขื ืืืึทืงืกื ืืื ืื ืคืึทืจืืจืขืกืขืจื ืืื ืื ื ืืืขืจ ืคืื ืกืืึทืืื ืืืึธืจืฃ ืจืืืืกืื. ืืื ืืึธืก, ืืื ืงืขืจ, ืืืคึผืืืื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืืฉืึทืื: ืืขืืขืจ ืืืขืจืกืืข ืืื ืืืื ืืืืืขื ืข ืืืืคึผ ืกืขืจืืืขืจ ืืื ืืื ืึท ืงืืืื ืืึทืกืข. ืคืื ืงืืจืก, ืืึธืก ืืืื ืื ืืืืื ืืจืขืกืขืจืข ืืืื ืงืึธืก.
ืื ืจ ืืื ื ืืขื ืืืข ื ืืข ื ืืขืื ื ืฐืขื ืึทืกืขืืืึทืืื ื ืึทืืข ื ืืืืืง ืืืขืจืกืืขืก ืืื ืืืื ืืืื. ืื ืงืึทืืคึผืืืื ืกืืึทืืืงืก ืคืื ืึทืืข ืืืขืจืกืืขืก ืคืื ืืขื ืคึผืืึทืฅ ืืขื ืขื ืืืื ืืื ืึท ืงืึทื ืืืื ืขืจ ืืื NGINX, ืืื ืคืึทืจืงืขืจ ืฆื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืืคึผืืืืืึทื ื ืงืืื ืืืจื NGINX Ingress. ื ืคึผืฉืื ืกืืจืืงืืืจ - ืึท ืกืืืืืืึทืก ืึทืคึผืืึทืงืืืฉืึทื - ืึทืืึทืื ืืืจ ืฆื ืืืืื ืืืึธื ืืืคึผืืืืืึทื ื (ืืืคึผืขื ืืื ื ืืืืฃ ืื ืืึทืกืข) ื ืืฆื Kubernetes ืืื.
ืฆื ืืืื ืืขืจ ืืขื ืื, ืืืจ ืืขื ืขื ืงืึทืืขืงืืื ื ืฆืืืื ืืืืืขืจ: ืืืื ืขืจ ืคึฟืึทืจ ืื ืคึผืจืึธืืืงืฆืืข ืงืจืืึทื, ืื ืจืืข ืืื ืึทื ื ืึธื ืืืื ืขืจ ืคึฟืึทืจ ืื ืืขืื ืงืจืืึทื. ืื ื ืึธื ืืืื ืืื ืืขื ืืฆื (ืืึทื ืืฉื) ืืืืื ืืืืฃ ืื ืืขืื ืงืจืืึทื ืฆืืืึทืืขื ืืื ืื ืืืืคึผื ืืื ืึผืืื ืื ืืืขืจืกืืข ืคืื โโืื ืคึผืืึทืฅ ืคึฟืื ืื ืึธืคึผืฉืึทืฆืื ื ืืืขืจืืขืื, ืืื ืจืืืื ื ืฆืืืืฉื ืืื ืืื ืืืจืืืขืงืึธืื ืืื ืื ืืจืขืกืก ืจืขืกืืจืกื.
ืืืขืจืฃ ืืืก ืืื ืงืืึธืื ืืื ืึทืจืืึทืคืึทืงืฅ
ืืื ืฉืืื ืืขืจืืื ื, ืืื ืกืืจ ืฆื ืืืฉืขื ืขืจืืื ืคึผืืึทืฅ ืกืืึทืืืงืก ืคึฟืึทืจ ืึท ืกืคึผืขืฆืืคืืฉ ืืืขืจืกืืข ืคืื โโืื ืืึทืงืืืืขื ืืืืฉืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืขื ืืืจื ืืึทืฉืืืืขื ืฆื ืื ืฆืื ืขืืขื ืจืืคึผืึทืืึทืืึธืจื ืงืืืืื. ืืืจ ืงืขื ืืืื ืืึธื ืืึธืก ืืืจื ืงืืึธืื ืื ื ืื ืจืืคึผืึทืืึทืืึธืจื ืืขืืขืจ ืืึธื ืืืจ ืืืืขื, ืกืขืืขืงืืืจื ืื ืฆืื ืขืืขื ืืึทืืก ืคืื ืึท ืจืฉืืื. ืึธืืขืจ, ืืึธืก ืืื ืึท ืืึทื ืฅ ืืืื-ืืื ืืขื ืกืืืืข ืึธืคึผืขืจืึทืฆืืข ืืื, ืืขืจืฆื, ืจืืงืืืืืขืจื ืฉืจืืืื ื ืื-ื ืื-ื ืืืืืืึทื ืื ืกืืจืึทืงืฉืึทื ื ... ืื ืื ืืขืจ ืขืจื ืกื ืืืกืึธืจื ืืื ืึทื ืืื ืืขื ืฆืืืึทื ื ืขืก ืืื ืงืืื ืืืขื ืฆื ืงืึทืฉ ืขืคึผืขืก ืืขืฉืึทืก ืคึฟืึทืจืืึทืืืื ื.
ืืึธ ืื ืืืึธืจืฃ ื ืืฆื ืืื ืงืืื ืฆื ืืื ืืืขืจ ืืืืฃ, ืืืคึผืืึทืืขื ืื ื ืงืืื ืงืึทืืฉืื ื ืืื ืึทืืึทืืื ื ืืืจ ืฆื ื ืืฆื fetch
ืืืื ื ืืืืืง. ืืื ืึทืืืฉืึทื, ืืืขื ืึทืืื ื ืืึทืื ืคืื ืื ืจืืคึผืึทืืึทืืึธืจื, ืืืจ ืงืขื ืขื ืืืืกืงืืืึทืื ืืืืื ืื ื ืืืืืง ืืืืจืขืงืืขืจืื (ืืื ืืื ืืืขืจ ืคืึทื, ืืึธืก ืืื ืืขืจ ืืืขืืืืืึทืืขืจ docs
), ืืืึธืก ืืืขื ืืืืืืืืง ืจืขืืืฆืืจื ืื ืกืืืข ืคืื โโืฆืืืขืืขืื ืืึทืื.
ืืื ื Jekyll ืืื ืึท ืืขืฆืืึทื ืืืืืื ื ืคึฟืึทืจ ืงืึทืืคึผืืืืื ื ืกืืึทืืืง ืืึทืื ืืื ืืื ื ืื ืืืจืฃ ืืื ืื ืืขืฆื ืืืื, ืขืก ืืืึธืื ืืืื ืืึทืืืฉืืงืึทื ืฆื ืฆืื ืืืคื ืขืืขื ืืื
ืืืจ ืฉืจืืึทืื werf.yaml
ืึทืืื, ืืืจ ืืึทืฉืืึธืกื ืึทื ืืืจ ืืืขืื ืฆืื ืืืคื ืขืืขื ืืขืืขืจ ืืืขืจืกืืข ืืื ืึท ืืึทืืื ืืขืจ ืืืึธืจืฃ ืึทืจืืืคืึทืงื. ืึธืืขืจ ืืืจ ืืืจ ืืึธื ื ืื ืืืืกื ืืื ืคืืืข ืคืื โโืื ืึทืจืืึทืคืึทืงืฅ ืขืก ืืืขื ืืืื ืืขืฉืึทืก ืคึฟืึทืจืืึทืืืื ื, ืึทืืื ืืืจ ืงืขื ืขื ื ืืฉื ืฉืจืืึทืื ืึท ืคืึทืจืคืขืกืืืงื ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื (ืฉืืจืขื ื ืืขืจืขืื, ืืืจ ื ืึธื ืงืขื ืขื, ืึธืืขืจ ืขืก ืืืขื ื ืืฉื ืืืื ืืึธืจ ืขืคืขืงืืืื).
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
- ืืืขืจืฃ ืืขืืืื ื ืืืขืจืกืืข ืฆื ืืืื ืืขืืืืื ืืืจื ืคืขืืืงืืึทื ืืืืฃ ืืขื ืคึผืืึทืฅ (ืขืก ืืื ื ืื ืฉืืขื ืืืง ื ืืืืืง ืฆื ืืืืึทืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืจื ืื ืืขืืกืื ืืขืืืื ื ื ืืืขืจ). ืืืึทืฉืคึผืื: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") }}
ืื ืืึทืฉืจืืึทืืื ื ืคืื ืื ืึทืจืืึทืคืึทืงื ืคึฟืึทืจ ืงืึทืืคึผืืืืื ื ืื ืกืืึทืืืง ืืืขืจืกืืข ืคืื โโโโืืขื ืคึผืืึทืฅ ืืื ืืืื ืื ืืขืืืข ืคึฟืึทืจ ืึทืืข ืงืึทืกืขืก ืืืึธืก ืืืจ ืืึทืจืคึฟื (ืึทืจืืึทื ืืขืจืขืื ื ืืืฉืขื ืขืจืืืืื ื ืื ืืืึธืจืฆื ืืืขืจืกืืข, ืืื ืืขืืื ื ืืื ืื ืืืขืจืกืืข ืคึฟืึทืจ ืื ืืขืื ืงืจืืึทื). ืืขืจืืืขืจ, ืืืจ ืืืขืื ืืึทื ืขืก ืืื ืึท ืืึทืืื ืืขืจ ืืืึธืง ื ืืฆื ืื ืคึฟืื ืงืฆืืข define
- ืคึฟืึทืจ ืกืึทืืกืึทืงืืืึทื ื ืจืืืืก ื ืืฆื include
. ืืืจ ืืืขืื ืคืึธืจื ืื ืคืืืืขื ืืข ืึทืจืืืืขื ืื ืฆื ืื ืืืกืืขืจ:
-
Version
- ืืืฉืขื ืขืจืืืืึทื ืืืขืจืกืืข (ืงืืืืื ื ืึธืืขื); -
Channel
- ืื ื ืึธืืขื ืคืื ืื ืืขืจืืืึทื ืืืงื ืงืึทื ืึทื ืคึฟืึทืจ ืืืึธืก ืื ืึทืจืืึทืคืึทืงื ืืื ืืืฉืขื ืขืจืืืืึทื; -
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 }}
. ืึธืืขืจ ืืืจ ืืึทืจืคึฟื ืฆื ืคึฟืึทืจืฉืืืื ืึทื ืืืขื ืืืคึผืึธืจืืื ื ืคืื ืึทืจืืึทืคืึทืงืฅ, ืืืจ ืืึทืจืคึฟื ืฆื ืึธืคึผืฉืืงื ืฆื ืื ืืขืืืข ื ืขืืขื.
ืืืขื ืืืกืงืจืืืืื ื ืึท ืึทืจืืึทืคืึทืงื, ืื ืคืืืืขื ืืข ืืืึธืจืฃ ืฉืืจืื ืืื ืืขื ืืฆื: build_dir
ืึทืืึทืื ืืืจ ืฆื ืจืึทืืขืืืขื ืื Jekyll ืงืึทืฉ ืฆืืืืฉื ืจืขืจื - ืืื ืืข ืืืืคื, ืืืึธืก ืืืืืืืืง ืกืคึผืืื ืึทืจืืืฃ ืจืืึทืกืขืืืึทืืื ื.
ืืืจ ืงืขื ืืืื ืืึธืื ืืืืขืจืงื ืื ื ืืฆื ืคืื ืืขืจ ืืขืงืข releases.yml
ืืื ืึท YAML ืืขืงืข ืืื ืืขืืืื ื ืืึทืื ืืขืืขืื ืคึฟืื
ืืึธืก ืืื ืืืคึผืืึทืืขื ืึทื ืืื ืื ืงืึทื ืืืฉืึทื ืึทื ืืืกืืึธืืื ื if
ืืืื ืืขืืคึผืืึทืืขืก ืืื ืืืืืื ื {{ $Root.Files.Get "releases.yml" | sha256sum }}
ืืื ืืื ืข .Channel
ืืื ืืืืื ืฆื root
) ืืขืงืข ืืึทืฉ releases.yml
ืึทืคืขืงืฅ ืื ืืกืืืข ืคืื โโืื ืืื ืฆืข ืืื ืข, ืืืืึทื ืขืก ืืื ืึท ืืืื ืคืื ืื ื ืึธืืขื ืคืื ืื ืึทื ืกืืืืข ืึทืจืืขื (ืคึผืึทืจืึทืืขืืขืจ 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 -}}
ืืืืึทื ืื ืฉืืืืฃ ืืืขื ืืืฉืขื ืขืจืืื ืขืืืขืืข ืึทืจืืึทืคืึทืงืฅ (ืืืจ ืืึธืคึฟื ืึทืืื), ืขืก ืืื ื ืืืืืง ืฆื ื ืขืืขื ืืื ืืฉืืื ืื ืกืขืคึผืึทืจืึทืืึธืจ ืฆืืืืฉื ืืื - ืื ืกืืงืืืึทื ืก ---
(ืคึฟืึทืจ ืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืกืื ืืึทืงืก, ืืขื
ืกืืืืืึทืจืื, ืึธืืขืจ ืึธื ืึท ืฉืืืืฃ, ืืืจ ืจืืคื ืื ืึทืจืืึทืคืึทืงื ืืืกืืขืจ ืคึฟืึทืจ "ืกืคึผืขืฆืืขื ืงืึทืกืขืก": ืคึฟืึทืจ ืื ืืืึธืจืฆื ืืืขืจืกืืข, ืืื ืืขืืื ื ืืื ืื ืืืขืจืกืืข ืคืื โโโโืื ืึธืคึผืฉืึทืฆืื ื ืืืขืจืืขืื:
{{ 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 -}}
ืื ื ืึธื ืืืื, ืืืึธืก, ืฆืืืึทืืขื ืืื ืื ืืืืคึผื, ืืื ืืึธื ืืฉื ืืืืฃ ืื ืืขืื ืงืจืืึทื, ืึผืืื ืืืืื ืฆืืืื ืืืขืจืกืืขืก ืคืื ืืขื ืคึผืืึทืฅ: ืื ืืืขืจืกืืข ืคืื โโโโืื ืึธืคึผืฉืึทืฆืื ื ืืืขืจืืขืื ืืื ืื ืืืึธืจืฆื ืืืขืจืกืืข ืคืื โโโโืื ืคึผืืึทืฅ (ืขืก ืืขื ืขื ืืขื ืขืจืึทื ืึทืกืขืฅ ืืื, ืืืื ืืืจ ืืขืืขื ืงืขื , ืืขืืืื ื ืืึทืื). ืืืื, ืื ื ืึธื ืืืื ืืืขื ืืืื ืึทื ืืขืจืฉ ืคืื ืื ืืืืคึผื ืืืืื ืืื ืื ืึทืจืืึทื ืคืืจ ืึธืคึผืืืืืื ื (ืืื, ืคืื ืงืืจืก, ืืื ืื ื ืึธืืขื):
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 }}
ืืื ืื ืืขืืืืื ืืืืื, ืื ืึทืจืืึทืคืึทืงื ืคึฟืึทืจ ืื ืึธืคึผืฉืึทืฆืื ื ืืืขืจืืขืื ืืืขื ืืืื ืืืฉืขื ืขืจืืืืึทื ืืืืื ืืืขื ืื ืืึทืฉืืขืืืง ืกืืืืืืข ืืืึทืืขืืืืืง ืืื ืืืืคื REVIEW_SHA
. ืขืก ืืืึธืื ืืืื ืืขืืืขื ืฆื ื ืืฉื ืืืฉืขื ืขืจืืื ืื werf-dev ืืืื ืืืื ืขืก ืืื ืงืืื ืกืืืืืืข ืืืึทืืขืืืืืง REVIEW_SHA
, ืึธืืขืจ ืืื ืกืืจ ืฆื
ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืืจืืื! ืืึธืืืจ ืืืื ืฆื ืกื / ืกื ืืื ืืืืืืืง ื ืืึทื ืกืื.
ืจืขืจื - ืืื ืืข ืืื GitLab CI ืืื ืคึฟืขืึดืงืืืื ืคืื ืืื ืึทืืืฉ ืืืืขื
ืืืขื ืืืจ ืืืืคื ืื ืืืืขื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืืขืื ืื ืื ืืืืืจืึทื ืืขื ืึทื ืืืขืจืืึทืืึทืื ืืขื ืืฆื ืืื werf.yaml
. ืืึธืก ืืื ื ืืฉื ืึทืคึผืืืื ืฆื ืื REVIEW_SHA ืืืึทืืขืืืืืง, ืืืึธืก ืืืจ ืืืขืื ืฉืืขืื ืืืขื ืจืืคื ืจืขืจื - ืืื ืืข ืคึฟืื ืื GitHub ืงืจืืง.
ืืืจ ืืืขืื ืืืฉืขื ืขืจืืื ืื ื ืืืืืง ืคืื ืืจืืืกื ืืืง ืืึทืื ืืื ืึท ืืึทืฉ ืฉืจืืคื generate_artifacts
, ืืืึธืก ืืืขื ืืืฉืขื ืขืจืืื ืฆืืืื GitLab ืจืขืจื - ืืื ืืข ืึทืจืืึทืคืึทืงืฅ:
- ืืขืงืข
releases.yml
ืืื ืืขืืืื ื ืืึทืื, - ืืขืงืข
common_envs.sh
, ืืื ืื ืกืืืืืืข ืืืขืจืืึทืืึทืื ืฆื ืืืื ืืงืกืคึผืึธืจืืึทื.
ืืขืงืข ืืื ืืึทืื generate_artifacts
ืืืจ ืืืขื ืืขืคึฟืื ืขื ืืื ืืื ืืืขืจ common_envs.sh
ืืื ืืืืืืืง ืฆื ืืื ืื, ืืืืึทื ืื ืึทืจืืขื ืคืื ืืืึธืจืฃ ืืขืคึผืขื ืืก ืืืืฃ ืืื. ื ืืืืฉืคึผืื ืคืื ืืืึทื ืืื ืืึทืื:
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.yaml
ืืขืคึผืขื ืืก ืืืืฃ ืคืื ืืจืืืกื ืืืง ืืึทืื (ืืืฉื, ืึท ืจืฉืืื ืคืื ืงืจืึทื ื ืืืขืจืกืืขืก, ืืื ืืื ืืื ืืืขืจ ืคืึทื), ืืขืืึธืื ืืขืจ ืืึทืฅ ืืื ืืืึทืืืขืก ืคืื ืึทืืึท ืืึทืื ืืึธื ืืืื ืจืขืงืึธืจืืขื ืืื ืื ืจืขืจื - ืืื ืืข. ืืึธืก ืืื ืกืคึผืขืฆืืขื ืืืืืืืง ืืืื ืคืื ืืจืืืกื ืืืง ืคึผืึทืจืึทืืขืืขืจืก ืืืืฉื ืืึทื ืฅ ืึธืคื.
ืืืจ ืืืขืื ืืึทืงืืืขื ืืื ืจืขืงืึธืจื ืคืื ืืจืืืกื ืืืง ืืึทืื ืืื ืืขืจ ืขืจืฉืืขืจ ืืื ืข ืคืื โโืื ืจืขืจื - ืืื ืืข ืืื GitLab (Prebuild) ืืื ืฉืืงื ืืื ืืืืึทืืขืจ ืืื ืื ืคืึธืจืขื GitLab CI ืึทืจืืืคืึทืงื. ืืึธืก ืืืขื ืืึธืื ืืืจ ืฆื ืืืืคื ืืื ืจืืกืืึทืจื ืจืขืจื - ืืื ืืข ืืืฉืึธืืก (ืืืืขื, ืฆืขืืืืงืืขื, ืงืืื ืึทืคึผ) ืืื ืืขืจ ืืขืืืืงืขืจ ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื werf.yaml
.
ืืื ืืึทืื ืคืื ืืขืจ ืืื ืข Prebuild ืืขืงืข .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 ืจืขืจื - ืืื ืืข ืกืืึทืืขืก: ืืืืขื ืืื ืฆืขืืืืงืืขื. ืืืจ ืงืึทืืขืจ ืื ืจืขืจื - ืืื ืืข ืืื ื ืืฆื ืืืงืก ืคืื ืื werf GitHub ืจืืคึผืึทืืึทืืึธืจื (ื"ื ืืืขื ืขืก ืืขื ืขื ืขื ืืขืจืื ืืขื ืืื ืื GitHub ืจืืคึผืึทืืึทืืึธืจื). ืืึทืื ืคึฟืึทืจ ืืื ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืื ืื GitLab ืคึผืจืืืขืงื ืคึผืจืึธืคึผืขืจืืืขืก ืืื ืืขืจ ืึธืคึผืืืืืื ื ืกื / ืกื ืกืขืืืื ืืก -> ืจืขืจื - ืืื ืืข ืืจืืืขืจืืืื ืืขืจื ืึธื ืฉืึทืคึฟื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืืขืืืึธืึธืง ืืื 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 ืืืขื ืืืืื ืฆืืืื ืึทืจืืึทืคืึทืงืฅ ืคืื ืืขืจ ืืื ืข ืฆื ืื ืืืืขื ืืื ืข Prebuild, ืึทืืื ืืืจ ืึทืจืืืกืคืืจื ืืืขืจืืึทืืึทืื ืืื ืฆืืืขืืจืืื ืึทืจืืึทื ืฉืจืืึทื ืืึทืื ื ืืฆื ืื ืืืืขื 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_KUBE_CONTEXT
), ืืื ืืึทืฉืืขืืืงื ืื ืฉืืืืฃ ืกืืืืืืข ืืืขืจืืึทืืึทืื (environment.name
ะธ environment.url
), ืืืึธืก ืืขื ืขื ืืขืืึธืื ืืขื ืืฆื ืืื ืืขืื ืืฉืึทืจื ืืขืืคึผืืึทืืขืก. ืืืจ ืืืขืื ื ืืฉื ืฆืืฉืืขืื ืื ืืื ืืึทืื ืคืื ืื ืืขืืคึผืืึทืืขืก ืืืืึทื ... ืขืก ืืื ืืึธืจื ืืฉื ืืฉืืงืึทืืืข ืืึธืจื ืคึฟืึทืจ ืื ืืขืืข ืืื ืงืฉืื, ืึธืืขืจ ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืืื ืืื
ืืขืฆื ืคืึทืจืืื ืื
ืืื ื ืืืึธืจืฃ ืืืขืจืกืืขืก ืืขื ืขื ืจืขืืขืึทืกืขื ืืึทื ืฅ ืึธืคื, ื ืืึทืข ืืืืืขืจ ืืืขื ืืืื ืืขืืืื ืึธืคื, ืืื ืื ืืึธืงืงืขืจ ืจืขืืืกืืจื ืืืขื ืงืขืกืืืืขืจ ืืืึทืงืกื. ืืขืจืืืขืจ, ืขืก ืืื ืืืคึผืขืจืึทืืืื ืฆื ืงืึทื ืคืืืืขืจ ืึธืืึทืืึทืืืง ืืืื ืงืืื ืึทืคึผ ืืืืืจื ืืืืฃ ืคึผืึทืืึทืกืื. ืขืก ืืื ืืืืขืจ ืืจืื ื ืฆื ืืึธื.
ืฆื ืื ืกืืจืืืขื ื ืืืจ ืืืขื ืืึทืจืคึฟื:
- ืืืื ืึท ืจืืื ืืงืื ื ืฉืจืื ืฆื
.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
ืืืจ ืืึธืื ืฉืืื ืืขืืขื ืึผืืขื ืึทืืข ืืขื ืึท ืืืกื ืืขืืขืจ - ื ืึธืจ ืฆื ืจืืื ืขืก ืืืจ ืืึทืจืคึฟื ืฆื ืขืจืฉืืขืจ ืงืืึธืฅ ืืื ืฆื ืื ืืึธืงืงืขืจ ืจืขืืืกืืจื ืืื ืึท ืกืืืขื ืืืึธืก ืืื ืื ืจืขืื ืฆื ืืืกืืขืงื ืืืืืขืจ ืืื ืื ืืึธืงืขืจ ืจืขืืืกืืจื (ืื ืืืืืึธืืึทืืืฉ ืืจืืืก GitLab CI ืึทืจืืขื ืกืืืขื ืืื ื ืืฉื ืืึธืื ืึทืืึท ืจืขืื). ืืขืจ ืกืืืขื ืืืื ืืืื ืืืฉืืคื ืืื GitLab ืืื ืฉืืืึทืื ืืื ืืืื ืืืขืจื ืืืื ืืืื ืกืคึผืขืกืืคืืขื ืืื ืื ืกืืืืืืข ืืืึทืืขืืืืืง WERF_IMAGES_CLEANUP_PASSWORD
ืื ืคึผืจืืืขืงื (ืกื / ืกื ืกืขืืืื ืืก -> ืืืขืจืืึทืืึทืื).
ืึทืืื ื ืึท ืจืืื ืืงืื ื ืึทืจืืขื ืืื ืื ืคืืจืืื ืื ืคึผืืึทื ืืื ืืืจืืืขืงืึธืื ืืื ืกื / ืกื ->
ืืืฉืืืืืข ืฆืืืื.
ืึทื ืก ืขืก: ืึท ืคึผืจืืืขืงื ืืื ืื ืืึธืงืขืจ ืจืขืืืกืืจื ืืืขื ื ืื ืืขืจ ืงืขืกืืืืขืจ ืืืึทืงืกื ืคึฟืื ืึทื ืืืื ืืืืืขืจ.
ืืื ืื ืกืืฃ ืคืื ืื ืคึผืจืึทืงืืืฉ ืืืื, ืืึธืื ืืืจ ืืขืจืืึธื ืขื ืืืจ ืึทื ืคืื ืืืกืืื ืืก ืคืื ืืขื ืึทืจืืืงื ืืขื ืขื ืื ืืืฆื ืืื
ืืึทืืืขืก
- ืืืจ ืืืงืืืขื ืึท ืืึทืืืฉืืงืึทื ืคึฟืึทืจืืึทืืืื ื ืกืืจืืงืืืจ: ืืืื ืึทืจืืึทืคืึทืงื ืคึผืขืจ ืืืขืจืกืืข.
- ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืื ืืืืขืจืกืึทื ืืื ืืื ื ืืฉื ืืึทืจืคื ืืึทื ืืึทื ืขื ืืขืจืื ืืขื ืืืขื ื ืืึท ืืืขืจืกืืขืก ืคืื ืืืึธืจืฃ ืืขื ืขื ืจืขืืขืึทืกืขื: ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืืฃ ืืขืจ ืืืขืืืืืื ืืื ืืืืืึธืืึทืืืฉ ืืขืจืืืึทื ืืืงื.
- ืฆืืืื ืืืืืขืจ ืืขื ืขื ืคืืจืืืืื ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืงืึทื ืืืจื.
- ืขืก ืึทืจืืขื ืืขืฉืืืื ื, ืืืืึทื ืงืึทืืฉืื ื ืืื ืืขื ืืฆื ืืื ืคืื ืืื ืืขืืืขื - ืืืขื ืึท ื ืืึทืข ืืืขืจืกืืข ืคืื โโโโืืืขืจ ืืื ืืืคืจืืื ืึธืืขืจ ืึท GitHub ืืึธืง ืืื ืืขืจืืคึฟื ืคึฟืึทืจ ืึท ืจืขืฆืขื ืืืข ืืืขืจืืขืื, ืืืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืึทืจืืึทืคืึทืงื ืืื ืื ืืฉืืื ืืืฉื ืืืขืจืกืืข ืืื ืจืืืืื.
- ื ืื ืืึทืจืคึฟื ืฆื ืืจืึทืืื ืืืขืื ืืืกืืขืงื ืึทื ืืืื ืืืืืขืจ: ืจืืื ืืงืื ื ืืืื ืืืขืจืฃ ืคึผืึทืืึทืกืื ืืืขื ืืึทืืื ืื ืืึธืงืงืขืจ ืจืขืืืกืืจื ืืื ืกืืจ.
ืคืืื ืืื ืื
- ื ืืฆื werf ืึทืืึทืื ืื ืคึฟืึทืจืืึทืืืื ื ืฆื ืึทืจืืขืื ืืขืฉืืืื ื ืจืขืื ืฆื ืงืึทืืฉืื ื ืคืื ืืืืืข ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืืื ืงืึทืืฉืื ื ืืืขื ืืจืืขืื ืืื ืคืื ืืจืืืกื ืืืง ืจืืคึผืึทืืึทืืึธืจืื.
- ืืจืืขืื ืืื ืคืื ืืจืืืกื ืืืง Git ืจืืคึผืึทืืึทืืึธืจืื ืืืืืึทื ืืืฅ ืื ื ืืื ืฆื ืงืืึธืื ืื ืืื ืฆืข ืจืืคึผืึทืืึทืืึธืจื ืืขืืขืจ ืืึธื ืึธืืขืจ ืจืืื ืืืขื ื ืื ืจืึธื ืืื ืืจืืงื ืึทืคึผืืึทืืึทืืืืฉืึทื ืืึธืืืง. werf ื ืืฆื ืึท ืงืึทืฉ ืืื ืืื ืื ืงืืึธืื ืื ื ืืืืื ืึทืืึธื, ืืื ืืขืืึธืื ื ืืฆื
fetch
ืืื ื ืึธืจ ืืืขื ื ืืืืืง. - ืคืืืืงืืื ืฆื ื ืืฆื Go ืืขืืคึผืืึทืืขืก ืืื ืื ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข
werf.yaml
ืึทืืึทืื ืืืจ ืฆื ืืึทืฉืจืืึทืื ืึท ืคึฟืึทืจืืึทืืืื ื ืืืขืืขื ืก ืจืขืืืืืึทื ืืขืคึผืขื ืืก ืืืืฃ ืคืื ืืจืืืกื ืืืง ืืึทืื. - ื ืืฆื ืึธื ืงืืึทืคึผื ืืื ืืืึธืจืฃ ืืืืืืืืง ืกืคึผืืื ืื ืืึทืืืื ื ืคืื ืึทืจืืึทืคืึทืงืฅ - ืจืขืื ืฆื ืืขืจ ืงืึทืฉ, ืืืึธืก ืืื ืคึผืจืึธืกื ืคึฟืึทืจ ืึทืืข ืคึผืืืคึผืืืื ื.
- werf ืืืื ืขืก ืืจืื ื ืฆื ืงืึทื ืคืืืืขืจ ืงืืื ืึทืคึผ, ืืืึธืก ืืื ืกืคึผืขืฆืืขื ืืืืืืืง ืืืขื ืืื ืึทืืืง ืื ืื.
ืคึผืก
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืคืืืกื ืืืง ืงืึทืืึทื ืื ืืฉืขืช ืืืืืืืขืจืื ื ืึท ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื ืืขืืืื ื ืฆื Kubernetes "; - ยซ
ืืืืขื ืืื ืฆืขืืืืงืืขื ืืืงืจืึธ ืืึทืืื ืื ืืก ืคืื ืืขืจ ืืขืืืืงืขืจ ืืืคึผ ืืื werf ืืื GitLab CI "; - ยซ
ื ืืฆื ืืืึธืจืฃ ืฆื ืจืึธืืื ืืืืก ืงืึธืืคึผืืขืงืก ืืขืื ืืฉืึทืจืฅ "; - ยซ
ืื ืืจืึธืืืืกืื ื werf 1.0 ืกืืึทืืื: ืืืึธืก ืืื GitOps ืืึธืื ืฆื ืืึธื ืืื ืืื, ืกืืึทืืืก ืืื ืคึผืืึทื ื '.
ืืงืืจ: www.habr.com