Версионирование и Build

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ прилоТСниям Π½ΡƒΠΆΠ½Ρ‹ понятныС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ release, воспроизводимыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ build ΠΈ Ρ‚Ρ€Π°ΡΡΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΌΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ.
Lino управляСт нСзависимыми SemVer-вСрсиями для сСрвисов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти вСрсии ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ container images для release.

НСзависимоС вСрсионированиС

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Lino ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько сСрвисов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ элСмСнта Π΅ΡΡ‚ΡŒ собствСнная вСрсия, поэтому нСбольшоС исправлСниС Π² ΠΎΠ΄Π½ΠΎΠΌ сСрвисС Π½Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ искусствСнный release всСй систСмы. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ распрСдСлСнных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, Π³Π΄Π΅ APIs, workers, web apps, migrations ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ вСрсия хранится Π² простом тСкстовом Ρ„Π°ΠΉΠ»Π΅ version.txt. Для сСрвисов Ρ„Π°ΠΉΠ» находится Π² src/Services/<ServiceName>/version.txt. Для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ½ находится Π² src/WebApps/<WebAppName>/version.txt. Lino CLI Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ списка, просмотрС, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ вСрсии ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ вСрсионированных builds.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ SemVer, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Lino

MAJOR.MINOR.PATCH
  • PATCH ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ послСднСС число ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для совмСстимых исправлСний, Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.
  • MINOR ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ срСднСС число ΠΈ сбрасываСт patch Π² ноль. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎΠ²Ρ‹Ρ… endpoints, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ повСдСния.
  • MAJOR ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число ΠΈ сбрасываСт minor ΠΈ patch Π² ноль. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли API contract измСнился нСсовмСстимо ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: 1.0.0 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, 1.0.1 совмСстимоС исправлСниС, 1.1.0 Π½ΠΎΠ²ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ endpoints Π±Π΅Π· breaking changes, Π° 2.0.0 release с измСнСниями, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌΠΈ обновлСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… вСрсий

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ lino version list, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ вСрсии всСх сСрвисов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

lino version list

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ lino version show, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвиса ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния. Команда ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, являСтся Π»ΠΈ Ρ†Π΅Π»ΡŒ сСрвисом ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΡƒΡŽ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° version.txt.

lino version show

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСрсии

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ lino version bump, ΠΊΠΎΠ³Π΄Π° сСрвис ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ release:

lino version bump
  1. ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· корня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько сСрвисов ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Prompt ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт с Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсиСй.
  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ увСличСния: patch, minor ΠΈΠ»ΠΈ major.
  4. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. Lino обновляСт Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ version.txt ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ вСрсиями.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ запуск сохраняСт понятноС отслСТиваниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ с release-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ с CI/CD pipelines. НомСр вСрсии пСрСстаСт Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΡŒΡŽ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ измСнился.

ИзмСнСния вСрсии Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ вмСстС с тСхничСским влияниСм release. Database migration ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана с вСрсиСй сСрвиса, потрСбитСлям API ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ contract notes, Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ событиям ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ вСрсии рядом с Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ элСмСнтом Π΄Π΅Π»Π°Π΅Ρ‚ эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ явными ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для Π°ΡƒΠ΄ΠΈΡ‚Π°.

ΠŸΠ΅Ρ€Π΅Π΄ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ major ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ APIs, event contracts, migrations, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ minor ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ являСтся Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ. ΠŸΠ΅Ρ€Π΅Π΄ patch ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ совмСстимо ΠΈ Π½Π΅ мСняСт оТидания использования.

Build ΠΈ контСйнСризация

Π’ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ dotnet build часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сгСнСрированноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ компилируСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ этапа модСлирования. Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ lino build другая Ρ†Π΅Π»ΡŒ: ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ сСрвисы ΠΈ Π²Π΅Π±-прилоТСния ΠΊ release, публикуя ΠΈΡ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Release с ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ container .NET.

Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ позволяСт Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ компиляции ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚ поставки. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ dotnet build Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ошибки Ρ€Π°Π½ΡŒΡˆΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ lino build, ΠΊΠΎΠ³Π΄Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ, ΡΡ‚Π°Ρ‚ΡŒ container image ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² registry ΠΈΠ»ΠΈ deploy pipeline.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ lino build

ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· корня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Lino:

lino build

CLI провСряСт Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ сСрвисы ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² build, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π΅. Когда Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅, Lino обновляСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ version.txt ΠΏΠ΅Ρ€Π΅Π΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ build-ΠΊΠΎΠΌΠ°Π½Π΄.

Backend Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для выполнСния. БСйчас эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ dotnet publish с -c Release, -p:PublishProfile=DefaultContainer, -p:ContainerRepository, -p:ContainerImageTag ΠΈ -p:ContainerLabelVersion. Tag ΠΎΠ±Ρ€Π°Π·Π° ΠΈ label вСрсии container ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SemVer, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ для release.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ процСсс ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ сСрвиса ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния, примСняСт Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ container image Π½Π° основС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ SemVer-вСрсии ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρƒ стандартизированныС имя, tag ΠΈ metadata.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° repositories

Lino Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ элСмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСдсказуСмыС container repositories:

  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ service API: <project-name>/services/<service-name>-api:1.2.3
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ service host: <project-name>/services/<service-name>-host:1.2.3
  • Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Blazor: <project-name>/webapps/<webapp-name>:1.2.3

Π­Ρ‚Π° конвСнция раздСляСт service APIs, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ hosts ΠΈ Π²Π΅Π±-прилоТСния Π² registry, сохраняя release-Π²Π΅Ρ€ΡΠΈΡŽ Π² tag. Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ устраняСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ сниТаСт расхоТдСния ΠΌΠ΅ΠΆΠ΄Ρƒ окруТСниями, CI/CD scripts ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² registries

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ images ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² registry, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ вашСй deploy-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ:

  • Docker Hub
  • GitHub Container Registry
  • AWS ECR
  • Azure Container Registry
  • любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ OCI-совмСстимый registry.

По возмоТности выполняйтС deploy с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ нСизмСняСмых version tags, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1.2.3, вмСсто ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… tags. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ rollback, Π°ΡƒΠ΄ΠΈΡ‚ ΠΈ сравнСниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ собрано, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ release-процСсс

  1. ЗапуститС тСсты ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ dotnet build, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ.
  2. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ вСрсии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lino version list ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ сСрвисы ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния измСнились.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ lino build ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ тСкущая вСрсия сохранСна ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ patch, minor ΠΈΠ»ΠΈ major.
  4. ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ сгСнСрированныС container images Π² registry, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ развСртывания, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Docker Hub, GitHub Container Registry, AWS ECR, Azure Container Registry ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ совмСстимый registry.
  5. Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, ΡΡΡ‹Π»Π°ΡΡΡŒ Π½Π° трассируСмыС version tags, ΠΈ Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ changelog, migrations ΠΈ rollback plan связанными с Ρ‚Π΅ΠΌ ΠΆΠ΅ release.

НС ΠΏΠΎΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ secrets, production connection strings ΠΈΠ»ΠΈ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ окруТСния Π²Π½ΡƒΡ‚Ρ€ΡŒ сгСнСрированных images. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния, user secrets для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° secrets Π² CI/CD ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ secrets deploy-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ этом процСссС вСрсионированиС ΠΈ build ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ связанными: ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SemVer, записанноС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ container tag ΠΈ ΠΊΠ°ΠΊ release metadata, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ Ρ‚Ρ€Π°ΡΡΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ, migrations, API contracts, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ событиями ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΌΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ.

Произошла необработанная ошибка. Обновить πŸ—™