๐Ÿ–ฅFrontEnd/ํ”„๋ก ํŠธ์—”๋“œ

TIL) ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค CI/CD, CI/CD๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ Tools

hellohailie 2022. 8. 8. 13:52

 

โ–บ๋ฐฐํฌ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ : ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ด€๋ฆฌ๋ถ€ํ„ฐ ์‹ค์ œ ์„œ๋น„์Šค๋กœ์˜ ๋ฐฐํฌ ๊ณผ์ •์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ตฌ์กฐ.

 

1. Source ๋‹จ๊ณ„ : ์›๊ฒฉ ์ €์žฅ์†Œ์— ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š” ์†Œ์Šค ์ฝ”๋“œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰

2. Build ๋‹จ๊ณ„ : Source ๋‹จ๊ณ„์—์„œ ์ „๋‹ฌ๋ฐ›์€ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ, ๋นŒ๋“œ, ํ…Œ์ŠคํŠธํ•˜์—ฌ ๊ฐ€๊ณตํ•œ๋‹ค. ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

3. Deploy ๋‹จ๊ณ„ : Build ๋‹จ๊ณ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฌผ์„  ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

 


โ–บCI/CD ํŒŒ์ดํ”„๋ผ์ธ

โœ”๏ธ ์ง€์†์  ํ†ตํ•ฉ (CI : continuous integration)

ํŒ€ ๊ตฌ์„ฑ์›์ด ๊ฐ์ž์˜ ์ž‘์—…์„ ์ž์ฃผ ํ†ตํ•ฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ์‹.

Code : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ ์ €์žฅ์†Œ์— push & merge / ๋ชจ๋“  ๊ฐœ๋ฐœํŒ€์ด ์ฝ”๋“œ ๋ณ€ํ™” ํ™•์ธ๊ฐ€๋Šฅ(ํˆฌ๋ช…ํ•จ)

Build : ์ฝ”๋“œ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ (์œ ๋‹› ํ…Œ์ŠคํŠธ ํ›„) build

Test : ์ฝ”๋“œ ๋นŒ๋“œ์˜ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์™€ ์ž˜ ํ†ตํ•ฉ๋˜๋Š”์ง€ ํ™•์ธ

 

** ๋นŒ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. 

๋ฒˆ๋“ค๋ง๋„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋” ์ž˜ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๋นŒ๋“œ ๊ณผ์ • ์ค‘ ํ•˜๋‚˜๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (๋นŒ๋“œ๋ผ๊ณ  ํ†ต์šฉ๋˜๊ธฐ๋„ ํ•จ.)

 

์žฅ์ 

1. ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ = ์ฃผ๊ธฐ์ ์œผ๋กœ merge๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— merge ์ถฉ๋Œ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. 

2. ๋ฌธ์ œ์ ์„ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌ = merge๋˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋“ค์€ ์ž๋™์œผ๋กœ build๋˜๊ณ , test ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ๊ฒฐํ•จ์ด๋‚˜ ๋ฌธ์ œ์ ์„ ๋น ๋ฅด๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

3. 2์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ์  ๋น ๋ฅด๊ฒŒ ์ˆ˜์ • ๊ฐ€๋Šฅ = ์ฃผ๊ธฐ์ ์œผ๋กœ merge๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋„ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฌธ์ œ์ ์„ ํ™•์ธ ๊ฐ€๋Šฅํ•ด์„œ ๋ฒ„๊ทธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

4. ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ ํ–ฅ์ƒ = CI๋ฅผ ์ž˜ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ unit test๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

โœ”๏ธ ์ง€์†์  ๋ฐฐํฌ (CD : continuous delivery / deployment)

์ง€์†์  ํ†ตํ•ฉ ๊ณผ์ •์ด ์›ํ™œํ•˜๊ฒŒ ๋๋‚˜๋ฉด ๋ฐ”๋กœ ๊ณ ๊ฐ์—๊ฒŒ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ.

Release : ๋นŒ๋“œ๊นŒ์ง€ ๋ชจ๋‘ ์ค€๋น„๋˜์—ˆ๊ณ , ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”์ง€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€๊ณ„์ž๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋‹จ๊ณ„.

์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋„ฃ์„์ง€, ํ•ด๋‹น ๋ฆด๋ฆฌ์ฆˆ๋Š” ๋ฐฐํฌ๋ฅผ ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„๋กœ ์—ฌ๋Ÿฌ ์˜์‚ฌ๊ฒฐ์ •์ด ์ด๋ฃจ์–ด์ง„๋‹ค. 

Deploy : ๋ฐฐํฌ

Operation : ๋ฐฐํฌ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹ค์ œ ์šด์šฉํ•˜๋Š” ๊ณผ์ •. ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ์ถฉ๋ถ„ํžˆ ๋ฐ›์•„ ๊ธฐํš์— ๋ฐ˜์˜ํ•œ๋‹ค. 

 

์š”์ฆ˜์—๋Š” ๋ฒ„์ „ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ์ž˜ ๊ธฐ๋กํ•ด๋‘๊ณ  ๋ฐ”๋กœ๋ฐ”๋กœ ๋ฐฐํฌํ•˜๋Š” ์‚ฌ๋ก€๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค. 


โ–บ๊ฒฐ๋ก 

๋” ์ž์ฃผ ์ฝ”๋“œ๋ฅผ ํ•ฉ์น˜๊ณ , ๋” ์ž์ฃผ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•˜์ž, ๋” ์ž์ฃผ ๊ณ ๊ฐ์—๊ฒŒ ๋ณด์—ฌ์ฃผ์ž!

=> ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•ด์•ผํ•œ๋‹ค. 

hello world๋ผ๋„ ์žˆ์œผ๋ฉด main branch์— pull request์— merge ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฐํฌํ•˜๋Š”๊ฑธ ์ถ”์ฒœํ•จ.


โ–บCI/CD๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ Tools!

 

Buildkite

GitHub Actions

GitLab CI/CD

Bitbucket Pipelines

circleci

Vercel

Netlify

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“