ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π°

ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π°

Π’Π΅ΠΌΠ°Ρ‚Π° Π·Π° ΠΌΠΎΠ½ΠΎ-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΅ обсъТдана ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ споровС. Π§Ρ€Π΅Π· създаванС werf ΠΊΠ°Ρ‚ΠΎ инструмСнт с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ Git Π΄ΠΎ Docker изобраТСния (ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π³ΠΈ достави Π½Π° Kubernetes), Π½ΠΈΠ΅ Π½Π΅ мислим ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠΉ ΠΈΠ·Π±ΠΎΡ€ Π΅ Π½Π°ΠΉ-добрият. Π—Π° нас Π΅ основно Π΄Π° осигурим всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΡ€ΠΈΠ²ΡŠΡ€ΠΆΠ΅Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мнСния (Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈ Π½Π° здравия Ρ€Π°Π·ΡƒΠΌ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС).

ΠΠ΅ΠΎΡ‚Π΄Π°Π²Π½Π°ΡˆΠ½Π°Ρ‚Π° ΠΌΠΎΠ½ΠΎΡ€Π΅ΠΏΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° werf Π΅ Π΄ΠΎΠ±ΡŠΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π°. Но ΠΏΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π° ...

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ

НСка си прСдставим Ρ‚Π°ΠΊΠ°Π²Π° ситуация. ΠšΠΎΠΌΠΏΠ°Π½ΠΈΡΡ‚Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΠΊΠΈΠΏΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ ΠΏΠΎ нСзависими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прилоТСния работят Π½Π° Kubernetes ΠΈ слСдоватСлно са ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. Π—Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, изобраТСния, ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ (Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€). ΠšΠ°Ρ‚ΠΎ Ρ‚Π°ΠΊΡŠΠ² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ компанията ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Docker Hub с Π΅Π΄ΠΈΠ½ Π°ΠΊΠ°ΡƒΠ½Ρ‚ COMPANY. Подобно Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ систСми Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄, Docker Hub Π½Π΅ позволява йСрархия Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠ°Ρ‚ΠΎ COMPANY/PROJECT/IMAGE. Π’ Ρ‚Π°ΠΊΡŠΠ² случай... ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ Π½Π΅ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΈ прилоТСния Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° с Ρ‚ΠΎΠ²Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π±Π΅Π· Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π·Π° всСки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?

ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π°

МоТС Π±ΠΈ описаната ситуация Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π° Π½Π° някого ΠΎΡ‚ ΠΏΡŠΡ€Π²Π° Ρ€ΡŠΠΊΠ°, Π½ΠΎ Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡŠΠΏΡ€ΠΎΡΠ° Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° прилоТСния ΠΊΠ°Ρ‚ΠΎ цяло, Ρ‚.Π΅. Π±Π΅Π· ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° към горния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Docker Hub.

РСшСния

Ако ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅Π½, ΠΈΠ΄Π²Π° Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° няма Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΈ Π½ΠΈΠ΅ просто Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ изобраТСнията Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ прСдставСно ΠΊΠ°Ρ‚ΠΎ мноТСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, микроуслуги, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΡΡ‚ΠΎΡΡ‰ΠΎ сС ΠΎΡ‚ Π΄Π²Π΅ изобраТСния: frontend ΠΈ backend - Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ са:

  1. Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΉΡ‚Π΅ изобраТСния Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°:

    ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π°

  2. Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΉΡ‚Π΅ всичко Π² Π΅Π΄Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΡ‚ΠΎ слСдва:

    ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° Docker Registry с Ρ‚ΠΎΠ²Π°

NB: Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³Π° опция със Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, PROJECT-frontend ΠΈ PROJECT-backend, Π½ΠΎ няма Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΡ€Π°Π΄ΠΈ слоТността Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π°, организацията ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°Π²Π°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅.

ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° werf

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ werf сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ Π΄ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° - Π·Π° щастиС ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ рСгистри ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Ρ‚Π°Π·ΠΈ функция. Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ вСрсия v1.0.4-alpha.3, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с рСгистри, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π²Π»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°, Π° Docker Hub Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ тях. ΠžΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ потрСбитСлят ΠΈΠΌΠ° ΠΈΠ·Π±ΠΎΡ€ ΠΊΠ°ΠΊ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° изобраТСнията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° изпълнСниС ΠΏΡ€ΠΈ опция --images-repo-mode=multirepo|monorepo (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ multirepo, Ρ‚.Π΅. ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ във Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°). Π’ΠΎΠΉ опрСдСля ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅, ΠΏΠΎ ΠΊΠΎΠΈΡ‚ΠΎ изобраТСнията сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°. Π”ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ТСлания Ρ€Π΅ΠΆΠΈΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ основнитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° всичко останало Ρ‰Π΅ останС Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ.

Въй ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° werf ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата, Π² систСмитС CI / CD Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ лСсСн Π·Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ настройванС Π·Π° цСлия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. НапримСр, Π² случая Π½Π° GitLab просто Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата Π² настройкитС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: Настройки -> CI / CD -> ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° изобраТСния ΠΈ пусканС Π½Π° прилоТСния (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° Ρ‚Π΅Π·ΠΈ процСси Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ статии ΠΎΡ‚ докумСнтацията: ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ ΠΈ ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° внСдряванС), Ρ‚ΠΎΠ³Π°Π²Π° Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ опрСдСля само шаблона, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π”ΡΠ²ΠΎΠ»ΡŠΡ‚ Π΅ Π² Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅

Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΈ основната трудност ΠΏΡ€ΠΈ добавянС Π½Π° Π½ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΅ Π² процСса Π½Π° почистванС Π½Π° систСмния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ (Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° почистванС, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΎΡ‚ werf, Π²ΠΈΠΆΡ‚Π΅ ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° почистванС).

ΠšΠΎΠ³Π°Ρ‚ΠΎ почиства, werf Π²Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ изобраТСнията, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Kubernetes, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ потрСбитСля. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС основават Π½Π° раздСлянСто Π½Π° Ρ‚Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° стратСгии. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ стратСгии:

  1. 3 стратСгии, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Git ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚, ΠΊΠ»ΠΎΠ½ ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚;
  2. 1 стратСгия Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ пСрсонализирани Ρ‚Π°Π³ΠΎΠ²Π΅.

НиС Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ информация Π·Π° стратСгията Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Π°ΠΌΠΎΡ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ Ρ‚.Π½Π°Ρ€ ΠΌΠ΅Ρ‚Π° Ρ‚Π°Π³ - Изисква сС Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° някои ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Ρ‚Π΅ ΠΊΠ»ΠΎΠ½ ΠΈΠ»ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ ΠΎΡ‚ Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΅ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅Ρ‚Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ изобраТСния ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΠΎΠΊΡ€ΠΈΠ²Π° ΠΎΡ‚ част ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

ΠŸΡ€ΠΈ запис Π² Π΅Π΄Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (monorepo), Π² Ρ‚Π°Π³Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π² допълнСниС към ΠΌΠ΅Ρ‚Π° Ρ‚Π°Π³Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ: PROJECT:frontend-META-TAG. Π—Π° Π΄Π° Π³ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ, Π½Π΅ Π²ΡŠΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ никакъв спСцифичСн Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π», Π° просто Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° стойност към Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅.

NB: Ако сС интСрСсуватС Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ всичко, описано Π² изходния ΠΊΠΎΠ΄ Π½Π° werf, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС PR 1684.

Π’ Ρ‚Π°Π·ΠΈ статия няма Π΄Π° ΠΎΠ±Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΈ обосновката Π½Π° нашия ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: относно стратСгиитС Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΈ процСса Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ цяло - всичко Ρ‚ΠΎΠ²Π° Π΅ описано ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΡΠΊΠΎΡ€ΠΎΡˆΠ΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Бтоляров: β€œwerf Π΅ Π½Π°ΡˆΠΈΡΡ‚ инструмСнт Π·Π° CI/CD Π² Kubernetes".

ΠžΠ±ΠΎΠ±Ρ‰Π°Π²Π°ΠΉΠΊΠΈ

Липсата Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π½Π΅Π²Π»ΠΎΠΆΠ΅Π½ΠΈ рСгистри Π½Π΅ бСшС Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π·Π° нас ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈΡ‚Π΅ Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° werf - Π² края Π½Π° ΠΊΡ€Π°ΠΈΡ‰Π°Ρ‚Π° Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° изобраТСния (ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към условСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² Google Cloud) ... Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΠΎΠ²Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ изглСТдашС Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π΄Π° бъдС ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎ-ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ‚Π° DevOps общност. ВнСдрявайки Π³ΠΎ, сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ с основната трудност ΠΏΡ€ΠΈ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° почистванС Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π΅ Ρ…ΡƒΠ±Π°Π²ΠΎ Π΄Π° осъзнаСм, Ρ‡Π΅ Π·Π° някого Π΅ станало ΠΏΠΎ-лСсно ΠΈ Π½ΠΈΠ΅ (ΠΊΠ°Ρ‚ΠΎ Π³Π»Π°Π²Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) няма Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ затруднСния ΠΏΡ€ΠΈ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚Π°Π·ΠΈ функция.

ΠžΡΡ‚Π°Π½Π΅Ρ‚Π΅ с нас ΠΈ съвсСм скоро Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ новости Π² werf!

PS

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€