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