
Π’Π΅ΠΌΠ° Π½Π° ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²Π΅ΡΠ΅ Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π° Π½Π΅Π²Π΅Π΄Π½ΡΠΆ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π΄ΠΎΡΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅. Π‘ΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ Git Π² Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΈ ΡΡΡ
Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π² Kubernetes), ΡΡΠ΄ΠΊΠΎ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π²ΡΡΡ
Ρ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΡΠ² ΠΈΠ·Π±ΠΎΡ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΡ. ΠΠ° Π½Π°Ρ Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ½Π΅Π½ΠΈΡ (ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈ Π½Π° Π·Π΄ΡΠ°Π²ΠΈΡ ΡΠ°Π·ΡΠΌ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅).
ΠΠ°ΡΠΊΠΎΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° mono-repo Π² werf Π΅ Π΄ΠΎΠ±ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ²Π°. ΠΠΎ ΠΏΡΡΠ²ΠΎ Π½Π΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠΎ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ° Ρ Docker Registryβ¦
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ°
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ. Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΠΊΠΈΠΏΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ ΠΏΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Ρ Π² Kubernetes, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ - ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°. ΠΠ° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π³ΠΈΡΡΡΡ (registry). Π ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ°ΠΊΡΠ² ΡΠ΅Π³ΠΈΡΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Docker Hub Ρ Π΅Π΄ΠΈΠ½ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ Π°ΠΊΠ°ΡΠ½Ρ COMPANY. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄, Docker Hub Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π° ΠΉΠ΅ΡΠ°ΡΡ
ΠΈΡ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΡΠ°ΠΊΠ°Π²Π° ΠΊΠ°ΡΠΎ COMPANY/PROJECT/IMAGE. Π ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉβ¦ ΠΊΠ°ΠΊ ΠΎΠ±Π°ΡΠ΅ Ρ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π½Π΅ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°, Π±Π΅Π· Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π°ΠΊΠ°ΡΠ½Ρ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ?

ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π° Π½ΡΠΊΠΎΠ³ΠΎ Π΄Π° Π΅ ΠΏΠΎΠ·Π½Π°ΡΠ°, Π½ΠΎ Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ±Ρ ΠΏΠ»Π°Π½, Ρ.Π΅. Π±Π΅Π· ΠΏΡΠΈΠ²ΡΡΠ·Π°Π½ΠΎΡΡ ΠΊΡΠΌ Π³ΠΎΡΠ΅ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Docker Hub.
ΠΡΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎ, Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅ Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ Π²ΡΠΏΡΠΎΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΠΈ backend β Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ ΡΠ°:
- ΠΠ° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°:

- ΠΠ° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Π² Π΅Π΄Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π° Π² ΡΠ°Π³Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:

NB: ΠΡΡΡΠ½ΠΎΡΡ, ΠΈΠΌΠ° ΠΈ Π΄ΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΡ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, PROJECT-frontend ΠΈ PROJECT-backend, Π½ΠΎ Π½Π΅Π³ΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ°, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π² werf
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ werf ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ Π΄ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ β Π·Π° ΡΠ°ΡΡΠΈΠ΅, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΡ , Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²Π»ΠΎΠΆΠ΅Π½ΠΎΡΡ, ΠΈ Docker Hub β ΡΡΠ΅Π΄ ΡΡΡ . ΠΡ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠ·Π±ΠΎΡ ΠΊΠ°ΠΊ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° --images-repo-mode=multirepo|monorepo (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ multirepo, Ρ.Π΅. ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ² Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ). Π’Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°. ΠΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π½ΡΠΆΠ½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΠΎΡΡΠ°Π²Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠΏΡΠΈΠΈ Π½Π° werf ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, Π² CI/CD ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΡΡ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π΅ Π»Π΅ΡΠ΅Π½ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π·Π° ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Ρ Ρ GitLab Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.
ΠΠΎΠ²ΠΎΡΠ΅ΠΉΠΊΠΈ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π·Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°: ΠΈ ), ΡΠ΅ΠΆΠΈΠΌΡΡ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π·Π°.
ΠΡΠ²ΠΎΠ»ΡΡ Π΅ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅
Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ² Π½Π°ΡΠΈΠ½ Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ β Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° (Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π² werf, Π²ΠΈΠΆΡΠ΅ Π² ).
ΠΡΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ werf Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π»Π΅ΠΆΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
- 3 ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Git ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ, ΠΊΠ°ΡΠΎ ΡΠ°Π³, ΠΊΠ»ΠΎΠ½ ΠΈ ΠΊΠΎΠΌΠΈΡ;
- 1 ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ°Π³ΠΎΠ²Π΅.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Π½Π° ΡΠ°Π³Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π·. Π‘Π°ΠΌΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ β Ρ.Π½Π°Ρ. ΠΌΠ΅ΡΠ°-ΡΠ°Π³ β Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ ΠΈΠ»ΠΈ ΡΠ°Π³ ΠΎΡ Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠΊΡΠΈΠ²Π° ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΡΠΈ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (monorepo), Π² ΡΠ°Π³Π° Π½Π° ΠΎΠ±ΡΠ°Π·Π°, ΠΎΡΠ²Π΅Π½ ΠΌΠ΅ΡΠ°-ΡΠ°Π³Π°, ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π°: ΠΠ ΠΠΠΠ’:ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΠΠΠ’Π-Π’ΠΠ. ΠΠ° ΡΡΡ
Π½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π΅ Π²ΡΠ²Π΅Π΄ΠΎΡ
ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π», Π° ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ
ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² Π΅ΡΠΈΠΊΠ΅ΡΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π· ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ.
NB: ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Π½ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° werf, ΠΎΡΠΏΡΠ°Π²Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ .
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΡΠ°Π³ΠΎΠ²Π΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ β Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠΊΠΎΡΠΎΡΠ½ΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²: "Β».
ΠΠ±ΠΎΠ±ΡΠ°Π²Π°ΠΉΠΊΠΈ
ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈ Π±Π΅Π· Π²Π»ΠΎΠΆΠ΅Π½ΠΎΡΡ Π½Π΅ Π±Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ°ΠΊΡΠΎΡ Π·Π° Π½Π°Ρ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡΠ΅ Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° werf β Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ Π·Π° ΠΎΠ±ΡΠ°Π·ΠΈ (ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΡΡΠ»ΠΎΠ²Π½ΠΈΡ Container Registry Π² Google Cloud)β¦ ΠΡΠ΅ ΠΏΠ°ΠΊ, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π·Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠΎΡΠΎ DevOps ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ Π² ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, Π΅ ΠΏΡΠΈΡΡΠ½ΠΎ Π΄Π° ΠΎΡΡΠ·Π½Π°Π²Π°ΠΌΠ΅, ΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠ³ΠΎ Π΅ ΡΡΠ°Π½Π°Π»ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, Π° ΠΏΡΠΈ Π½Π°Ρ (ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°) Π½Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ Π² Π±ΡΠ΄Π΅ΡΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΡΠ°Π½Π΅ΡΠ΅ Ρ Π½Π°Ρ ΠΈ ΡΡΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π΄ΡΡΠ³ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² !
P.S.
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com


