ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΏΡ€ΠΈ Ρ‡Ρ‘ΠΌ здСсь Docker Registry

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΏΡ€ΠΈ Ρ‡Ρ‘ΠΌ здСсь Docker Registry

Π’Π΅ΠΌΠ° монорСпозитория ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π· ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ вСсьма Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ споры. Боздавая werf ΠΊΠ°ΠΊ Open Source-инструмСнт, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΉ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ процСссы сборки ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· 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.

ΠŸΡƒΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎ, поставляСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±Ρ€Π°Π·Π΅, Ρ‚ΠΎ вопросов Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈ ΠΌΡ‹ просто сохраняСм ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² рССстр ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставлСно Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², микросСрвисов, Ρ‚ΠΎ трСбуСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ web-прилоТСния, состоящСго ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ²: 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 достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Π²Ρ‹ΠΊΠ°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΎΠ± этих процСссах ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: Publish process ΠΈ Deploy process), Ρ‚ΠΎ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСляСт шаблон, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π”ΡŒΡΠ²ΠΎΠ» Π² дСталях

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΈ основная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ способа хранСния β€” Π² процСссС очистки registry (возмоТности чистки, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π² werf, см. Π² Cleaning process).

ΠŸΡ€ΠΈ очисткС werf ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² кластСрах Kubernetes ΠΎΠ±Ρ€Π°Π·Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, настраиваСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ основС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ Π»Π΅ΠΆΠΈΡ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ² Π½Π° стратСгии. Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚:

  1. 3 стратСгии, связанныС Git-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚Π΅Π³, Π²Π΅Ρ‚ΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚;
  2. 1 стратСгия для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ².

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

ΠŸΡ€ΠΈ сохранСнии Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (monorepo), Π² Ρ‚Π΅Π³Π΅ ΠΎΠ±Ρ€Π°Π·Π°, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΌΠ΅Ρ‚Π°Ρ‚Π΅Π³Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ имя ΠΎΠ±Ρ€Π°Π·Π°: PROJECT:frontend-META-TAG. Для ΠΈΡ… раздСлСния ΠΌΡ‹ Π½Π΅ стали Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ спСцифичный Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Π° просто Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π»Π΅ΠΉΠ±Π» ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

NB: Если интСрСсно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° всё описанноС Π² исходном ΠΊΠΎΠ΄Π΅ werf, Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ PR 1684.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ большС внимания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ обоснованию нашСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°: ΠΏΡ€ΠΎ стратСгии тСгирования, хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π»Π΅ΠΉΠ±Π»Π°Ρ… ΠΈ процСсс ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ β€”ΠΎΠ±ΠΎ всём этом ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказано Π² Π½Π΅Π΄Π°Π²Π½Π΅ΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Дмитрия Бтолярова: Β«werf β€” наш инструмСнт для CI/CD Π² KubernetesΒ».

Π Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΡ

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ рССстров Π±Π΅Π· влоТСнности Π½Π΅ являлось Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ для нас ΠΈΠ»ΠΈ извСстных Π½Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ werf β€” вСдь всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ рССстр ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° условный Container Registry Π² Google Cloud)… Однако снятиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ограничСния выглядСло Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инструмСнт Π±Ρ‹Π» ΡƒΠ΄ΠΎΠ±Π΅Π½ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ DevOps-сообщСству. РСализуя Π΅Π³ΠΎ, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° очистки рССстра ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ, приятно ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ стало Π»Π΅Π³Ρ‡Π΅, Π° Ρƒ нас (ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… слоТностСй Π² дальнСйшСй ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ этой Ρ„ΠΈΡ‡ΠΈ Π½Π΅ прСдвидится.

ΠžΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ ΠΈ совсСм скоро ΠΌΡ‹ расскаТСм ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… нововвСдСниях Π² werf!

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

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