๐ŸณDev/Team-R

CI/CD ๋„์ž…๊ธฐ-1. CI/CD ๋ž€ feat. ์šฐ๋ฆฌ ํŒ€์˜ ๋ธŒ๋žœ์น˜ ํ”Œ๋กœ์šฐ ์†Œ๊ฐœ

fortune.00 2023. 3. 12. 19:13
CI/CD๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋”์šฑ ์งง์€ ์ฃผ๊ธฐ๋กœ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. CI/CD์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์ง€์†์ ์ธ ํ†ตํ•ฉ, ์ง€์†์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต, ์ง€์†์ ์ธ ๋ฐฐํฌ์ž…๋‹ˆ๋‹ค. - redhat, CI/CD๋ž€?

 

 

์ €๋Š” ๋ฐ๋ธŒ์ฝ”์Šค์—์„œ ์ง„ํ–‰ํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ CI/CD ๋ฐ ์ธํ”„๋ผ ๊ฐœ๋ฐœ์„ ๋งก์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ์˜ ๊ฒฝํ—˜๊ธฐ๋ฅผ 5๋ถ€์— ๊ฑธ์ณ์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1๋ถ€์—์„œ๋Š” CI/CD์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ  ์„ ํƒ ์ด์œ ์™€ ํ•จ๊ป˜ ํŒ€์˜ ๋ธŒ๋žœ์น˜ ํ”Œ๋กœ์šฐ ์†Œ๊ฐœ๋ฅผ ๋‹ด์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

1. CI / CD๋ž€

์—ฌ๋Ÿฌ ๋ช…์ด์„œ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์€ ๊นŒ๋‹ค๋กญ๊ณ  ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ ๊ณผ์ •์ด ๊ธธ์–ด์ง€๋ฉด ํ†ตํ•ฉ์˜ ์–ด๋ ค์›€์€ ์ปค์ง€๊ณ , ์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ ์œ„ํ—˜์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ CI/CD๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ์˜ ํ†ตํ•ฉ์œผ๋กœ ์ธํ•ด, ๊ฐœ๋ฐœ ๋ฐ ์šด์˜ํŒ€์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

 

CI, Continuous Integration

  • ์ง€์†์  ํ†ตํ•ฉ์€ ์ž‘์€ ๋‹จ์œ„๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹œ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค
  • ๊ธฐ์กด ์ฝ”๋“œ์™€ ์ƒˆ๋กœ์šด ์ฝ”๋“œ ๊ฐ„์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด, CI๋ฅผ ํ†ตํ•ด ๋ฒ„๊ทธ๋ฅผ ๋” ๋น ๋ฅด๊ณ  ์ž์ฃผ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

 

CD, Continuous Delivery

  • ์ง€์†์  ์ œ๊ณต์€ ํ†ตํ•ฉ๋œ ์ฝ”๋“œ๋ฅผ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž๋™์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค

 

CD, Continuous Deploy

  • ์ง€์†์  ๋ฐฐํฌ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ”„๋กœ๋•์…˜์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆํ•˜๋Š” ์ž‘์—…์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด, ์‚ฌ์šฉ์ž์˜ ํ”ผ๋“œ๋ฐฑ์„ ์ง€์†์ ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ณ  ํ†ตํ•ฉํ•˜๋Š” ์ผ์ด ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค

 

ํ•„์š”์„ฑ

์—ฌ๋Ÿฌ ๋ถ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ ์ˆ˜์ž‘์—…์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ์™€ ์ƒˆ๋กœ์šด ์ฝ”๋“œ ๊ฐ„์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ด๋„, ๋”์šฑ ์ž์ฃผ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CI/CD ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•ญ์ƒ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ์ž๋“ค์€ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์— ๋” ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. CI / CD ๋น„๊ต ๋ถ„์„ : Jenkins vs Github Action

๋Œ€ํ‘œ์ ์ธ CI/CD ๋„๊ตฌ์—๋Š” Jenkins์™€ Github Action๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Jenkins

  • ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ์ž๋™ํ™” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค
  • ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•ด ์†Œ์Šค์ฝ”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํ†ตํ•ฉ๊ณผ ๋ฐฐํฌ๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
  • ๋Œ€์‹œ ๋ณด๋“œ ๊ธฐ๋Šฅ๊ณผ ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค

 

Github Action

  • Github์—์„œ ์ œ๊ณตํ•˜๋Š” SaaS(Software as a Service) ์ž…๋‹ˆ๋‹ค
  • ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ์˜ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๋ฅผ ์‰ฝ๊ฒŒ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • Github์—์„œ ์ผ์–ด๋‚˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค

 

์ตœ์ข… ๊ฒฐ์ • : Github Action

๊ฒฐ์ •์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์€ “๊ฐ„๋‹จํ•จ”์ด์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” 2-3์ฃผ์˜ ์งง์€ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ณ , ํ”„๋กœ์ ํŠธ ๋ชฉ์  ์ƒ Spring์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ด ์ค‘์‹ฌ์ด ๋˜์–ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

1. ํด๋ผ์šฐ๋“œ์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ์–ด๋–ค ์„ค์น˜๋„ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค

Jenkins๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„๋ฅผ ๋„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Github Action์€ ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ์„ค์ • ๊ณผ์ •์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

 

2. Github ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

ํŒ€์€ Github Action์„ ์‚ฌ์šฉํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, ์ด๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด Github Action์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. Github์„ ์‚ฌ์šฉํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด์•ˆ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

Github์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด Github ๊ณ„์ •์œผ๋กœ ๊ถŒํ•œ๊ณผ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Jenkins๋Š” ์ง์ ‘ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

3. ํŒ€์˜ ๊นƒ ๋ธŒ๋žœ์น˜ ํ”Œ๋กœ์šฐ ์†Œ๊ฐœ

ํŒ€์˜ ๊นƒ ๋ธŒ๋žœ์น˜ ํ”Œ๋กœ์šฐ๋Š” ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ณผ์ •์—์„œ github action์ด ์ ์šฉ๋˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

ํŒ€์˜ ๋ธŒ๋žœ์น˜๋Š” ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • Main : ์ฃผ์š” ๋ธŒ๋žœ์น˜๋กœ, ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • Develop : ์ฃผ์š” ๋ธŒ๋žœ์น˜๋กœ, ๋ฆด๋ฆฌ์ฆˆ์™€ ๋ฐฐํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๋ธŒ๋žœ์น˜
  • Feature : ์ด์Šˆ๋ฅผ ๋‹จ์œ„๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ธŒ๋žœ์น˜

 

Feature → (pull request) → Develop

๊ฐ€์žฅ ๋จผ์ € ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ด์Šˆ ๋‹จ์œ„๋กœ ์ •๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ถ„์—… ์•„๋ž˜ ๊ฐ์ž ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ feature ๋ธŒ๋žœ์น˜์˜ ๊ฐœ๋ฐœ์ด ์ข…๋ฃŒ๋˜๋ฉด dev์— pull request๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. github action์„ ํ†ตํ•ด, ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ์™€ ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

 

Feature → (push) → Develop

๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จ๋œ ํ•ด๋‹น feature์€ dev์— ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ dev ๋ธŒ๋žœ์น˜๋Š” push(merge)๊ฐ€ ๋˜๋ฉด, github action์„ ํ†ตํ•ด CI/CD๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ์ด ํ†ตํ•ฉ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ, ๋ฆด๋ฆฌ์ฆˆ, ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ํ†ตํ•ฉ๋œ feature ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ๋ณด๋‹ค ๋งŽ์€ ๋ฆด๋ฆฌ์ฆˆ์™€ ๋ฐฐํฌ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ dev์—์„œ ๋ฐ”๋กœ ๋ฆด๋ฆฌ์ฆˆ์™€ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ํ”Œ๋กœ์šฐ๋ฅผ ๊ณ„ํšํ–ˆ์Šต๋‹ˆ๋‹ค.

 

4. ๋งˆ๋ฌด๋ฆฌ

์ด๋ ‡๊ฒŒ CI/CD ๋„๊ตฌ๋กœ Github Action์„ ์‚ฌ์šฉํ•œ ๊ณผ์ •๊ณผ ๊นƒ ๋ธŒ๋žœ์น˜ ํ”Œ๋กœ์šฐ๋ฅผ ์†Œ๊ฐœํ•˜๋ฉด์„œ ๋Œ€๋žต์ ์ธ ์ ์šฉ ํ๋ฆ„๋„ ์„ค๋ช…ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŽธ์—๋Š” docker์™€ docker compose๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฆด๋ฆฌ์ฆˆํ•˜๊ณ  ๋ฐฐํฌํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

5. ๋ ˆํผ๋Ÿฐ์Šค

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

https://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS2262224323

https://hoi5088.medium.com/ci-cd-๊ฐœ๋…-4e6a45dbcfe2

https://wookiist.dev/155