버전 관리 & Build

์ „๋ฌธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋ช…ํ™•ํ•œ release ์‹๋ณ„์ž, ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ build ๋ช…๋ น, ์†Œ์Šค ์ฝ”๋“œ์™€ ๋ฐฐํฌ๋œ ์•„ํ‹ฐํŒฉํŠธ ์‚ฌ์ด์˜ ์ถ”์  ๊ฐ€๋Šฅ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
Lino๋Š” ์„œ๋น„์Šค์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์ธ SemVer ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๊ณ , release์šฉ container image๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ์ด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ

Lino ํ”„๋กœ์ ํŠธ์—๋Š” ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์€ ์ž์ฒด ๋ฒ„์ „์„ ๊ฐ€์ง€๋ฏ€๋กœ, ํ•œ ์„œ๋น„์Šค์˜ ์ž‘์€ ์ˆ˜์ •์ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ธ์œ„์ ์ธ release๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” API, workers, web apps, migrations, ํ†ตํ•ฉ ๊ณ„์•ฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ ์†๋„๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆํ˜• ๋ฐ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜ ๋ฒ„์ „์€ version.txt๋ผ๋Š” ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ํŒŒ์ผ์€ src/Services/<ServiceName>/version.txt์— ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ src/WebApps/<WebAppName>/version.txt์— ์žˆ์Šต๋‹ˆ๋‹ค. Lino CLI๋Š” ๋ฒ„์ „ ๋ชฉ๋ก ์กฐํšŒ, ํ™•์ธ, ์ฆ๊ฐ€, ๋ฒ„์ „์ด ์ง€์ •๋œ build ์ƒ์„ฑ ์‹œ ์ด ํŒŒ์ผ๋“ค์„ ์ฝ์Šต๋‹ˆ๋‹ค.

Lino๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” SemVer ๊ทœ์น™

MAJOR.MINOR.PATCH
  • PATCH๋Š” ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ, ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ •, ์ž‘์€ ๋‚ด๋ถ€ ๊ฐœ์„ , ๊ณต๊ฐœ contract๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • MINOR๋Š” ๊ฐ€์šด๋ฐ ์ˆซ์ž๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  patch๋ฅผ 0์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ํ˜ธํ™˜ ๊ธฐ๋Šฅ, ์ƒˆ endpoints, ์„ ํƒ์  ํ•„๋“œ ๋˜๋Š” ์ถ”๊ฐ€์  ๋™์ž‘์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • MAJOR๋Š” ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  minor์™€ patch๋ฅผ 0์œผ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. API contract๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๊ฑฐ๋‚˜ ๋™์ž‘์ด ์˜๋„์ ์œผ๋กœ ๋Œ€์ฒด๋˜์–ด ์†Œ๋น„์ž๊ฐ€ ์ ์‘ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: 1.0.0์€ ์ฒซ ์•ˆ์ • ๋ฒ„์ „, 1.0.1์€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ •, 1.1.0์€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ์ƒˆ ๊ธฐ๋Šฅ ๋˜๋Š” breaking change ์—†๋Š” ์ƒˆ endpoints, 2.0.0์€ ํด๋ผ์ด์–ธํŠธ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์„ ํฌํ•จํ•œ release๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฒ„์ „ ํ™•์ธ

ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์„œ๋น„์Šค์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜„์žฌ ๋ฒ„์ „์„ ๋ณด๋ ค๋ฉด lino version list๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

lino version list

ํŠน์ • ์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „์„ ํ™•์ธํ•ด์•ผ ํ•  ๋•Œ๋Š” lino version show๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ๋Œ€์ƒ์ด ์„œ๋น„์Šค์ธ์ง€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ์ง€ ๋ฌป๊ณ , ํ•ด๋‹น version.txt ํŒŒ์ผ์—์„œ ์ฝ์€ ๋ฒ„์ „์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

lino version show

๋ฒ„์ „ ์ฆ๊ฐ€

์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒˆ release ์ค€๋น„๊ฐ€ ๋˜์—ˆ์„ ๋•Œ lino version bump๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

lino version bump
  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ๋Š” ๊ฐ ํ•ญ๋ชฉ๊ณผ ํ˜„์žฌ ๋ฒ„์ „์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.
  3. ์ฆ๊ฐ€ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค: patch, minor ๋˜๋Š” major.
  4. ์‘๋‹ต์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Lino๋Š” ์„ ํƒ๋œ version.txt ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ƒˆ ๋ฒ„์ „์ด ํฌํ•จ๋œ ํ‘œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์‹คํ–‰์€ ๋ช…ํ™•ํ•œ ๋ณ€๊ฒฝ ์ถ”์ ์„ ์œ ์ง€ํ•˜๊ณ  release ๊ด€ํ–‰๊ณผ์˜ ์ผ๊ด€์„ฑ์„ ๋†’์ด๋ฉฐ CI/CD pipelines์™€์˜ ์ •๋ ฌ์„ ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ๋” ์ด์ƒ ๋–จ์–ด์ ธ ์žˆ๋Š” ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋œ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ ๋ณ€๊ฒฝ์€ release์˜ ๊ธฐ์ˆ ์  ์˜ํ–ฅ๊ณผ ํ•จ๊ป˜ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค migration์ด ์„œ๋น„์Šค ๋ฒ„์ „์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๊ณ , API ์†Œ๋น„์ž๋Š” contract notes๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ†ตํ•ฉ ์ด๋ฒคํŠธ๋Š” ํ˜ธํ™˜์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ ๊ฐ€๊นŒ์ด์— ๋‘๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์ด ๋ช…ํ™•ํ•ด์ง€๊ณ  ๊ฐ์‚ฌํ•˜๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

major ์ฆ๊ฐ€ ์ „์—๋Š” ๊ณต๊ฐœ API, ์ด๋ฒคํŠธ contract, migrations, ํด๋ผ์ด์–ธํŠธ ํ˜ธํ™˜์„ฑ, ์™ธ๋ถ€ ์†Œ๋น„์ž๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. minor ์ฆ๊ฐ€ ์ „์—๋Š” ์ƒˆ ๋™์ž‘์ด ์ถ”๊ฐ€์ ์ž„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. patch ์ „์—๋Š” ๋ณ€๊ฒฝ์ด ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๊ณ  ์‚ฌ์šฉ ๊ธฐ๋Œ€๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Build์™€ ์ปจํ…Œ์ด๋„ˆํ™”

๋™์˜์ƒ๊ณผ ์ผ์ƒ ๊ฐœ๋ฐœ์—์„œ๋Š” ๊ฐ ๋ชจ๋ธ๋ง ๋‹จ๊ณ„ ํ›„ ์ƒ์„ฑ๋œ ์†”๋ฃจ์…˜์ด ์—ฌ์ „ํžˆ ์ปดํŒŒ์ผ๋˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด dotnet build๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. lino build ๋ช…๋ น์˜ ๋ชฉ์ ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์„œ๋น„์Šค์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ .NET container publish profile๋กœ Release ๋ชจ๋“œ์—์„œ ๊ฒŒ์‹œํ•˜์—ฌ release ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ„๋ฆฌ๋Š” ๋‹จ์ˆœํ•œ ์ปดํŒŒ์ผ ๊ฒ€์ฆ์„ ์ „๋‹ฌ ํŒจํ‚ค์ง€๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์—๋Š” ์˜ค๋ฅ˜๋ฅผ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์œ„ํ•ด dotnet build๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋ฒ„์ „์„ ๋ฐ›๊ณ  container image๊ฐ€ ๋˜์–ด registry ๋˜๋Š” deploy pipeline์œผ๋กœ ์ด๋™ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์„ ๋•Œ lino build๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

lino build๊ฐ€ ํ•˜๋Š” ์ผ

Lino ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

lino build

CLI๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์™€ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ , ์–ด๋–ค ์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ build์— ํฌํ•จํ• ์ง€ ๋ฌป๊ณ , ์ด์–ด์„œ ๋ฒ„์ „์„ ์œ ์ง€ํ• ์ง€ ์ฆ๊ฐ€์‹œํ‚ฌ์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค. ์ฆ๊ฐ€๊ฐ€ ์„ ํƒ๋˜๋ฉด Lino๋Š” build ๋ช…๋ น์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ํ•ด๋‹น version.txt๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

backend๋Š” ์‹คํ–‰ํ•  ์ •ํ™•ํ•œ ๋ช…๋ น์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด ๋ช…๋ น๋“ค์€ dotnet publish์™€ -c Release, -p:PublishProfile=DefaultContainer, -p:ContainerRepository, -p:ContainerImageTag, -p:ContainerLabelVersion๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. image tag์™€ container version label์€ release์— ์„ ํƒ๋œ ๋™์ผํ•œ SemVer ๊ฐ’์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒŒ์‹œ ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ฉฐ, ํ˜„์žฌ SemVer ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ container image๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์•„ํ‹ฐํŒฉํŠธ์— ํ‘œ์ค€ํ™”๋œ ์ด๋ฆ„, tag, metadata๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ๋˜๋Š” repository ์ด๋ฆ„

Lino๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ container repository๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์™€ ํ•ญ๋ชฉ ์ด๋ฆ„์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค:

  • ๋‹จ์ˆœ ์„œ๋น„์Šค API: <project-name>/services/<service-name>-api:1.2.3
  • ๋ชจ๋“ˆํ˜• ์„œ๋น„์Šค host: <project-name>/services/<service-name>-host:1.2.3
  • Blazor ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: <project-name>/webapps/<webapp-name>:1.2.3

์ด ๊ทœ์น™์€ ์„œ๋น„์Šค API, ๋ชจ๋“ˆํ˜• hosts, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ registry์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ  release ๋ฒ„์ „์„ tag์— ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ˜๋ณต์ ์ธ ์ˆ˜๋™ ๊ฒฐ์ •์„ ์ œ๊ฑฐํ•˜๊ณ  ํ™˜๊ฒฝ, CI/CD scripts, ์šด์˜ ๋ฌธ์„œ ๊ฐ„ ์ฐจ์ด๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

Registries์— ๊ฒŒ์‹œ

์ƒ์„ฑ๋œ images๋Š” deploy ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” registry์— ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • Docker Hub
  • GitHub Container Registry
  • AWS ECR
  • Azure Container Registry
  • ๊ธฐํƒ€ OCI ํ˜ธํ™˜ registry.

๊ฐ€๋Šฅํ•˜๋ฉด floating tags ๋Œ€์‹  1.2.3 ๊ฐ™์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ version tag๋ฅผ ๊ฐ€๋ฆฌ์ผœ deployํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด rollback, ๊ฐ์‚ฌ, buildยท๊ฒŒ์‹œยท๋ฐฐํฌ๋œ ๋‚ด์šฉ์˜ ๋น„๊ต๊ฐ€ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

๊ถŒ์žฅ release ํ๋ฆ„

  1. ํŒจํ‚ค์ง• ์ „์— ํ”„๋กœ์ ํŠธ ํ…Œ์ŠคํŠธ์™€ dotnet build๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  2. lino version list๋กœ ํ˜„์žฌ ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ณ  ์–ด๋–ค ์„œ๋น„์Šค ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  3. lino build๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ˜„์žฌ ๋ฒ„์ „์„ ์œ ์ง€ํ• ์ง€ patch, minor ๋˜๋Š” major ์ฆ๊ฐ€๋ฅผ ์ ์šฉํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒ์„ฑ๋œ container images๋ฅผ Docker Hub, GitHub Container Registry, AWS ECR, Azure Container Registry ๋˜๋Š” ๋‹ค๋ฅธ ํ˜ธํ™˜ registry์ฒ˜๋Ÿผ deploy ํ”Œ๋žซํผ์ด ์‚ฌ์šฉํ•˜๋Š” registry์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.
  5. ์ถ”์  ๊ฐ€๋Šฅํ•œ version tag๋ฅผ ์ฐธ์กฐํ•˜์—ฌ deployํ•˜๊ณ  changelog, migrations, rollback plan์„ ๊ฐ™์€ release์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

secrets, production connection strings, ํ™˜๊ฒฝ๋ณ„ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ƒ์„ฑ๋œ images ์•ˆ์— ๋„ฃ์ง€ ๋งˆ์„ธ์š”. ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ user secrets, CI/CD secret vault ๋˜๋Š” deploy ํ”Œ๋žซํผ์˜ secret ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ด ํ๋ฆ„์—์„œ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ build๊ฐ€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ๊ธฐ๋ก๋œ ๋™์ผํ•œ SemVer ๊ฐ’์ด container tag์™€ release metadata๋กœ ์‚ฌ์šฉ๋˜์–ด ์†Œ์Šค ์ฝ”๋“œ, migrations, API contracts, ํ†ตํ•ฉ ์ด๋ฒคํŠธ, ๋ฐฐํฌ๋œ ์•„ํ‹ฐํŒฉํŠธ ์‚ฌ์ด์˜ ์ถ”์  ๊ฐ€๋Šฅ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

처리되지 않은 오류가 발생했습니다. 새로 고침 ๐Ÿ—™