
β Π½Π°ΡΠ° GitOps CLI-ΡΡΠΈΠ»ΠΈΡΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes. Π Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ²: ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΠΈΠ»ΠΈ content-based tagging. ΠΠΎ ΡΠΈΡ
ΠΏΠΎΡ ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΡΡ
Π΅ΠΌΠ° ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² werf ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»Π° ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Docker-ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΠΎ Git-ΡΠ΅Π³Ρ, Git-Π²Π΅ΡΠΊΠ΅ ΠΈΠ»ΠΈ Git-ΠΊΠΎΠΌΠΌΠΈΡΡ. ΠΠΎ Ρ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΡΡ
Π΅ΠΌ Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΡΠ°ΡΡΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎ Π½Π΅ΠΉ ΠΈ ΡΠ΅ΠΌ ΠΎΠ½Π° ΡΠ°ΠΊ Ρ
ΠΎΡΠΎΡΠ° β ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ.
ΠΡΠΊΠ°Ρ Π½Π°Π±ΠΎΡΠ° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
Π§Π°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π±ΠΈΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π Π΅Π»ΠΈΠ·Ρ ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ: Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠ²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ ΠΈ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈ ΠΈΡ ΡΠ΅Π»ΠΈΠ· Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ CI/CD Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΡΠ°ΡΡΡΡ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π½ΠΎ Π·Π°Π²ΠΎΠ΄ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡβ¦ β ΡΠ²Π½ΡΠΉ overkill. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ Π΄Π°Π»Π΅Π΅ ΡΠ΅ΡΡ: Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π»Π΅ΠΆΠ°Ρ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ΅Π»ΠΈΠ·Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Π΅Π΄ΠΈΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π² CI/CD.
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Git-Π²Π΅ΡΠΊΠ΅ ΠΈ Git-ΡΠ΅Π³Ρ
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β tag-or-branch. ΠΠ»Ρ Git-Π²Π΅ΡΠΎΠΊ ΠΎΠ±ΡΠ°Π·Ρ ΡΠ΅Π³ΠΈΡΡΡΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΠΊΠΈ, Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΠ»Ρ Git-ΡΠ΅Π³ΠΎΠ² ΠΎΠ±ΡΠ°Π·Ρ ΡΠ΅Π³ΠΈΡΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ΅Π³Π°.
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Git-ΡΠ΅Π³Π° β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π²ΡΡ ΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ β Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Docker Registry Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ Docker-ΡΠ΅Π³:
-
myregistry.org/myproject/frontend:v1.1.10 -
myregistry.org/myproject/myservice1:v1.1.10 -
myregistry.org/myproject/myservice2:v1.1.10 -
myregistry.org/myproject/myservice3:v1.1.10 -
myregistry.org/myproject/myservice4:v1.1.10 -
myregistry.org/myproject/myservice5:v1.1.10 -
myregistry.org/myproject/database:v1.1.10
ΠΡΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΡΠ΅ΡΠ΅Π· Helm-ΡΠ°Π±Π»ΠΎΠ½Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Kubernetes. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ werf deploy ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ image Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°Ρ
ΡΠ΅ΡΡΡΡΠΎΠ² Kubernetes ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°Π·Π°.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΡΠ½ΠΎ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΠΊΠ°ΡΠ° (Git-ΡΠ΅Π³Π°) Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°Π·Π°, Π° Π»ΠΈΡΡ Π΅Π³ΠΎ Docker-ΡΠ΅Π³, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈΡΠ½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ. Π₯ΠΎΡΡ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΡΠΈΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ.
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΏΡΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π³ΠΎΡΠΎΠ΄ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΠΈ Π²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΊΠ°ΡΠ° ΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π². Π ΠΎΠ±ΡΠ΅ΠΌ ΠΈ ΡΠ΅Π»ΠΎΠΌ ΡΠ°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ. ΠΡΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Docker-ΡΠ΅Π³ΠΈ, ΡΡΠΎΠ±Ρ Π»ΠΈΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΎΠ² Π½Π΅ Π±ΡΠ»ΠΎ.
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Git-ΠΊΠΎΠΌΠΌΠΈΡΡ
Π werf ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌΠΈ.
Git-commit ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠ°Π²ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π² Docker Registry.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Git-ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ ΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, ΡΡΠΎ ΠΈ ΠΏΠΎ Git-Π²Π΅ΡΠΊΠ°ΠΌ ΠΈΠ»ΠΈ Git-ΡΠ΅Π³Π°ΠΌ:
- ΠΠΎΠ³ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ², Π° Docker-ΡΠ΅Π³ ΠΎΠ±ΡΠ°Π·Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
- ΠΠΎΠ³ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ merge-ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ², Π° Docker-ΡΠ΅Π³ ΠΎΠ±ΡΠ°Π·Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
- ΠΠΎΠ³ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Git, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ Π² ΠΎΠ±ΡΠ°Π·, Π° Docker-ΡΠ΅Π³ ΠΎΠ±ΡΠ°Π·Π° ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Git-Π²Π΅ΡΠΊΠΈ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·Π°
ΠΡΡΡ ΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ ΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Git-Π²Π΅ΡΠΊΠ°ΠΌ.
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠ»ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ, ΡΠΎ werf ΠΏΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΎΠ±ΡΠ°Π· ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ Docker-ΡΠ΅Π³Ρ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°Π·Π° Π΄Π»Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΡΠΎΡ ΡΠ΅Π³ DeploymentβΡ Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΈΡΠΊΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° podβΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ pull Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·Π°, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ΅Ρ ΡΠ²ΡΠ·Ρ Ρ CI-ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ pushβΠ°Ρ Π² ΠΎΠ΄Π½Ρ Π²Π΅ΡΠΊΡ Ρ ΠΌΠ°Π»ΡΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΡΡΠ°ΡΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΡΠ°ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠΉ: ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΠΏΠ΅ΡΠ΅ΡΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΠΎ ΡΠ΅Π³Ρ Git-Π²Π΅ΡΠΊΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠ°ΡΡ CI/CD-ΡΠΈΡΡΠ΅ΠΌΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² GitLab CI Π΄Π»Ρ ΡΠ΅ΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ pipeline ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ). ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Ρ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ content-based tagging?
ΠΡΠ°ΠΊ, ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ content-based tagging β ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Docker-ΡΠ΅Π³ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ GitβΠ° (Git-Π²Π΅ΡΠΊΠ°, Git-ΡΠ΅Π³β¦), Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ:
- ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΠΎΠ±ΡΠ°Π·Π°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ-ΡΠ΅Π³ ΠΎΠ±ΡΠ°Π·Π° ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΎΠ±ΡΠ°Π·Π΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ;
- ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° Π² Git. ΠΠ±ΡΠ°Π·Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Git-Π²Π΅ΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ°Π·Π½ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· werf, Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π³ΠΈ-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π³Π°-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π°.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ°Π· ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΡΡΠ°Π΄ΠΈΠΉ: from, before-install, git-archive, install, imports-after-install, before-setup,β¦ git-latest-patch ΠΈ Ρ.Π΄. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠΉ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, β ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΈ (stage signature).
Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ°Π΄ΠΈΠΉ, ΡΠ΅Π³ΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ Π½Π°Π±ΠΎΡΠ° ΡΡΠΈΡ ΡΡΠ°Π΄ΠΈΠΉ β stages signature, β ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ°ΡΡΠ΅ΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π°.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ werf.yaml Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°ΠΊΠ°Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Docker-ΡΠ΅Π³.
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- Π£ΡΡΠΎΠΉΡΠΈΠ²Π° ΠΊ ΠΏΡΡΡΡΠΌ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ.
- Π£ΡΡΠΎΠΉΡΠΈΠ²Π° ΠΊ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΉΠ»Ρ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·Π°.
- ΠΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ±ΠΎΡΠΎΠΊ Π΄Π»Ρ ΡΡΠ°ΡΡΡ Git-ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π²Π΅ΡΠΊΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² werf Π΄Π»Ρ Π²ΡΠ΅Ρ CI-ΡΠΈΡΡΠ΅ΠΌ.
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² werf
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΎΠΏΡΠΈΡ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ werf publish: --tag-by-stages-signature=true|false
Π CI-ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ werf ci-env. Π Π°Π½Π΅Π΅ Π΄Π»Ρ Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ werf ci-env --tagging-strategy=tag-or-branch. Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ werf ci-env --tagging-strategy=stages-signature ΠΈΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΡ ΠΎΠΏΡΠΈΡ, werf ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ stages-signature. ΠΠΎΠΌΠ°Π½Π΄Π° werf ci-env Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΡΠ°Π²ΠΈΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ werf build-and-publish (ΠΈΠ»ΠΈ werf publish), ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉ Π΄Π»Ρ ΡΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π°:
werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signatureβ¦ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Ρ:
-
registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d -
registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6
ΠΠ΄Π΅ΡΡ 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d β ΡΡΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π° backend, Π° f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 β ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ°Π΄ΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π° frontend.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ werf_container_image ΠΈ werf_container_env Π² ΡΠ°Π±Π»ΠΎΠ½Π°Ρ
Helm Π½ΠΈΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ: ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ°Π·ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² CI-ΡΠΈΡΡΠ΅ΠΌΠ΅:
type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deployΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
- ;
- ;
- .
ΠΡΠΎΠ³ΠΎ
- ΠΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ
werf publish --tag-by-stages-signature=true|false. - ΠΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ
werf ci-env --tagging-strategy=stages-signature|tag-or-branch(Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρstages-signature). - ΠΡΠ»ΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΎΠΏΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ (
WERF_TAG_GIT_COMMITΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΡwerf publish --tag-git-commit COMMIT), ΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ stages-signature. - ΠΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π»ΡΡΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡ Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- Π‘ΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° werf 1.1 ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡ Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ°ΡΠ°Ρ tag-or-branch ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
Content-based tagging ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ Docker-ΡΠ΅Π³Π° ΠΊ ΠΏΡΡΡΡΠΌ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ.
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ Docker-ΡΠ΅Π³Π° ΠΊ Git-ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·Π° ΡΠ°ΠΉΠ»Ρ.
- ΠΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ±ΠΎΡΠΎΠΊ Π΄Π»Ρ ΡΡΠ°ΡΡΡ Git-ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π΄Π»Ρ Git-Π²Π΅ΡΠΎΠΊ.
ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ! Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ ΠΊ Π½Π°ΠΌ Π½Π° , ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ issue ΠΈΠ»ΠΈ Π½Π°ΠΉΡΠΈ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ»ΡΡ, ΡΠΎΠ·Π΄Π°ΡΡ PR ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- «»
- «»
- «»;
- Π¦ΠΈΠΊΠ» Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΡ
Π² werf:
- «»;
- «»;
- «»;
- «».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
