
β Π½Π°ΡΠ°ΡΠ° 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 ΠΏΠ°ΡΠΎΠ²Π΅:
install,beforeSetup,setup; ΠΈΠ»ΠΈ 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. ΠΡΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° ΡΠ΅ Π²Π·ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ context, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ werf ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΡΠ΅Π· Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°, ΡΡΠΌΠΈΡΠ°ΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ v1.1, werf ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ, ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π² Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π΅ . ΠΠ»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² .dockerignore ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎ Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡ. Π’Π°ΠΊΠ° ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ
ΠΌΠ΅ ΠΎΡ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° context Π½Π΅ Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π°.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠ²Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Π³ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ°.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
Π Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π½Π° 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, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ Π² ΠΎΠ±ΡΠ°Π·Π°.
Π‘ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π³ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Kubernetes ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π°, Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π½Π΅ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ. ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅ΡΠ°Ρ Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ Π½Π° Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½Π΅Π½ Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π‘ΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΠ°Π³Π²Π°Π½Π΅ΡΠΎ, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠ°Π³Π²Π°Π½Π΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ°Π³Π²Π°Π½Π΅ΡΠΎ ΠΏΠΎ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° pipeline-ΠΎΠ²Π΅ΡΠ΅ Π² CI ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠΈΡΠ° ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΊΠ»ΠΎΠ½.
ΠΠ°ΠΆΠ½ΠΎ: ΠΎΡ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΡΠ°ΡΡΠΊ stages-signature β ΡΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΡΠ°Π³Π²Π°Π½Π΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° werf ci-env (ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π΅ΠΊΡΠΏlicitΠ½ΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ Π΄ΡΡΠ³Π° ΡΡ
Π΅ΠΌΠ° Π½Π° ΡΠ°Π³Π²Π°Π½Π΅).
. ΠΠ° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° ΠΈ ΠΎΡΠ΄Π΅Π»Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ. ΠΠΠΠΠΠΠΠ (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-a Π½Π° Kubernetes Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Docker-ΡΡΡΠ²ΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Docker-ΡΡΡΠ²ΡΡΠ° ΠΏΡΠ΅Π· ΠΌΡΠ΅ΠΆΠ° werf Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°). ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² Kubernetes ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ.
ΠΡΠΈΡΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° GitHub Actions (ΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΎΠ²Π΅: ΠΌΠ°ΡΡ
ΠΠΊΠ»ΡΡΠ²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° werf (ΡΠ°Π·Π΄Π΅Π»ΠΈ reference ΠΈ guide), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ GitHub Action Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ werf.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ werf Π½Π° Π΅ΡΠ΅ΠΌΠ΅ΡΠ½ΠΈ runner-ΠΈ.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Ρ CI-ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° label-ΠΎΠ²Π΅ Π½Π° 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
ΠΠ΅ΡΡΠΈΡΡΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² (Π² ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ stable ΠΈ rock-solid ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ Ρ Π½Π°ΠΏΡΠ΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ°, ΠΎΠ±Π°ΡΠ΅ ea ΡΡ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»Π° ΠΏΡΠ΅Π· ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅. alpha ΠΈ Π±Π΅ΡΠ°). ΠΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
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
