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

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

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

Наскоро появилата сС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° mono-repo Π² werf Π΅ Π΄ΠΎΠ±ΡŠΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π°. Но ΠΏΡŠΡ€Π²ΠΎ Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° werf ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±Ρ‰ΠΎ ΠΈΠΌΠ° с Docker Registry…

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

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

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

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

ΠŸΡŠΡ‚ΠΈΡ‰Π° Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

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

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ прСдставСно ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, микросСрвизи, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΈΠ·Π±Π΅Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΡΡ‚ΠΎΡΡ‰ΠΎ сС ΠΎΡ‚ Π΄Π²Π΅ изобраТСния: Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΈ 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 Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата Π² настройкитС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

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

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

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

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

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

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΡ‚Π° Π·Π° стратСгията Π½Π° Ρ‚Π°Π³Π° сС Π·Π°ΠΏΠ°Π·Π²Π° ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Π·Π° Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π½Π° крайния ΠΎΠ±Ρ€Π°Π·. Π‘Π°ΠΌΠ°Ρ‚Π° стойност β€” Ρ‚.Π½Π°Ρ€. ΠΌΠ΅Ρ‚Π°-Ρ‚Π°Π³ β€” Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° част ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅. НапримСр, ΠΏΡ€ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ ΠΈΠ»ΠΈ Ρ‚Π°Π³ ΠΎΡ‚ Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄Π° сС изтрият ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ ΠΎΡ‚ рСгистра, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΡ€ΠΈΠ²Π° част ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

ΠŸΡ€ΠΈ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (monorepo), Π² Ρ‚Π°Π³Π° Π½Π° ΠΎΠ±Ρ€Π°Π·Π°, освСн ΠΌΠ΅Ρ‚Π°-Ρ‚Π°Π³Π°, ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Π·Π°: ΠŸΠ ΠžΠ•ΠšΠ’:Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-ΠœΠ•Π’Π-ВАГ. Π—Π° тяхното раздСлянС Π½Π΅ Π²ΡŠΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ спСцифичСн Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π», Π° просто Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° стойност Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° крайния ΠΎΠ±Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ.

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

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

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

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

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

P.S.

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster