ΠΡΠΊΠ°Ρ Π½Π°Π±ΠΎΡΠ° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ 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
ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
-
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ β ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ (publish) ; -
Π Π°Π±ΠΎΡΠ° Ρ CI/CD β ΠΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ β stages-signature ; -
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ GitLab CI/CD β .gitlab-ci.yml .
ΠΡΠΎΠ³ΠΎ
- ΠΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ
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-Π²Π΅ΡΠΎΠΊ.
ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ! Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ ΠΊ Π½Π°ΠΌ Π½Π°
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Π Π΅Π»ΠΈΠ· werf 1.1: ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈ ΠΏΠ»Π°Π½Ρ Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ Β» - Β«
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ 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