
β Π½Π°ΡΠΈΡΡ GitOps CLI ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes. ΠΠ°ΠΊΡΠΎ ΠΎΠ±Π΅ΡΠ°Ρ
ΠΌΠ΅, ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² werf ΠΈ ΠΏΡΠ΅ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ. Π‘Π΅Π³Π° Ρ ΡΠ°Π΄ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ ΡΠ΅Π»ΠΈΠ·Π° v1.1, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΡΡΠΏΠΊΠ° Π² ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ ΠΈ ΠΎΡΠ½ΠΎΠ²Π° Π·Π° Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠ° werf. ΠΠ΅ΡΡΠΈΡΡΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² .
ΠΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠ΅Π»ΠΈΠ·Π° Π΅ Π½ΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Π΅ΡΠ°ΠΏΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π΄Π²Π°ΡΠ° ΡΠ±ΠΎΡΠ½ΠΈΠΊΠ° (Π·Π° Stapel ΠΈ Dockerfile). ΠΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΎΡΠ²Π°ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Π΅Π΄ΠΈΠ½ Ρ ΠΎΡΡ.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ³Π½Π°ΡΡΡΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΈ ΡΡΠΌΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ. Π’Π°Π·ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΡΠ΅Π΄Π½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ±ΠΎΡΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° werf. Π Ρ
ΠΎΠ»ΠΎΡΡΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π² ΠΊΠ΅ΡΠ° stages-storage, ΡΠ΅Π³Π° Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΠ° Π±ΡΡΠ·ΠΈ. Π ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 1 ΡΠ΅ΠΊΡΠ½Π΄Π°! Π’ΠΎΠ²Π° ΡΡΡΠΎ Π²Π°ΠΆΠΈ ΠΈ Π·Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈΡΠ΅ ΠΏΠΎ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅ werf deploy ΠΈ werf run.
Π‘ΡΡΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ΅Π»ΠΈΠ· ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΡΠ°Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ β content-based tagging, ΠΊΠΎΡΡΠΎ ΡΠ΅Π³Π° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½Π°ΡΠ°.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² werf v1.1 ΠΈ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ Π·Π° Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² werf v1.1?
ΠΠΎΠ² ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΏΠΎΠ΄Π±ΠΎΡ Π½Π° Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΠΊΠ΅ΡΠ°
ΠΠΎΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ Π½Π° Π΅ΡΠ°ΠΏ. Π‘Π΅Π³Π° Π²ΡΡΠΊΠ° ΡΠ±ΠΎΡΠΊΠ° Π½Π° Π΅ΡΠ°ΠΏ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π΅ΡΠ°ΠΏ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ 2 ΡΠ°ΡΡΠΈ: ΡΠΈΠ³Π½Π°ΡΡΡΠ° (ΠΊΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ Π² v1.0) ΠΏΠ»ΡΡ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π½Π° Π΅ΡΠ°ΠΏ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835
β¦ ΠΈΠ»ΠΈ Π² ΠΎΠ±Ρ Π²ΠΈΠ΄:
werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC
Π’ΡΠΊ:
-
SIGNATUREβ ΡΠΎΠ²Π° Π΅ ΡΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅ΡΠ°ΠΏΠ° ΠΈ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° Π² Git, ΠΊΠΎΠΈΡΠΎ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΡΠΎΠ²Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅; -
TIMESTAMP_MILLISECβ ΡΠΎΠ²Π° Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΎΠ±ΡΠ°Π·Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΎΠ±ΡΠ°Π·.
ΠΠ»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΎΡ ΠΊΠ΅ΡΠ° ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡΡΠ° Π½Π° Git ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅:
- Werf ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ°Π΄ΠΈΡ.
- Π stages-storage ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ°Π΄ΠΈΠΈ Ρ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡ. Werf ΠΈΠ·Π±ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΡΡΠ°Π΄ΠΈΠΈ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°.
- ΠΠΊΠΎ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ°Π΄ΠΈΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Git (git-archive, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΡΠ°Π΄ΠΈΡ Ρ Git ΠΏΠ°ΡΠΎΠ²Π΅:
ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅,ΠΏΡΠ΅Π΄ΠΈΠΠ°ΡΡΡΠΎΠΉΠΊΠ°,Π½Π°ΡΡΡΠΎΠΉΠΊΠ°; ΠΈΠ»ΠΈ git-latest-patch), ΡΠΎ werf ΠΈΠ·Π±ΠΈΡΠ° ΡΠ°ΠΌΠΎ ΡΠ΅Π·ΠΈ ΡΡΠ°Π΄ΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΊΠΎΠΌΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΠΊ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠΌΠΈΡ (Π·Π° ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°). - ΠΡ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΡΡΠ°Π΄ΠΈΠΈ ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° Π΅Π΄Π½Π° β Π½Π°ΠΉ-ΡΡΠ°ΡΠ°ΡΠ° ΠΏΠΎ Π΄Π°ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅.
Π‘ΡΠ°Π΄ΠΈΡΡΠ° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡ. ΠΠΎ werf ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ΅Ρ, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ²ΠΏΠ°Π΄Π°Ρ.
.
ΠΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ
ΠΠΊΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π±ΠΎΡΠ° Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΎΡ ΠΊΠ΅ΡΠ° werf Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° ΡΡΠ°Π΄ΠΈΡ, ΡΠΎ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° ΡΡΠ°Π΄ΠΈΡ.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅, ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠ° (Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Ρ ΠΎΡΡΠΎΠ²Π΅) ΠΌΠΎΠ³Π°Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΡ ΠΏΠΎΡΡΠΈ ΠΏΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. Werf ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ stages-storage ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΊΡ-ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π· Π² stages-storage. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π΄ΠΈΡ Π΅ Π³ΠΎΡΠΎΠ²Π°, werf Π±Π»ΠΎΠΊΠΈΡΠ° stages-storage ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠ°ΠΌ ΡΠΎΠΊΡ-ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π· ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΠ°ΠΌ Π²Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΎΠ±ΡΠ°Π· (ΠΏΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ β Π²ΠΈΠΆΡΠ΅ Π½ΠΎΠ²ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΎΡ ΠΊΠ΅ΡΠ°).
Π’ΠΎΠΊΡ-ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ΠΎ ΡΠ΅ ΠΈΠΌΠ° ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎ TIMESTAMP_MILLISEC (Π²ΠΈΠΆΡΠ΅ Π½ΠΎΠ²ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ). Π ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π² stages-storage Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ ΠΎΠ±ΡΠ°Π·, werf ΡΠ΅ ΠΎΡΡ
Π²ΡΡΠ»ΠΈ ΡΠΎΠΊΡ-ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π· ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ ΠΊΠ΅ΡΠ°.
Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ: ΠΏΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π²ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π·Π° (Π½Π°ΠΉ-Π±ΡΡΠ·ΠΈΡΡ), ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΡΠ°Π²ΠΎΡΠΎ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈ Π² stages-storage (ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΎΠ·ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΎΠ±ΡΠ°Π· ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ). ΠΠ°Π±Π°Π²Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½ΠΈΠΊΠΎΠ³Π° Π½ΡΠΌΠ° Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° ΠΏΠΎ-Π±ΡΡΠ·ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ°Π΄ΠΈΡ ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ°.
.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° Dockerfile
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π·Π° ΠΎΠ±ΡΠ°Π·Π°, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ ΠΎΡ Dockerfile, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄Π½Π° ΡΡΠ°Π΄ΠΈΡ β dockerfile. ΠΡΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° ΡΠ΅ ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ werf ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΠΏΡΠ΅Π· Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ°, ΡΡΠΌΠΈΡΠ°ΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ v1.1, werf ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ, ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π² Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° β . ΠΠ»Π³ΠΎΡΠΈΡΡΠΌΡΡ ΠΎΡΡΠΈΡΠ° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² .dockerignore ΠΈ ΠΌΠΈΠ½Π°Π²Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΡΠ΅Π· Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π½ΠΈΠ΅ ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ
ΠΌΠ΅ ΠΎΡ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π΅ Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π°.
ΠΠ»Π³ΠΎΡΠΈΡΡΠΌΡΡ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° untracked ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Π³ΠΈ ΠΎΡΡΠΈΡΠ° Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ°.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
Π Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π½Π° werf v1.1 ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° rsync ΡΡΡΠ²ΡΡ ΠΏΡΠΈ . ΠΠΎ-ΡΠ°Π½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π² Π΄Π²Π° Π΅ΡΠ°ΠΏΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΎΡ Ρ ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ΅ Π² macOS Π²Π΅ΡΠ΅ Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΎΡ Docker volumes, Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π·Π° ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠ°ΠΊΡΠΎ Π² Linux ΠΈ Windows.
Π’Π°Π³ΠΎΠ²Π΅ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅
Werf v1.1 ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎΡΠΎ ΡΠ°Π³ΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π° β content-based tagging. Π’Π°Π³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°Π½ΡΠ½ΠΈΡΠ΅ Docker ΠΎΠ±ΡΠ°Π·ΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ.
ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° werf publish --tags-by-stages-signature ΠΈΠ»ΠΈ werf ci-env --tagging-strategy=stages-signature ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π³ΠΈΡΠ°Π½ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Ρ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½Π°ΡΠ° ΡΠΈΠ³Π½Π°ΡΡΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°. ΠΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ°Π· ΡΠ΅ ΡΠ°Π³ΠΈΡΠ° Ρ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠΈΠ³Π½Π°ΡΡΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΎΠ±ΡΠ°Π·, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΠΎ ΡΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠ°ΡΠΎ ΡΠ΅Π΄ΠΎΠ²Π½Π°ΡΠ° ΡΠΈΠ³Π½Π°ΡΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π΅ΡΠ°ΠΏΠΈΡΠ΅ ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ, Π½ΠΎ Π΅ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΎΠ±ΡΠ°Π·Π°.
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π·Π°Π²ΠΈΡΠΈ ΠΎΡ:
- ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΎΠ±ΡΠ°Π·;
- ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Git, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΄ΠΎΠ²Π΅Π»ΠΈ Π΄ΠΎ ΡΠΎΠ²Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
Π Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° ΠΏΡΠ°Π·Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΈΡΠΈ ΡΠ°ΠΌΠΎ Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ ΠΈΠ»ΠΈ merge ΠΊΠΎΠΌΠΈΡΠΈ, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠΈ ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Git, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ Π² ΠΎΠ±ΡΠ°Π·Π°.
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° tagging Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ Π½Π΅Π½ΡΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈΡ Π½Π° pod-ΠΎΠ²Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Kubernetes, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π°, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π½Π΅ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ. ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅ΡΠ°Ρ Π½Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ Π½Π° Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½Π΅Π½ Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, tagging Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠ°Π³ΠΈΡΠ°Π½Π΅ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΠ°Π³ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΏΠΎ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° pipeline-ΠΈΡΠ΅ Π² CI ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠΈΡΠ° ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΊΠ»ΠΎΠ½.
ΠΠ°ΠΆΠ½ΠΎ: ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½Ρ stages-signature β ΡΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΡΠ°Π³ΠΈΡΠ°Π½Π΅. Π’Ρ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° werf ci-env (ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ Π΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π΄ΡΡΠ³Π° ΡΡ
Π΅ΠΌΠ° Π·Π° ΡΠ°Π³ΠΈΡΠ°Π½Π΅).
. ΠΠ° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ. ΠΠΠ’Π£ΠΠΠΠΠΠ ΠΠΠ (3 Π°ΠΏΡΠΈΠ»): Π‘ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ .
ΠΠΈΠ²Π° Π½Π° Π»ΠΎΠ³Π²Π°Π½Π΅
ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΈΠ·Ρ
ΠΎΠ΄Π°, Π΄Π° Π·Π°Π΄Π°Π²Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° Π»ΠΎΠ³Π²Π°Π½Π΅ ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΎΡΠ»Π°Π΄ΡΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΎΠΏΡΠΈΠΈΡΠ΅ --log-quiet, --log-verbose, --log-debug.
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ΠΈΠ·Ρ ΠΎΠ΄Π° ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:

ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄ (--log-verbose), ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ werf:

ΠΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄ (--log-debug), ΠΎΡΠ²Π΅Π½ ΠΎΡΠ»Π°Π΄ΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° werf, ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ΄ΡΡΠΆΠ° Π»ΠΎΠ³ΠΎΠ²Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ ΠΊΠ°ΠΊ ΡΡΠ°Π²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ Docker Registry, Π° ΡΡΡΠΎ ΠΈ Π΄Π° ΡΠ΅ ΡΠΈΠΊΡΠΈΡΠ°Ρ ΠΌΠ΅ΡΡΠ°ΡΠ°, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΡΠ΄Π΅Π»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅:

ΠΡΠ΄Π΅ΡΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ Π½Π°Π΄ΠΏΠΈΡ v1.1 ΡΠ΅ ΡΡΠ°Π½Π°Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ Π² ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΡ β Π² Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠΉΠ΄Π°Ρ ΡΡΠ΅Π· Π°Π²ΡΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ . Π’Π΅Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ Π·Π°ΡΡΠ³Π°Ρ ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ v1.1, ΠΏΠΎΡΠ²Π°ΡΠ° ΠΈΠΌ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΡΡΠ½ΠΎ Π½Π°ΠΌΠ΅ΡΠ° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π² Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Docker Registry (ΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΠΌΠ°ΡΡ
Π¦Π΅Π»ΡΠ° Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° werf.
ΠΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΌΠ΅ ΠΈΠ·Π»ΡΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½Π°ΠΌΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°:
- Default (library/registry)*,
- AWS ECR,
- Azure*,
- Docker Hub,
- GCR*,
- GitHub Packages,
- GitLab Registry*,
- Harbor*,
- Quay.
ΠΠ²Π΅Π·Π΄ΠΎΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΎΡ werf. ΠΠ° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π½ΠΎ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°ΠΌΠ΅ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°:
- ΠΡΠΊΠΎΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ ΡΡΠ΅Π· Docker Registry API, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π² werf. Π’ΠΎΠ²Π° Π²Π°ΠΆΠΈ Π·Π° AWS ECR, Docker Hub ΠΈ GitHub Packages.
- Π§Π°ΡΡ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Ρ.Π½Π°Ρ. nested repositories (Docker Hub, GitHub Packages ΠΈ Quay) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ, Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΡΡΠ½ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ UI ΠΈΠ»ΠΈ API (AWS ECR).
Π’Π΅Π·ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΡΠ΅ΡΠΈΠΌ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½Π°ΡΠΈΠ²Π½ΠΈ API Π² ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°. Π’Π°Π·ΠΈ Π·Π°Π΄Π°ΡΠ° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° werf Π·Π° Π²ΡΡΠΊΠΎ ΠΎΡ ΡΡΡ .
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ (β)
- ΠΠ΅ΡΡΠΈΡ: v1.2 v1.1 (ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½)
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΠΌΠ°ΡΡ-Π°ΠΏΡΠΈΠ» ΠΌΠ°ΡΡ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° werf v1.0 ΠΈ v1.1 ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡΠ΄Π΅Π»Π΅Π½ Ρ ΠΎΡΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes.
ΠΠ° Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° werf, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Ρ ΠΎΡΡΠ° ΠΈ ΡΠ΅Π·ΠΈ Ρ ΠΎΡΡΠΎΠ²Π΅ Π½Π΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ ΡΠ²ΠΎΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ (Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ runner'ΠΈ), ΠΎΡ werf ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Docker Registry ΠΊΠ°ΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΡΡΠΏΠΊΠΈ.
ΠΡΠ΅Π΄ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ werf Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ Π½Π°ΡΠΈΡΠ°ΡΠ΅ dapp, ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ. ΠΠ±Π°ΡΠ΅ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ΅ ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π² werf.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Π’Π°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π½Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠ°ΡΠ° Π²ΡΡΡΠ΅ Π² pod'ΠΎΠ²Π΅ Π½Π° Kubernetes, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π°Π²ΠΈΠΌ ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Docker-ΡΡΡΠ²ΡΡ (Π² pod'Π° Π½Π° Kubernetes Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Docker-ΡΡΡΠ²ΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Docker-ΡΡΡΠ²ΡΡΠ° ΠΏΠΎ ΠΌΡΠ΅ΠΆΠ° werf Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°). ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² Kubernetes ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ.
ΠΡΠΈΡΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° GitHub Actions (ΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΠΌΠ°ΡΡ
ΠΠΊΠ»ΡΡΠ²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° werf (ΡΠ°Π·Π΄Π΅Π»ΠΈ reference ΠΈ guide), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ GitHub Action Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ werf.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° werf Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π΅ΡΠΈΠΌΠ΅ΡΠ½ΠΈ runner'ΠΈ.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ°ΡΠ° Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Ρ CI-ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ Π½Π° pull-request'ΠΈ Π·Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅/ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠΎΠΊΠ°Π»Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ werf (β)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΡΠ½ΡΠ°ΡΠΈ-ΡΠ΅Π²ΡΡΠ°ΡΠΈ Π°ΠΏΡΠΈΠ»
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π΅Π΄ΠΈΠ½Π΅Π½ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΡΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΡΠ°ΠΊΠ° ΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, βΠΈΠ·Π²ΡΠ½ ΠΊΡΡΠΈΡΡΠ°β.
ΠΡ werf ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΄Π΅Π±ΡΠ³Π²Π°Π½Π΅.
ΠΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ (ΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: Π°ΠΏΡΠΈΠ»
Π ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ werf v1.1 Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° cleanup Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π·Π° ΡΡ
Π΅ΠΌΠ°ΡΠ° Π½Π° Π΅ΡΠΈΠΊΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ (content-based tagging) β ΡΠ΅Π·ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ ΡΠ΅ ΡΠ΅ Π½Π°ΡΡΡΠΏΠ²Π°Ρ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ werf (v1.0 ΠΈ v1.1) ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΠΏΠΎ ΡΡ Π΅ΠΌΠΈ Π½Π° Π΅ΡΠΈΠΊΠΈΡΠ°Π½Π΅: Git-ΠΊΠ»ΠΎΠ½, Git-Π΅ΡΠΈΠΊΠ΅Ρ ΠΈΠ»ΠΈ Git-ΠΊΠΎΠΌΠΌΠΈΡ.
Π‘ΡΠ·Π΄Π°Π΄Π΅Π½ Π΅ Π½ΠΎΠ² ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΡ Π΅ΠΌΠΈ Π½Π° Π΅ΡΠΈΠΊΠΈΡΠ°Π½Π΅, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΠ΅ Π² Git:
- ΠΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ N1 ΠΎΠ±ΡΠ°Π·ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ N2 ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ git HEAD (ΠΊΠ»ΠΎΠ½ΠΈ ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ).
- ΠΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ N1 ΠΎΠ±ΡΠ°Π·ΠΈ-ΡΡΠ°Π΄ΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ N2 ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ git HEAD (ΠΊΠ»ΠΎΠ½ΠΈ ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ).
- ΠΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΈ Π΄Π° Π΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes (ΡΠΊΠ°Π½ΠΈΡΠ°Ρ ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ kube-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ namespace'ΠΈ; ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΎΠΏΡΠΈΠΈ).
- ΠΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ, Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ Π² Helm-ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅.
- ΠΠ±ΡΠ°Π·ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡ, Π°ΠΊΠΎ Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ HEAD ΠΎΡ git (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΡΠΎΡΠΎ ΡΠ°ΠΌΠΈΡΡ ΡΡΠΎΡΠ²Π΅ΡΠ΅Π½ HEAD Π΅ Π±ΠΈΠ» ΠΈΠ·ΡΡΠΈΡ) ΠΈ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes ΠΈ Π² ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ Π½Π° Helm.
ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ (β)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΡΠ½ΡΠ°ΡΠΈ-ΡΠ΅Π²ΡΡΠ°ΡΠΈ Π°ΠΏΡΠΈΠ»*
Π’Π΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° werf ΡΡΠ±ΠΈΡΠ° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² werf.yaml, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΡΡΠ°Π΄ΠΈΠΈ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄.
* ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΡΡΠΎΠΊΡΡ Π΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° werf Ρ GitHub Actions. ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π΅ ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° Helm 3 (β)
- ΠΠ΅ΡΡΠΈΡ: v1.2
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΡΠ΅Π²ΡΡΠ°ΡΠΈ-ΠΌΠ°ΡΡ ΠΌΠ°ΠΉ*
ΠΠΊΠ»ΡΡΠ²Π° Π² ΡΠ΅Π±Π΅ ΡΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½, ΡΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ.
* ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Helm 3 Π½ΡΠΌΠ° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² werf, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Helm 3 (3-way-merge ΠΈ Π»ΠΈΠΏΡΠ° Π½Π° tiller) Π²Π΅ΡΠ΅ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π² werf. ΠΠΎ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π΅, ΡΠ΅ werf ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ ΠΎΡΠ²Π΅Π½ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΎΡΡΠ°Π²Π° Π² Π½Π°ΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ.
Jsonnet Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Kubernetes (β)
- ΠΠ΅ΡΡΠΈΡ: v1.2
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΡΠ½ΡΠ°ΡΠΈ-ΡΠ΅Π²ΡΡΠ°ΡΠΈ Π°ΠΏΡΠΈΠ»-ΠΌΠ°ΠΉ
Werf ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° Kubernetes Π² ΡΠΎΡΠΌΠ°Ρ Jsonnet. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ werf ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Helm ΠΈ ΡΠ΅ ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π΅, ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Go, ΡΠΏΠΎΡΠ΅Π΄ ΠΎΡΠ΅Π½ΠΊΠΈΡΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ°, ΠΈΠΌΠ°Ρ Π³ΠΎΠ»ΡΠΌ ΠΏΡΠ°Π³ Π½Π° Π²Π»ΠΈΠ·Π°Π½Π΅ ΠΈ ΡΡΠ½ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΡΡΡΠΎ ΡΡΡΠ°Π΄Π°.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Kubernetes (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Kustomize).
Π Π°Π±ΠΎΡΠ° Π²ΡΡΡΠ΅ Π² Kubernetes (β)
- ΠΠ΅ΡΡΠΈΡ: v1.2
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: Π°ΠΏΡΠΈΠ»-ΠΌΠ°ΠΉ ΠΌΠ°ΠΉ-ΠΈΡΠ½ΠΈ
Π¦Π΅Π»: Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° runner'ΠΈ Π² Kubernetes. Π’.Π΅. ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ, ΡΡΡ Π½Π°ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ pod-ΠΎΠ²Π΅ Π½Π° Kubernetes.
ΠΠ° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ, ΠΏΡΡΠ²ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ (Π²ΠΆ. ΡΠΎΡΠΊΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅).
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΡΡΠΎΠΈΡΠ΅Π»Ρ Π±Π΅Π· Docker-ΡΠ΅ΡΠ²Π΅Ρ (Ρ.Π΅. ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π² ΡΡΠΈΠ» Kaniko ΠΈΠ»ΠΈ Π² userspace).
Werf ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π² Kubernetes Π½Π΅ ΡΠ°ΠΌΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Dockerfile, Π½ΠΎ ΠΈ ΡΡΡ ΡΠ²ΠΎΡ ΡΡΡΠΎΠΈΡΠ΅Π» Stapel Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΏΡΠ΅ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΈ Ansible.
Π‘ΡΡΠΏΠΊΠ° ΠΊΡΠΌ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
ΠΠ±ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ (, ) ΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Ρ ΠΎΡΠ° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ werf ΠΏΠΎ-Π΄ΠΎΠ±ΡΡ, Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ Π² ΠΊΠ°ΠΊΠ²Π° ΠΏΠΎΡΠΎΠΊΠ° ΡΠ΅ Π΄Π²ΠΈΠΆΠΈΠΌ ΠΈ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°.
Π‘ΡΠ²ΡΠ΅ΠΌ Π½Π°ΡΠΊΠΎΡΠΎ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π½Π° Π·Π° Π΄Π° ΠΏΡΠΈΠΎΡΠ²ΠΎΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π½Π°ΡΠΈΡ Π΅ΠΊΠΈΠΏ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
- ;
- ;
- ;
- .
ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ issues:
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ ΡΠ° Π½Π΅Π°ΠΊΡΡΠ°Π»Π½ΠΈΡΠ΅.
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈ Π² Π΅Π΄ΠΈΠ½Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Ρ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ issues Ρ ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π²Π΅ΡΡΠΈΡ v1.1
ΠΠ΅ΡΡΠΈΡΡΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² (Π² ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ . ΠΠΊΠΎ ΡΠ΅ Π΅ ΠΏΠΎΡΠ²ΠΈΠ»Π° Π³ΡΠ΅ΡΠΊΠ° Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π° ΠΈ Ρ rock-solid ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅, Π½ΠΎ stable ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»Π° ΠΏΡΠ΅Π· ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ alpha ΠΈ beta). ΠΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
source $(multiwerf use 1.1 ea)
werf COMMAND ...ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π·Π° Stapel ΠΈ Dockerfile ΡΠ±ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠ²Π°ΡΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π² werf. Π’Π΅Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΊΠΎΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ Π² ΡΡΡΠΈΡ ΡΠ΅Π»ΠΈΠ· v1.1 ΠΈ ΡΠ΅ ΡΡΠ°Π½Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΡΠ΅Π· ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ).
Π ΡΠΎΠ·ΠΈ ΡΠ΅Π»ΠΈΠ· Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ β content-based tagging, β ΠΊΠΎΡΡΠΎ ΡΡΠ°Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ Π»ΠΎΠ³ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.
Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π·Π½Π°ΡΠΈΠΌΠ° ΡΡΡΠΏΠΊΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ. Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΡ v1.0 ΡΡΠ°Π½Π°Ρ Π° ΠΏΠΎ-ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½Π° Π·Π°Π΄Π°ΡΠ° ΠΎΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° werf: Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΌΠ΅ΡΠ½ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ CI/CD ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° GitHub Actions. ΠΠ°ΡΠΎΠ²Π° ΡΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΡ Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠΈΠΌ, Π·Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΡΠΊΠΎΡΠΎ ΠΈ Π΄Π²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π‘Π»Π΅Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈΠ½ΠΈΡΠ΅! Π Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π°ΡΠΈΡ , Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ issue, Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΎ ΠΈ Π΄Π° ΡΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΠ»ΡΡ, Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ PR ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
P.S.
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»
- «»;
- Π¦ΠΈΠΊΡΠ» ΠΎΡ Π±Π΅Π»Π΅ΠΆΠΊΠΈ Π·Π° Π½ΠΎΠ²ΠΎΡΡΠΈΡΠ΅ Π² werf:
- «»;
- «»;
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
