
Π’Π΅ΠΌΠ°ΡΠ° Π½Π° ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²Π΅ΡΠ΅ Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π΄ΠΎΡΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅. Π‘ΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΊΠ°ΡΠΎ Open Source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ 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 Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ -> CI / CD -> ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: WERF_IMAGES_REPO_MODE: multirepo|monorepo.
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π·Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°: ΠΈ ), ΡΠ΅ΠΆΠΈΠΌΡΡ ΠΈΠ·ΡΡΠ»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΎΠ±ΡΠ°Π·Π°.
ΠΡΠ²ΠΎΠ»ΡΡ Π΅ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅
Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ² Π½Π°ΡΠΈΠ½ Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ β Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° registry (Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π² werf, Π²ΠΈΠΆΡΠ΅ Π² ).
ΠΡΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ werf Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Kubernetes ΠΎΠ±ΡΠ°Π·ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π»Π΅ΠΆΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
- 3 ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Git ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ, ΠΊΠ°ΡΠΎ ΡΠ°Π³, ΠΊΠ»ΠΎΠ½ ΠΈ ΠΊΠΎΠΌΠΈΡ;
- 1 ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ°Π³ΠΎΠ²Π΅.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π° Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π·. Π‘Π°ΠΌΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ β ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠ°ΡΠ°Π³ β Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ ΠΈΠ»ΠΈ ΡΠ°Π³ ΠΎΡ Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π°Ρ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ²Π° ΠΎΡ ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΡΠΈ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½ ΡΠ΅Π³ΠΈΡΡΡΡ (monorepo), Π² ΡΠ°Π³a Π½Π° ΠΎΠ±ΡΠ°Π·Π°, ΠΎΡΠ²Π΅Π½ ΠΌΠ΅ΡΠ°ΡΠ°Π³ΡΡ ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π·Π°: ΠΠ ΠΠΠΠ’:ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΠΠΠ’Π-Π’ΠΠ. ΠΠ° Π΄Π° Π³ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ, Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π», Π° ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ
ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² Π΅ΡΠΈΠΊΠ΅ΡΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π· ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅.
NB: ΠΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° werf, ΠΎΡΠΏΡΠ°Π²Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ .
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½ΡΠΌΠ° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ°ΡΠ° ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: Π·Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° Π΅ΡΠΈΠΊΠΈΡΠ°Π½Π΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ β Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π½Π°ΡΠΊΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²: «».
Π ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π±Π΅Π· Π²Π»ΠΎΠΆΠ΅Π½ΠΎΡΡ Π½Π΅ Π±Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ°ΠΊΡΠΎΡ Π·Π° Π½Π°Ρ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ Π½Π° Π½Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° werf β Π²ΡΠ΅ ΠΏΠ°ΠΊ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΎΡΠ΄Π΅Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΡΡΠ»ΠΎΠ²Π½ΠΈΡ Container Registry Π² Google Cloud)β¦ ΠΡΠ΅ ΠΏΠ°ΠΊ ΠΎΠ±Π°ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠΎΡΠΎ DevOps ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΡΠ΄Π½ΠΎΡΡ Π² ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, Π΅ ΠΏΡΠΈΡΡΠ½ΠΎ Π΄Π° ΠΎΡΡΠ·Π½Π°Π΅ΠΌ, ΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠ³ΠΎ Π΅ ΡΡΠ°Π½Π°Π»ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, Π° Π·Π° Π½Π°Ρ (ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°) Π½Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Π² ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΡΠ°Π½Π΅ΡΠ΅ Ρ Π½Π°Ρ ΠΈ ΡΡΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π΄ΡΡΠ³ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² !
P.S.
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com


