Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ ΠΎΡ Π΅Π΄Π½ΠΎ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
Π§Π΅ΡΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΡΡΠ»ΡΠ³ΠΈ. ΠΠ·Π΄Π°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ: Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΡΠ½Π°ΡΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
ΠΠΌΠ° ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ° Π½Π°ΠΈΡΡΠΈΠ½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΈ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π· ΠΎΡΠ΄Π΅Π»Π½ΠΈ CI/CD ΠΏΡΠΎΡΠ΅ΡΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅.
Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΎΠ±Π°ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, Π½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° Π²ΡΡΠΊΠ°... Π΅ ΡΠ²Π½ΠΎ ΠΏΡΠ΅ΠΊΠ°Π»ΡΠ²Π°Π½Π΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΡΠ΄Π΅Π½Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ: Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΡΡΠ΅Π· Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ Π² CI/CD.
ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· Git ΠΊΠ»ΠΎΠ½ ΠΈ Git ΡΠ°Π³
ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ - Π΅ΡΠΈΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½. ΠΠ° Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΎΠ½Π°, Π·Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΎΠ½ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ»ΠΎΠ½. ΠΠ° ΡΠ°Π³ΠΎΠ²Π΅ Git ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΡΠΏΠΎΡΠ΅Π΄ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠ°.
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² Git ΡΠ°Π³ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΡΠ½Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ β ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π½ΠΎΠ² Docker ΡΠ°Π³ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° 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 commit
werf ΡΡΡΠΎ ΠΈΠΌΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Git Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ.
Git-commit Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΡΡΠ΅Π· Git commit ΠΈΠΌΠ° ΡΡΡΠΈΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΡΡΠ΅Π· Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Git ΡΠ°Π³ΠΎΠ²Π΅:
- ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΡΠ°Π·Π΅Π½ ΠΊΠΎΠΌΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ Docker ΡΠ°Π³ΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½.
- ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, Π½ΠΎ Docker ΡΠ°Π³ΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½.
- ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΎΠ½Π΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Git, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΡΡ Docker Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ Π½Π° Git Π½Π΅ ΠΎΡΡΠ°Π·ΡΠ²Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠΌΠ° Π΄ΡΡΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΡΠ·Π°Π½ ΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π·Π° Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅.
ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ ΡΠ°Π±ΠΎΡΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ»ΠΎΠ½ ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π² Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠ΅Π΄.
ΠΠΊΠΎ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡ Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΡΠ°Ρ ΠΊΠΎΠΌΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½, ΡΠΎΠ³Π°Π²Π° werf ΡΠ΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ Docker ΡΠ°Π³ Ρ Π½ΠΎΠ²ΠΎΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΈΡ. ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠΊΠ΅Ρ ΠΎΡ ΡΠ΅Π³Π° Π½Π°ΡΠ°ΡΡΠΊ, ΡΠΈΡΠΊΡΠ²Π°Ρ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° pods, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π·Π°Π³ΡΠ±ΠΈ Π²ΡΡΠ·ΠΊΠ° Ρ CI ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ ΡΠ΅ ΡΠ΅ Π΄Π΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ Π½Π°ΡΠΈΡΠΊΠ°Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΎΠ½ Ρ ΠΊΡΠ°ΡΡΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ , ΡΡΠ°ΡΠΈΡΡ ΠΊΠΎΠΌΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΎΡ ΠΏΠΎ-Π½ΠΎΠ²ΠΈΡ: ΡΡΠ°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ΅ Π½ΠΎΠ²Π°ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π·Π° ΠΊΠ»ΠΎΠ½ Git. Π’Π°ΠΊΠΈΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΠ΅Π½ΠΈ ΡΡΠ΅Π· CI/CD ΡΠΈΡΡΠ΅ΠΌΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² GitLab CI ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π·Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠΎΠ²Π° ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΊΡΠ² ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ°ΠΊΠ²ΠΎ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅?
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ β ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
ΠΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Docker ΡΠ°Π³ΠΎΠ²Π΅ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Git ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ (Git ΠΊΠ»ΠΎΠ½, Git ΡΠ°Π³...), Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ:
- ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΡ Π΅ΡΠΈΠΊΠ΅Ρ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡΡΠ°Π·ΡΠ²Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅. ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ, ΡΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π°ΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ;
- ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Git. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Git ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΡΠ΅Π· werf, ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ID ΡΠ°Π³ΠΎΠ²Π΅.
Π’Π°ΠΊΡΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΅ Ρ.Π½Π°Ρ ΡΡΠ΅Π½ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ Π΅ΡΠ°ΠΏΠΈ: from
, before-install
, git-archive
, install
, imports-after-install
, before-setup
, ... git-latest-patch
ΠΈ Ρ.Π½. ΠΡΠ΅ΠΊΠΈ Π΅ΡΠ°ΠΏ ΠΈΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΡΠ°Π·ΡΠ²Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ β ΡΡΠ΅Π½ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡ (ΡΡΠ΅Π½ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡ).
ΠΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΡ ΡΠ΅Π·ΠΈ Π΅ΡΠ°ΠΏΠΈ, Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΎ Ρ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡ Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΡΠ΅Π·ΠΈ Π΅ΡΠ°ΠΏΠΈ - Π΅ΡΠ°ΠΏΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡ, - ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°ΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ° Π²ΡΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° 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
(Or 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
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°:
-
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ β ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ (ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅) ; -
Π Π°Π±ΠΎΡΠ° Ρ CI/CD β ΠΠ±ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ β Π΅ΡΠ°ΠΏΠΈ-ΡΠΈΠ³Π½Π°ΡΡΡΠ° ; -
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Ρ 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
), ΡΠΎΠ³Π°Π²Π° Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π΅ΡΠ°ΠΏΠΈ-ΠΏΠΎΠ΄ΠΏΠΈΡ. - ΠΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΡΠΌ Π½ΠΎΠ²Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅.
- ΠΡΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ ΠΊΡΠΌ werf 1.1 Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΡΠΌ Π½ΠΎΠ²Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, Π½ΠΎ ΡΡΠ°ΡΠ°ΡΠ° Π΅ΡΠΈΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°.
ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, ΡΠ΅ΡΠ°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠ°:
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠ° Π½Π° Docker ΡΡΠ΅ΡΡ ΠΏΡΠ°Π·Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π½Π° Git.
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π½Π° Docker ΡΠΏΡΡΠΌΠΎ Git Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΠ΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΡΠ΅ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π·Π° ΡΡΠ°ΡΠΈ Git Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π·Π° Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΈ Π³ΠΎ! Π Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° Π½ΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π°
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ΅ΡΡΠΈΡ Π½Π° werf 1.1: ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π΄Π½Π΅Ρ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ Β» - Β«
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° werf 1.0 stable: ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ° GitOps Ρ Π½Π΅Π³ΠΎ, ΡΡΠ°ΡΡΡ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Β» - Β«
werf - Π½Π°ΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° CI / CD Π² Kubernetes (ΠΎΠ±Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡΡΠ΅Ρ) Β»; - ΠΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π±Π΅Π»Π΅ΠΆΠΊΠΈ Π·Π° ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈΡΠ΅ Π² werf:
- Β«
3-ΠΏΠΎΡΠΎΡΠ½ΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ ΠΊΡΠΌ werf: Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² Kubernetes Ρ Helm βΠ½Π° ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΈβ Β»; - Β«
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° werf Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ Π½Π° Helm Β»; - Β«
ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ° Docker Registry Ρ ΡΠΎΠ²Π° Β»; - Β«
ΠΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² werf, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile ".
- Β«
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com