ΠΡΠ½ΠΎΠ²Π° ΡΠ΅Π»ΠΈΠ·Π° β ΡΡΠΎ Π½ΠΎΠ²Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΠΎΠΈΡ
ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ² (Π΄Π»Ρ 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
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ.
Π’Π°ΠΊΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ untracked-ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠ΅.
Π£Π»ΡΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²
Π Π²Π΅ΡΡΠΈΡΡ
werf v1.1 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ rsync-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² Π² macOS Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Docker volumes, Π° ΠΈΠΌΠΏΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π° ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΈ Π² Linux ΠΈ Windows.
Content-based tagging
Werf v1.1 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ°Π·Π° β content-based tagging. Π’Π΅Π³ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΡ Docker-ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ².
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ werf publish --tags-by-stages-signature
ΠΈΠ»ΠΈ werf ci-env --tagging-strategy=stages-signature
Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ°Π· ΡΠ΅Π³ΠΈΡΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΡΡΠΎ ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½Π°Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠ°Π΄ΠΈΠΉ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ°ΡΡΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ°Π·Π°.
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ:
- ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°;
- ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠ°Π²ΠΎΠΊ Π² Git, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π»ΠΈ ΠΊ ΡΡΠΎΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ.
Π Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Ρ ΠΎΠ»ΠΎΡΡΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ±ΡΠ°Π·Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ merge-ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Git, ΡΡΠΎ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΎΠ±ΡΠ°Π·.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ content-based tagging ΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΈΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΎΠ² pod’ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°Π·Π°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΎΡΡ. ΠΡΡΠ°ΡΠΈ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΌΠ΅ΡΠ°ΡΡΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ content-based tagging ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Git-Π²Π΅ΡΠΊΠ°ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ pipeline’ΠΎΠ² Π² CI-ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π²Π΅ΡΠΊΠΈ.
ΠΠ°ΠΆΠ½ΠΎ: Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° stages-signature β ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ werf ci-env
(Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΡΡΠ³ΡΡ ΡΡ
Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
Π£ΡΠΎΠ²Π½ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π£ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠΈΠΈ --log-quiet
, --log-verbose
, --log-debug
.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ:
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° (--log-verbose
) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ werf:
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ (--log-debug
), ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ werf, ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Docker Registry, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°ΡΠΈΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΏΠ»Π°Π½Ρ
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π»Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ v1.1 ΡΡΠ°Π½ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΆΠ΅ Π² ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ
β Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Π°Π²ΡΠΎΠ°ΠΏΠ΄Π΅ΠΉΡΡ
ΠΠΎΠ»Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Docker Registry (ΠΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΈ: ΠΌΠ°ΡΡ
-
Issue
Π¦Π΅Π»Ρ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ 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 (ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ» ΡΠ²Π΅Π»ΠΈΡΠ΅Π½)
- Π‘ΡΠΎΠΊΠΈ: ΠΌΠ°ΡΡ-Π°ΠΏΡΠ΅Π»Ρ ΠΌΠ°ΡΡ
-
Issue
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, 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
- Π‘ΡΠΎΠΊΠΈ: ΠΌΠ°ΡΡ
-
Issue
ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ werf (ΡΠ°Π·Π΄Π΅Π»Ρ reference ΠΈ guide), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ GitHub Action Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ werf.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ werf Π½Π° ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ runner’Π°Ρ .
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ CI-ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ label’ΠΎΠ² Π½Π° pull-request’Ρ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅/Π²ΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ werf (β)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΈ: ΡΠ½Π²Π°ΡΡ-ΡΠ΅Π²ΡΠ°Π»Ρ Π°ΠΏΡΠ΅Π»Ρ
-
Issue
ΠΠ»Π°Π²Π½Π°Ρ ΡΠ΅Π»Ρ β Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π° Π΄Π»Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΈ Π² production, Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ».
ΠΡ werf ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°.
ΠΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠΈΡΡΠΊΠΈ (ΠΠΠΠΠ)
- ΠΠ΅ΡΡΠΈΡ: v1.1
- Π‘ΡΠΎΠΊΠΈ: Π°ΠΏΡΠ΅Π»Ρ
-
Issue
Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ 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.
Π¨Π°Π³ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΎΡΠΊΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡ Π»ΡΠ±ΠΈΠΌ Π½Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ (
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π°
ΠΡΠΎΠ΄Π΅Π»Π°Π½Π° Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ issues:
- Π£Π΄Π°Π»Π΅Π½Ρ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅.
- Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ issues Ρ ΠΈΠ΄Π΅ΡΠΌΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ v1.1
ΠΠ΅ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²
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. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ Π±ΡΠ»ΠΈ ΡΠ΄Π²ΠΈΠ½ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΡΠ΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π½ΠΎΠ²ΠΎΡΡΡΠΌΠΈ! Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ ΠΊ Π½Π°ΠΌ Π²
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ werf 1.0 stable: ΠΏΡΠΈ ΡΡΠΌ ΡΡΡ GitOps, ΡΡΠ°ΡΡΡ ΠΈ ΠΏΠ»Π°Π½Ρ Β» - Β«
werf β Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ CI/CD Π² Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β»; - Π¦ΠΈΠΊΠ» Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΡ
Π² werf:
- Β«
3-way merge Π² werf: Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Kubernetes Ρ Helm βΠ½Π° ΡΡΠ΅ΡΠΎΠΈΠ΄Π°Ρ β Β»; - Β«
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ werf Π΄Π»Ρ Π²ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ Helm-ΡΠ°ΡΡΠΎΠ² Β»; - Β«
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΏΡΠΈ ΡΡΠΌ Π·Π΄Π΅ΡΡ Docker Registry Β»; - Β«
Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ Docker-ΠΎΠ±ΡΠ°Π·Ρ Π² werf ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ Dockerfile Β».
- Β«
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com