Π Π΅Π»ΠΈΠ· werf 1.1: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сборщикС сСгодня ΠΈ ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π Π΅Π»ΠΈΠ· werf 1.1: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сборщикС сСгодня ΠΈ ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

werf β€” наша GitOps CLI-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ для сборки ΠΈ доставки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes. Как ΠΈ ΠΎΠ±Π΅Ρ‰Π°Π»ΠΈ, Π²Ρ‹Ρ…ΠΎΠ΄ вСрсии v1.0 Π·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π» Π½Π°Ρ‡Π°Π»ΠΎ добавлСния Π² werf Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΈ пСрСсмотра ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Ρ€Π°Π΄Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ· v1.1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся большим шагом Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΈ Π·Π°Π΄Π΅Π»ΠΎΠΌ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ сборщика werf. ВСрсия доступна Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΊΠ°Π½Π°Π»Π΅ 1.1 ea.

Основа Ρ€Π΅Π»ΠΈΠ·Π° β€” это новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° стадий ΠΈ оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±ΠΎΠΈΡ… сборщиков (для Stapel ΠΈ Dockerfile). Новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ распрСдСлСнных сборок с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… хостов ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сборок Π½Π° ΠΎΠ΄Π½ΠΎΠΌ хостС.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… вычислСний Π½Π° этапС расчСта сигнатур стадий ΠΈ измСнСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² расчСта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Π±ΠΎΠ»Π΅Π΅ эффСктивныС. Π­Ρ‚Π° оптимизация ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ срСднСС врСмя сборок ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ werf. И холостыС сборки, ΠΊΠΎΠ³Π΄Π° всС стадии ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² кэшС stages-storage, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрыС. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запуск сборки ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Π·Π° 1 сСкунду! Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ касаСтся ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ стадий Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ werf deploy ΠΈ werf run.

Π’Π°ΠΊΠΆΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ появилась стратСгия тСгирования ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΏΠΎ содСрТимому β€” content-based tagging, которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ являСтся СдинствСнной Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΉ.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ нововвСдСния Π² werf v1.1, Π° Π·Π°ΠΎΠ΄Π½ΠΎ расскаТСм ΠΎ ΠΏΠ»Π°Π½Π°Ρ… Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅.

Π§Ρ‚ΠΎ измСнилось Π² werf v1.1?

Новый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ имСнования стадий ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° стадий ΠΈΠ· кэша

НовоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ стадии. Π’Π΅ΠΏΠ΅Ρ€ΡŒ каТдая сборка стадии Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя стадии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ состоит ΠΈΠ· 2-Ρ… частСй: сигнатура (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π² v1.0) плюс ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

НапримСр, ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΎΠ±Ρ€Π°Π·Π° стадии ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

… ΠΈΠ»ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

Π—Π΄Π΅ΡΡŒ:

  • SIGNATURE β€” это сигнатура стадии, которая прСдставляСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ содСрТимого стадии ΠΈ зависит ΠΎΡ‚ истории ΠΏΡ€Π°Π²ΠΎΠΊ Π² Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ содСрТимому;
  • TIMESTAMP_MILLISEC β€” это Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сборки Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°.

Алгоритм ΠΏΠΎΠ΄Π±ΠΎΡ€Π° стадий ΠΈΠ· кэша основан Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ родства Git-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

  1. Werf рассчитываСт сигнатуру Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стадии.
  2. Π’ stages-storage ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько стадий ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ сигнатурС. Werf Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ всС подходящиС ΠΏΠΎ сигнатурС стадии.
  3. Если тСкущая стадия связана с Git (git-archive, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ стадия с Git-ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ: install, beforeSetup, setup; ΠΈΠ»ΠΈ git-latest-patch), Ρ‚ΠΎ werf Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ стадии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π·Π²Π°Π½Π° сборка).
  4. Из ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ подходящих стадий выбираСтся ΠΎΠ΄Π½Π° β€” ΡΡ‚Π°Ρ€Π΅ΠΉΡˆΠ°Ρ ΠΏΠΎ Π΄Π°Ρ‚Π΅ создания.

Бтадия для Ρ€Π°Π·Π½Ρ‹Ρ… Git-Π²Π΅Ρ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ сигнатуру. Но werf ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ использованиС кэша, связанного с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΌΠ΅ΠΆΠ΄Ρƒ этих Π²Π΅Ρ‚ΠΎΠΊ, Π΄Π°ΠΆΠ΅ Ссли сигнатуры совпали.

β†’ ДокумСнтация.

Новый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ создания ΠΈ сохранСния стадий Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ стадий

Если Π²ΠΎ врСмя ΠΏΠΎΠ΄Π±ΠΎΡ€Π° стадий ΠΈΠ· кэша werf Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ подходящСй стадии, Ρ‚ΠΎ инициируСтся процСсс сборки Π½ΠΎΠ²ΠΎΠΉ стадии.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ нСсколько процСссов (Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… хостах) ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ сборку ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ стадии Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя. Werf ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ оптимистичной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ stages-storage Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сохранСния свСТСсобранного ΠΎΠ±Ρ€Π°Π·Π° Π² stages-storage. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° сборка Π½ΠΎΠ²ΠΎΠΉ стадии Π³ΠΎΡ‚ΠΎΠ²Π°, werf Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ stages-storage ΠΈ сохраняСт Ρ‚ΡƒΠ΄Π° свСТСсобранный ΠΎΠ±Ρ€Π°Π· Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π½Π΅ сущСствуСт подходящСго ΠΎΠ±Ρ€Π°Π·Π° (ΠΏΠΎ сигнатурС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ β€” см. Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° стадий ΠΈΠ· кэша).

БвСТСсобранный ΠΎΠ±Ρ€Π°Π· Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎ TIMESTAMP_MILLISEC (см. Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ имСнования стадий). Π’ случаС, Ссли Π² stages-storage Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ подходящий ΠΎΠ±Ρ€Π°Π·, werf отбросит свСТСсобранный ΠΎΠ±Ρ€Π°Π· ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· кэша.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· (самый быстрый), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€Π°Π²ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² stages-storage (ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ этот СдинствСнный ΠΎΠ±Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для всСх сборок). ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΆΠ΅ процСсс сборки Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ быстрый процСсс ΠΎΡ‚ сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ стадии ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ сборкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ.

β†’ ДокумСнтация.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сборщика Dockerfile

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ стадий для ΠΎΠ±Ρ€Π°Π·Π°, собираСмого ΠΈΠ· Dockerfile, состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ стадии β€” dockerfile. ΠŸΡ€ΠΈ вычислСнии сигнатуры считаСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Ρ„Π°ΠΉΠ»ΠΎΠ² context, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ сборкС. Π”ΠΎ этого ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ werf рСкурсивно ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» ΠΏΠΎ всСм Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму, просуммировав контСкст ΠΈ ΠΌΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Начиная с вСрсий v1.1, werf ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рассчитанныС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы, хранящиСся Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π’ основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° β€” git ls-tree. Алгоритм ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ записи Π² .dockerignore ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ рСкурсивно ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСобходимости. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΎΡ‚Π²ΡΠ·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ чтСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° context Π½Π΅ являСтся сущСствСнной.

Π’Π°ΠΊΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ провСряСт untracked-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΡ€ΠΈ нСобходимости ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π’ вСрсиях werf v1.1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ rsync-сСрвСр ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ². РаньшС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π² Π΄Π²Π° шага с использованиСм монтирования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· хост-систСмы.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² macOS большС Π½Π΅ ограничиваСтся Docker volumes, Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π° Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ρ‡Ρ‚ΠΎ ΠΈ Π² Linux ΠΈ Windows.

Content-based tagging

Werf v1.1 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ содСрТимому ΠΎΠ±Ρ€Π°Π·Π° β€” content-based tagging. Π’Π΅Π³ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Docker-ΠΎΠ±Ρ€Π°Π·ΠΎΠ² зависят ΠΎΡ‚ содСрТимого этих ΠΎΠ±Ρ€Π°Π·ΠΎΠ².

ΠŸΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ werf publish --tags-by-stages-signature ΠΈΠ»ΠΈ werf ci-env --tagging-strategy=stages-signature Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ сигнатурой стадий ΠΎΠ±Ρ€Π°Π·Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· тСгируСтся своСй собствСнной сигнатурой стадий этого ΠΎΠ±Ρ€Π°Π·Π°, которая рассчитываСтся ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ рСгулярная сигнатура ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· стадий Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±Ρ€Π°Π·Π°.

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° стадий ΠΎΠ±Ρ€Π°Π·Π° зависит ΠΎΡ‚:

  1. содСрТимого этого ΠΎΠ±Ρ€Π°Π·Π°;
  2. истории ΠΏΡ€Π°Π²ΠΎΠΊ Π² Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ этому содСрТимому.

Π’ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ всСгда Π΅ΡΡ‚ΡŒ холостыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ содСрТимого Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ±Ρ€Π°Π·Π°. НапримСр, ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с коммСнтариями ΠΈΠ»ΠΈ merge-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Git, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ±Ρ€Π°Π·.

ΠŸΡ€ΠΈ использовании content-based tagging Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π»ΠΈΡˆΠ½ΠΈΡ… пСрСзапусков pod’ΠΎΠ² прилоТСния Π² Kubernetes ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±Ρ€Π°Π·Π°, Π΄Π°ΠΆΠ΅ Ссли содСрТимоС ΠΎΠ±Ρ€Π°Π·Π° Π½Π΅ помСнялось. ΠšΡΡ‚Π°Ρ‚ΠΈ, это являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ мноТСство микросСрвисов ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π’Π°ΠΊΠΆΠ΅ content-based tagging являСтся Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ тСгирования, Ρ‡Π΅ΠΌ Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Git-Π²Π΅Ρ‚ΠΊΠ°ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТимоС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π½Π΅ зависит ΠΎΡ‚ порядка исполнСния pipeline’ΠΎΠ² Π² CI-систСмС для сборки Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠΈ.

Π’Π°ΠΆΠ½ΠΎ: начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° stages-signature β€” это СдинствСнная рСкомСндуСмая стратСгия тСгирования. ИмСнно ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ werf ci-env (Ссли явно Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ схСму тСгирования).

β†’ ДокумСнтация. Π­Ρ‚ΠΎΠΉ Ρ„ΠΈΡ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ посвящСна ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ публикация. ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠž (3 апрСля): Π‘Ρ‚Π°Ρ‚ΡŒΡ с подробностями ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π°.

Π£Ρ€ΠΎΠ²Π½ΠΈ логирования

Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ --log-quiet, --log-verbose, --log-debug.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ содСрТится ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:

Π Π΅Π»ΠΈΠ· werf 1.1: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сборщикС сСгодня ΠΈ ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

ΠŸΡ€ΠΈ использовании ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° (--log-verbose) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ werf:

Π Π΅Π»ΠΈΠ· werf 1.1: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сборщикС сСгодня ΠΈ ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (--log-debug), ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ werf, Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π»ΠΎΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ происходит взаимодСйствиС с Docker Registry, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСста, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тратится сущСствСнноС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

Π Π΅Π»ΠΈΠ· werf 1.1: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сборщикС сСгодня ΠΈ ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΏΠ»Π°Π½Ρ‹

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π΄Π°Π»Π΅Π΅ возмоТности с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ v1.1 станут доступны ΡƒΠΆΠ΅ Π² этой вСрсии, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… β€” Π² блиТайшСС врСмя. ОбновлСния ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π°Π²Ρ‚ΠΎΠ°ΠΏΠ΄Π΅ΠΉΡ‚Ρ‹ ΠΏΡ€ΠΈ использовании multiwerf. Π­Ρ‚ΠΈ возмоТности Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ v1.1, ΠΈΡ… появлСниС Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Docker Registry (ΠΠžΠ’ΠžΠ•)

  • ВСрсия: v1.1
  • Π‘Ρ€ΠΎΠΊΠΈ: ΠΌΠ°Ρ€Ρ‚
  • Issue

ЦСль β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ использовании werf.

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… собираСмся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

  • Default (library/registry)*,
  • AWS ECR,
  • Azure*,
  • Docker Hub,
  • GCR*,
  • GitHub Packages,
  • GitLab Registry*,
  • Harbor*,
  • Quay.

Π—Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ werf. Для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°, Π½ΠΎ с ограничСниями.

МоТно Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π΅ основныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • НСкоторыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Docker Registry API, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ очистку, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² werf. Π­Ρ‚ΠΎ справСдливо для AWS ECR, Docker Hub ΠΈ GitHub Packages.
  • Π§Π°ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅, nested repositories (Docker Hub, GitHub Packages ΠΈ Quay) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ UI ΠΈΠ»ΠΈ API (AWS ECR).

Π­Ρ‚ΠΈ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΡ‹ собираСмся Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ с использованиСм Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… API Ρƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’ эту Π·Π°Π΄Π°Ρ‡Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ тСстами ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ werf для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….

РаспрСдСлённая сборка ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (↑)

  • ВСрсия: v1.2 v1.1 (ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ возмоТности Π±Ρ‹Π» ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½)
  • Π‘Ρ€ΠΎΠΊΠΈ: ΠΌΠ°Ρ€Ρ‚-Π°ΠΏΡ€Π΅Π»ΡŒ ΠΌΠ°Ρ€Ρ‚
  • Issue

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, werf v1.0 ΠΈ v1.1 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ хостС для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сборки ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ дСплоя прилоТСния Π² Kubernetes.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ возмоТности распрСдСлСнной Ρ€Π°Π±ΠΎΡ‚Ρ‹ werf, ΠΊΠΎΠ³Π΄Π° сборка ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… хостах ΠΈ эти хосты Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ своС состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ сборками (Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ runner’ы), ΠΎΡ‚ werf трСбуСтся рСализация возмоТности использования Docker Registry Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° стадий.

Π Π°Π½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ werf Π΅Ρ‰Π΅ назывался dapp, Π² Π½Π΅ΠΌ Π±Ρ‹Π»Π° такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Однако ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с рядом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² werf.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ сборщика Π²Π½ΡƒΡ‚Ρ€ΠΈ pod’ΠΎΠ² Kubernetes, Ρ‚.ΠΊ. для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ зависимости ΠΎΡ‚ локального Docker-сСрвСра (Π² pod’Π΅ Kubernetes Π½Π΅Ρ‚ доступа ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Docker-сСрвСру, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сам процСсс Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Docker-сСрвСром ΠΏΠΎ сСти werf Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Kubernetes Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GitHub Actions (ΠΠžΠ’ΠžΠ•)

  • ВСрсия: v1.1
  • Π‘Ρ€ΠΎΠΊΠΈ: ΠΌΠ°Ρ€Ρ‚
  • Issue

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ werf (Ρ€Π°Π·Π΄Π΅Π»Ρ‹ reference ΠΈ guide), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ GitHub Action для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с werf.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ werf Π½Π° эфСмСрных runner’Π°Ρ….

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с CI-систСмой Π±ΡƒΠ΄Π΅Ρ‚ основана Π½Π° выставлСнии label’ΠΎΠ² Π½Π° pull-request’Ρ‹ для инициирования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий ΠΏΠΎ сборкС/Π²Ρ‹ΠΊΠ°Ρ‚Ρƒ прилоТСния.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с werf (↓)

  • ВСрсия: v1.1
  • Π‘Ρ€ΠΎΠΊΠΈ: ΡΠ½Π²Π°Ρ€ΡŒ-Ρ„Π΅Π²Ρ€Π°Π»ΡŒ Π°ΠΏΡ€Π΅Π»ΡŒ
  • Issue

Главная Ρ†Π΅Π»ΡŒ β€” Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° для развёртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ локально, Ρ‚Π°ΠΊ ΠΈ Π² production, Π±Π΅Π· слоТных дСйствий, Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ».

ΠžΡ‚ werf Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ прилоТСния для Π΄Π΅Π±Π°Π³Π°.

Новый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ очистки (ΠΠžΠ’ΠžΠ•)

  • ВСрсия: v1.1
  • Π‘Ρ€ΠΎΠΊΠΈ: Π°ΠΏΡ€Π΅Π»ΡŒ
  • Issue

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии werf v1.1 Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ cleanup Π½Π΅ прСдусмотрСна очистка ΠΎΠ±Ρ€Π°Π·ΠΎΠ² для схСмы тСгирования ΠΏΠΎ содСрТимому (content-based tagging) β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Π’Π°ΠΊΠΆΠ΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии werf (v1.0 ΠΈ v1.1) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ очистки для ΠΎΠ±Ρ€Π°Π·ΠΎΠ², ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ схСмам тСгирования: Git-Π²Π΅Ρ‚ΠΊΠ°, Git-Ρ‚Π΅Π³ ΠΈΠ»ΠΈ Git-ΠΊΠΎΠΌΠΌΠΈΡ‚.

ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для всСх схСм тСгирования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ очистки ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π½Π° основС истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Git:

  • Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ большС, Ρ‡Π΅ΠΌ N1 ΠΎΠ±Ρ€Π°Π·ΠΎΠ², связанных с N2 послСдними ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· git HEAD (Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Ρ‚Π΅Π³ΠΈ).
  • Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ большС, Ρ‡Π΅ΠΌ N1 ΠΎΠ±Ρ€Π°Π·ΠΎΠ²-стадий, связанных с N2 послСдними ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· git HEAD (Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Ρ‚Π΅Π³ΠΈ).
  • Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ всС ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ рСсурсах кластСра Kubernetes (ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС kube-контСксты Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ namespace’Ρ‹; ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ опциями).
  • Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ всС ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² манифСстах ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ рСсурсов, сохранСнных Π² Helm-Ρ€Π΅Π»ΠΈΠ·Π°Ρ….
  • ΠžΠ±Ρ€Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½, Ссли ΠΎΠ½ Π½Π΅ связан Π½ΠΈ с ΠΎΠ΄Π½ΠΈΠΌ HEAD ΠΈΠ· git (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сам ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ HEAD Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½) ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· манифСстов Π² кластСрС Kubernetes ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π°Ρ… Helm.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ сборка ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (↓)

  • ВСрсия: v1.1
  • Π‘Ρ€ΠΎΠΊΠΈ: ΡΠ½Π²Π°Ρ€ΡŒ-Ρ„Π΅Π²Ρ€Π°Π»ΡŒ Π°ΠΏΡ€Π΅Π»ΡŒ*

ВСкущая вСрсия werf собираСт ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹, описанныС Π² werf.yaml, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. НСобходимо Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ процСсс сборки нСзависимых стадий ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄.

* ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: срок сдвинут ΠΈΠ·-Π·Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ распрСдСлСнной сборки, которая Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ большС возмоТностСй ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ использованию werf с GitHub Actions. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΆΠ΅ сборка являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π°ΡŽΡ‰ΠΈΠΌ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ сборкС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Helm 3 (↓)

  • ВСрсия: v1.2
  • Π‘Ρ€ΠΎΠΊΠΈ: Ρ„Π΅Π²Ρ€Π°Π»ΡŒ-ΠΌΠ°Ρ€Ρ‚ ΠΌΠ°ΠΉ*

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Helm 3 ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… установок.

* ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Helm 3 Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ сущСствСнных возмоТностСй Π² werf, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Helm 3 (3-way-merge ΠΈ отсутствиС tiller) ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² werf. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, werf ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠΎΠΌΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ…. Однако этот ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ остаСтся Π² Π½Π°ΡˆΠΈΡ… ΠΏΠ»Π°Π½Π°Ρ… ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ осущСствлСн.

Jsonnet для описания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Kubernetes (↓)

  • ВСрсия: v1.2
  • Π‘Ρ€ΠΎΠΊΠΈ: ΡΠ½Π²Π°Ρ€ΡŒ-Ρ„Π΅Π²Ρ€Π°Π»ΡŒ Π°ΠΏΡ€Π΅Π»ΡŒ-ΠΌΠ°ΠΉ

Werf Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ описаниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Kubernetes Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Jsonnet. ΠŸΡ€ΠΈ этом werf останСтся совмСстимым с Helm ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° описания.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ слуТит Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ языка Go, ΠΏΠΎ ΠΎΡ†Π΅Π½ΠΊΠ΅ мноТСства людСй, ΠΈΠΌΠ΅ΡŽΡ‚ большой ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния, ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° этих шаблонов Ρ‚Π°ΠΊΠΆΠ΅ страдаСт.

Π’Π°ΠΊΠΆΠ΅ рассматриваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСдрСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм описания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Kubernetes (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kustomize).

Π Π°Π±ΠΎΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Kubernetes (↓)

  • ВСрсия: v1.2
  • Π‘Ρ€ΠΎΠΊΠΈ: Π°ΠΏΡ€Π΅Π»ΡŒ-ΠΌΠ°ΠΉ ΠΌΠ°ΠΉ-июнь

ЦСль: ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ сборку ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ доставку прилоТСния с использованиСм runner’ов Π² Kubernetes. Π’.Π΅. сборка Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ², ΠΈΡ… публикация, очистка ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ прямо ΠΈΠ· pod’ов Kubernetes.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, сначала трСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распрСдСлСнной сборки ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (см. ΠΏΡƒΠ½ΠΊΡ‚ Π²Ρ‹ΡˆΠ΅).

Π’Π°ΠΊΠΆΠ΅ трСбуСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ сборщика Π±Π΅Π· Docker-сСрвСра (Ρ‚.Π΅. Kaniko-подобная сборка ΠΈΠ»ΠΈ сборка Π² userspace).

Werf Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ сборку Π² Kubernetes Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Dockerfile, Π½ΠΎ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ своСго сборщика Stapel с ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ пСрСсборками ΠΈ Ansible.

Π¨Π°Π³ Π² сторону ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠœΡ‹ любим нашС сообщСство (GitHub, Telegram) ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё большС людСй ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ werf Π»ΡƒΡ‡ΡˆΠ΅, ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΌΡ‹ двиТСмся, ΠΈ участвовали Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

БовсСм Π½Π΅Π΄Π°Π²Π½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° GitHub project boards для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс нашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. БСйчас ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ блиТайшиС ΠΏΠ»Π°Π½Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ направлСниям:

ΠŸΡ€ΠΎΠ΄Π΅Π»Π°Π½Π° большая Ρ€Π°Π±ΠΎΡ‚Π° с issues:

  • Π£Π΄Π°Π»Π΅Π½Ρ‹ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅.
  • Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ, достаточному количСству Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ подробностСй.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ issues с идСями ΠΈ прСдлоТСниями.

Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ v1.1

ВСрсия доступна Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΊΠ°Π½Π°Π»Π΅ 1.1 ea (Π² ΠΊΠ°Π½Π°Π»Π°Ρ… stable ΠΈ rock-solid Ρ€Π΅Π»ΠΈΠ·Ρ‹ появятся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ стабилизации, ΠΎΠ΄Π½Π°ΠΊΠΎ ea сама ΠΏΠΎ сСбС ΡƒΠΆΠ΅ достаточно ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° для использования, Ρ‚.ΠΊ. ΠΏΡ€ΠΎΡˆΠ»Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Π½Π°Π»Ρ‹ alpha ΠΈ beta). АктивируСтся Ρ‡Π΅Ρ€Π΅Π· multiwerf ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° стадий ΠΈ оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ сборщика для Stapel ΠΈ Dockerfile сборщиков ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ возмоТности Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ распрСдСлСнныС ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ сборки Π² werf. Π”Π°Π½Π½Ρ‹Π΅ возмоТности вскорС появятся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅Π»ΠΈΠ·Π΅ v1.1 ΠΈ станут автоматичСски доступны Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π°Π²Ρ‚ΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ multiwerf).

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° стратСгия тСгирования ΠΏΠΎ содСрТимому ΠΎΠ±Ρ€Π°Π·ΠΎΠ² β€” content-based tagging, β€” которая стала стратСгиСй ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. А Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π»ΠΎΠ³ основных ΠΊΠΎΠΌΠ°Π½Π΄: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сущСствСнным шагом станСт Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ распрСдСлСнных сборок. РаспрСдСлСнныС сборки со Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ v1.0 стали Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ сборки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ большС цСнности werf: Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сборщиков ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° эфСмСрных сборщиков Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… CI/CD-систСмах, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ GitHub Actions. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сроки Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сборок Π±Ρ‹Π»ΠΈ сдвинуты. Однако ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скорСС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π΅ возмоТности.

Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° новостями! И Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ Π½Π°ΠΌ Π² GitHub, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ issue, Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ плюс, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ PR ΠΈΠ»ΠΈ просто ΠΏΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

P.S.

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

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ