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