ΠΠ΅ΡΠ΅ ΡΠΌΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π·Π° Π½Π°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ GitOps ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π²Π΅Π΄Π½ΡΠΆ
ΠΠ»Π΅Π·ΡΠ΅ Π² Π½ΡΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠ°ΠΉΡΠ°: Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠΎ ΠΌΠ΅Π½Ρ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ, ΡΡΡΠ°Π½ΠΈΡΠΈ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²Π΅ΡΡΠΈΠΈ ΠΈ Ρ.Π½. - Π½ΠΈΠ΅ Π½ΡΠΌΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π°, Π½Π΅ΠΊΠ° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌ Π²ΡΡΡ
Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎΡΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ Π²ΡΡΡ
Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ CI/CD ΠΏΡΠΎΡΠ΅ΡΠΈ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΉΡΡΡ
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° werf ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π·Π°Π΅Π΄Π½ΠΎ Ρ Π½Π΅ΠΉΠ½ΠΈΡ ΠΊΠΎΠ΄. Π’ΠΎΠ²Π° Π½Π°Π»Π°Π³Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ° ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, Π½ΠΎ ΠΊΠ°ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅, ΡΠ΅:
- ΠΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° werf Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΡΠΊΠ°Ρ Π±Π΅Π· Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° werf;
- ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅: Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΡΠΊΠ°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ Π½Π° Π΄Π΅Π½;
- ΠΡΠΈΡΠΊΠΈ ΡΡΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΡ Ρ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΡΠ° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡΠΎ Π΄ΠΎΡΠ°Π΄Π½ΠΈ;
- ΠΡΠΎΠ΅ΠΊΡΡΡ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄
ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ , Ρ 5 ΠΊΠ°Π½Π°Π»Π° Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ. ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ ΠΏΡΠ΅Π· ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ Π² ΡΠ΅Π΄Π° Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ°: ΠΎΡ Π°Π»ΡΠ° Π΄ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π°; - Π‘Π°ΠΉΡΡΡ ΠΈΠΌΠ° ΡΡΡΠΊΠΎΠ΅Π·ΠΈΡΠ½Π° Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΡΠΎ βΠΆΠΈΠ²Π΅Π΅ ΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°β (Ρ.Π΅. ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°) ΡΡΠΏΠΎΡΠ΅Π΄Π½ΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° (Ρ.Π΅. Π°Π½Π³Π»ΠΎΠ΅Π·ΠΈΡΠ½Π°) Π²Π΅ΡΡΠΈΡ.
ΠΠ° Π΄Π° ΡΠΊΡΠΈΠ΅ΠΌ ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ "Π²ΡΡΡΠ΅ΡΠ½Π° ΠΊΡΡ
Π½Ρ" ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΉΠΊΠΈ ΠΌΡ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ "ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ", Π½Π°ΠΏΡΠ°Π²ΠΈΡ
ΠΌΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° werf -
ΠΠ°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π² ΠΌΠ΅Π½ΡΡΠΎ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ
ΠΠ±ΡΠΎ ΡΠ°ΠΉΡΡΡ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° ΡΡΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ:
- root (ΠΎΡΠ²Π°ΡΡ ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅),
- Π·Π° Π²ΡΠ΅ΠΊΠΈ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΊΠ°Π½Π°Π» Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ° Π²Π΅ΡΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
werf.io/v1.0-Π±Π΅ΡΠ° ).
ΠΠ° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ°, Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° /docs
werf Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΡΡ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° (jekyll build
), ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ Git ΡΠ°Π³Π° Π½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ.
ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ, ΡΠ΅:
- ΡΠ°ΠΌΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (werf) ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅;
- CI/CD ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π²ΡΡΡ Ρ GitLab CI;
- ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ°Π±ΠΎΡΠΈ Π² Kubernetes.
Π·Π°Π΄Π°ΡΠΈ
Π‘Π΅Π³Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΡΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ:
- Π‘Π»Π΅Π΄ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° werf Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
- ΠΠ° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΡΠ°.
ΠΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ Git ΡΠ°Π³ΠΎΠ²Π΅, Π½ΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΏΠΈΡΡΠΊΡΡ Ρ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅, ΠΊΡΠ΄Π΅ΡΠΎ Π²Π΅ΡΡΠΈΡΡΠ° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΎ Π½Π°Π½ΠΎΠ²ΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡΠ°ΡΠΈΠ²ΠΎ.
- ΠΠ°Π±ΠΎΡΡΡ ΠΎΡ ΠΊΠ°Π½Π°Π»ΠΈ Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. Π Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΡΠΌΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅, ΠΏΠΎ-ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΎΡ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ°Π½Π΅Π½ Π΄ΠΎΡΡΡΠΏ 1.1, Π½ΠΎ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΡ - Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠ±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠΊΠ°?
ΠΠΊΠ°Π·Π²Π° ΡΠ΅, ΡΠ΅ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ.
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
ΠΠ·Π±ΠΎΡ Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π²ΡΡΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π²Π΅ΡΡΠΈΡ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ Π² Kubernetes. Π’Π°Π·ΠΈ ΠΎΠΏΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°ΡΡΠ΅ Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf. Π ΡΠΎΠ²Π° ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°: Π²ΡΡΠΊΠ° Π²Π΅ΡΡΠΈΡ ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ HTTP ΡΡΡΠ²ΡΡ ΠΈ Ρ ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ ΠΈ Π΄ΠΎ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π·Π° ΡΠ΅ΡΡΡΡΠΈ.
Π’ΡΡΠ³Π½Π°Ρ ΠΌΠ΅ ΠΏΠΎ ΠΏΡΡΡ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΠΈ Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠ°ΠΉΡΠ° Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ NGINX, Π° ΡΡΠ°ΡΠΈΠΊΡΡ ΠΊΡΠΌ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ ΠΈΠ΄Π²Π° ΠΏΡΠ΅Π· NGINX Ingress. ΠΠ΄Π½Π° ΠΏΡΠΎΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° - ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ - ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ) Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°ΠΌΠΈΡ Kubernetes.
ΠΠ° Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎ-ΡΠΎΡΠ½ΠΈ, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: Π΅Π΄Π½ΠΎΡΠΎ Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ», Π²ΡΠΎΡΠΎΡΠΎ Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π·Π° ΡΠΈΠΊΡΠ»Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° (ΡΡΠ°ΡΡΠΈΡΠ°) ΡΠ°ΠΌΠΎ Π½Π° dev loop Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΈ ΡΡΠ΄ΡΡΠΆΠ° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΡΠ° ΠΎΡ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° Π½Π° ΠΊΠΎΠΌΠΈΡΠ°, Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° Ingress.
werf ΡΡΠ΅ΡΡ git ΠΊΠ»ΠΎΠ½ΠΈΠ½Π³ ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ΅, Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° ΡΠ°ΠΉΡΠ° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΡΠΌ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ Π΅ΡΠΈΠΊΠ΅Ρ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅, ΠΊΠ°ΡΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΡΠ°Π³ΠΎΠ²Π΅ ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ°. Π’ΠΎΠ²Π° ΠΎΠ±Π°ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ... ΠΡΡΠ³ ΡΠ΅ΡΠΈΠΎΠ·Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π΅, ΡΠ΅ ΠΏΡΠΈ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½ΡΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΊΠ΅ΡΠΈΡΠ° Π½Π΅ΡΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°Π½Π΅ΡΠΎ.
Π’ΡΠΊ ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° 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 pipeline, Π° ΠΊΠ°ΠΊ ΡΠΎΡΠ½ΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ Π² werf.yaml
ΠΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°:
{{ $_ := set . "WerfVersions" (cat (env "CHANNELS") (env "RELEASES") | splitList " ") }}
{{ $Root := . }}
{{ $_ := set . "WerfRootVersion" (env "ROOT_VERSION") }}
{{ $_ := set . "WerfReviewCommit" (env "REVIEW_SHA") }}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ Π΅ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° root Π²Π΅ΡΡΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΡΡΠΈΡΡΠ° Π·Π° dev ΡΡ
Π΅ΠΌΠ°ΡΠ°). ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎ ΠΈΠ·Π²Π°Π΄ΠΈΠΌ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ Π±Π»ΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° 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 }}
. ΠΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ ΠΎΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΡΠ΅ Π½Π° ΡΡΡΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π°.
ΠΡΠΈ ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΈ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° werf, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ build_dir
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π°ΡΠ΅ ΠΊΠ΅ΡΠ° Π½Π° Jekyll ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Π»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»Π° releases.yml
Π΅ YAML ΡΠ°ΠΉΠ» Ρ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ, ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΈ ΠΎΡ
Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if
ΠΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈ {{ $Root.Files.Get "releases.yml" | sha256sum }}
Π² Π΅ΡΠ°ΠΏ .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 -}}
Π·Π°ΡΠΎΡΠΎ ΡΠΈΠΊΡΠ»ΡΡ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° (Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅ Π΄Π° Π΅ ΡΠ°ΠΊΠ°), ΡΡΡΠ±Π²Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ
- ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ---
(ΠΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π²ΠΈΠΆΡΠ΅
ΠΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½, Π½ΠΎ Π±Π΅Π· ΡΠΈΠΊΡΠ», Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° Π·Π° βΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈβ: Π·Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΡΡΠΈΡΡΠ° ΠΎΡ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄:
{{ 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
, Π½ΠΎ Π·Π° Π΄Π°
ΠΠΎΠ½ΡΠ°ΠΆΡΡ Π΅ Π³ΠΎΡΠΎΠ²! ΠΠ΅ΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ 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 pipeline: 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
. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ»ΡΡΠ°ΠΈ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°. Π‘ΠΏΠΎΡΠ΅Π΄ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ΅ ΠΏΡΡΠ½Π΅ΠΌ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ - Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΡΡΠΎΠΈΡΠ΅.
ΠΠ° Π΅ΡΠ°ΠΏΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π΅ Π·Π°Π΄Π°ΡΠΈ - ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΈ dev Π²Π΅ΡΠΈΠ³ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ 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 Ρ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° ΠΏΡΠ°Π²Π° Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π·Π° Π·Π°Π΄Π°ΡΠ° GitLab CI Π½ΡΠΌΠ° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠ°Π²Π°). Π’ΠΎΠΊΠ΅Π½ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π² GitLab ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° WERF_IMAGES_CLEANUP_PASSWORD
ΠΏΡΠΎΠ΅ΠΊΡ (ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° CI/CD -> ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ).
ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠ° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π² CI/CD ->
Π‘ΠΏΠΈΡΡΡΠΈ.
ΠΡΠΈΡΠΊΠΎ: ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π½Π°ΡΠ°ΡΡΠ²Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΡ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π ΠΊΡΠ°Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ Π½Π°ΠΏΠΎΠΌΠ½ΡΠΌ, ΡΠ΅ ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠΏΠΈΡΡΡΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π²
Π Π΅Π·ΡΠ»ΡΠ°Ρ
- ΠΠΌΠ°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅: Π΅Π΄ΠΈΠ½ Π°ΡΡΠ΅ΡΠ°ΠΊΡ Π½Π° Π²Π΅ΡΡΠΈΡ.
- Π‘Π³Π»ΠΎΠ±ΠΊΠ°ΡΠ° Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° ΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΡΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΡΠΊΠ°Ρ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf: Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΡΠ° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
- ΠΠ²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ° ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΡΠΈ.
- Π Π°Π±ΠΎΡΠΈ Π±ΡΡΠ·ΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ β ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΡΠ½Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° werf ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° ΠΊΡΠΊΠ° Π½Π° GitHub Π·Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ β ΡΠ°ΠΌΠΎ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΎΡΠ½ΠΎΠ²ΠΎ.
- ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΡΠ΅Π· ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π° werf ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker Π² ΡΠ΅Π΄.
ΠΠ°Π½Π½ΠΈ
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° werf ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ³Π»ΠΎΠ±ΠΊΠ°ΡΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±ΡΡΠ·ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊΡΠΎ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° ΡΠ³Π»ΠΎΠ±ΠΊΠ°, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π²ΡΠ½ΡΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
- Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ Π²ΡΠ½ΡΠ½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Git Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»Π΅Π»ΠΎΡΠΎ Ρ ΡΠ»ΠΎΠΆΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. werf ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ΅ΡΠ° ΠΈ ΠΏΡΠ°Π²ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°
fetch
ΠΈ ΡΠΎ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½ΡΠΆΠ΄Π°. - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Go-templates Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅
werf.yaml
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ±ΠΎΡΠΊΠ°, ΡΠΈΠΉΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° mount Π² werf Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ - ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΠ±Ρ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ.
- werf ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²ΡΡΠ½ΠΎ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ.
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes Β»; - Β«
ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ Ρ werf ΠΈ GitLab CI Β»; - Β«
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° werf Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ Π½Π° Helm Β»; - Β«
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° werf 1.0 stable: ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ° GitOps Ρ Π½Π΅Π³ΠΎ, ΡΡΠ°ΡΡΡ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com