Π’Π΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΎ-Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π²Π΅Π΄Π½ΡΠΆ ΠΈ ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅. Π§ΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅
ΠΠ΅ΠΎΡΠ΄Π°Π²Π½Π°ΡΠ½Π°ΡΠ° ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° werf Π΅ Π΄ΠΎΠ±ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ²Π°. ΠΠΎ ΠΏΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ° Docker Registry Ρ ΡΠΎΠ²Π° ...
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ
ΠΠ΅ΠΊΠ° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΠΊΠΈΠΏΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΏΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Kubernetes ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ. ΠΠ° Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΡ (ΡΠ΅Π³ΠΈΡΡΡΡ). ΠΠ°ΡΠΎ ΡΠ°ΠΊΡΠ² ΡΠ΅Π³ΠΈΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Docker Hub Ρ Π΅Π΄ΠΈΠ½ Π°ΠΊΠ°ΡΠ½Ρ COMPANY
. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄, Docker Hub Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΉΠ΅ΡΠ°ΡΡ
ΠΈΡ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠ°ΡΠΎ COMPANY/PROJECT/IMAGE
. Π ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ... ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π½Π΅ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Ρ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Π±Π΅Π· Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π°ΠΊΠ°ΡΠ½Ρ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ?
ΠΠΎΠΆΠ΅ Π±ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ·Π½Π°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ³ΠΎ ΠΎΡ ΠΏΡΡΠ²Π° ΡΡΠΊΠ°, Π½ΠΎ Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ, Ρ.Π΅. Π±Π΅Π· ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠ° ΠΊΡΠΌ Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Docker Hub.
Π Π΅ΡΠ΅Π½ΠΈΡ
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ΅Π½, ΠΈΠ΄Π²Π° Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π°Π²Π° Π½ΡΠΌΠ° Π²ΡΠΏΡΠΎΡΠΈ ΠΈ Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΠ³Π°ΡΠΎ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΊΠ°ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, ΡΠΎΠ³Π°Π²Π° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: frontend
ΠΈ backend
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ ΡΠ°:
- Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°:
- Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π² Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Π΅ΡΠΈΠΊΠ΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
NB: ΠΡΡΡΠ½ΠΎΡΡ ΠΈΠΌΠ° Π΄ΡΡΠ³Π° ΠΎΠΏΡΠΈΡ ΡΡΡ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, PROJECT-frontend
ΠΈ PROJECT-backend
, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° Π³ΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ°, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° werf
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ werf ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ Π΄ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° - Π·Π° ΡΠ°ΡΡΠΈΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΡ
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΠΏΡΠΈΡ --images-repo-mode=multirepo|monorepo
(ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ multirepo
, Ρ.Π΅. ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ² Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°). Π’ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°. ΠΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠΏΡΠΈΠΈ Π·Π° werf ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, Π² ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ CI / CD ΡΠ΅ΠΆΠΈΠΌΡΡ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ Π»Π΅ΡΠ΅Π½ Π·Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π·Π° ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Ρ Π½Π° GitLab ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ -> CI / CD -> ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: WERF_IMAGES_REPO_MODE: multirepo|monorepo
.
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°:
ΠΡΠ²ΠΎΠ»ΡΡ Π΅ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅
Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΡΠ΄Π½ΠΎΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΅ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ (Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΎΡ werf, Π²ΠΈΠΆΡΠ΅
ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°, werf Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Kubernetes, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Ρ Π½Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ:
- 3 ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Git ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ, ΠΊΠ°ΡΠΎ Π΅ΡΠΈΠΊΠ΅Ρ, ΠΊΠ»ΠΎΠ½ ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ;
- 1 ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅.
ΠΠΈΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Π°ΠΌΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅ Ρ.Π½Π°Ρ ΠΌΠ΅ΡΠ° ΡΠ°Π³ - ΠΠ·ΠΈΡΠΊΠ²Π° ΡΠ΅ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°ΡΠ΅ ΠΊΠ»ΠΎΠ½ ΠΈΠ»ΠΈ Π΅ΡΠΈΠΊΠ΅Ρ ΠΎΡ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ΡΠ΅ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ²Π° ΠΎΡ ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΡΠΈ Π·Π°ΠΏΠΈΡ Π² Π΅Π΄Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (monorepo
), Π² ΡΠ°Π³Π° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΌΠ΅ΡΠ° ΡΠ°Π³Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ: PROJECT:frontend-META-TAG
. ΠΠ° Π΄Π° Π³ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ, Π½Π΅ Π²ΡΠ²Π΅Π΄ΠΎΡ
ΠΌΠ΅ Π½ΠΈΠΊΠ°ΠΊΡΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π», Π° ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ
ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΊΡΠΌ Π΅ΡΠΈΠΊΠ΅ΡΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅.
NB: ΠΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ, ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° werf, ΡΠΎΠ³Π°Π²Π° Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½ΡΠΌΠ° Π΄Π° ΠΎΠ±ΡΡΡΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄: ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ - Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² ΡΠΊΠΎΡΠΎΡΠ΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²: β
ΠΠ±ΠΎΠ±ΡΠ°Π²Π°ΠΉΠΊΠΈ
ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½Π΅Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈ Π½Π΅ Π±Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ°ΠΊΡΠΎΡ Π·Π° Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° werf - Π² ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΡΠ»ΠΎΠ²Π΅Π½ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² Google Cloud) ... ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠ°ΡΠ° DevOps ΠΎΠ±ΡΠ½ΠΎΡΡ. ΠΠ½Π΅Π΄ΡΡΠ²Π°ΠΉΠΊΠΈ Π³ΠΎ, ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΡΠ΄Π½ΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, Π΅ Ρ ΡΠ±Π°Π²ΠΎ Π΄Π° ΠΎΡΡΠ·Π½Π°Π΅ΠΌ, ΡΠ΅ Π·Π° Π½ΡΠΊΠΎΠ³ΠΎ Π΅ ΡΡΠ°Π½Π°Π»ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΈ Π½ΠΈΠ΅ (ΠΊΠ°ΡΠΎ Π³Π»Π°Π²Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°) Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΡΠ°Π½Π΅ΡΠ΅ Ρ Π½Π°Ρ ΠΈ ΡΡΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ ΡΠ΅ Π²ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π΄ΡΡΠ³ΠΈ Π½ΠΎΠ²ΠΎΡΡΠΈ Π²
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² werf, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile Β»; - Β«
werf - Π½Π°ΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° CI / CD Π² Kubernetes (ΠΎΠ±Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡΡΠ΅Ρ) ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com