[Daily morning study] Jenkins vs. GitHub Actions ๋น„๊ต

#daily morning study

Image


Jenkins vs. GitHub Actions ๋น„๊ต

๊ฐœ์š”

CI/CD(์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ)๋Š” ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด๋‹ค. Jenkins์™€ GitHub Actions๋Š” ์ด๋Ÿฌํ•œ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋“ค์ด๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๋‘ ๋„๊ตฌ์˜ ์žฅ๋‹จ์ , ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ๋‹ค.

1. Jenkins ์†Œ๊ฐœ

Jenkins๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค CI/CD ๋„๊ตฌ๋กœ, ์ˆ˜์ฒœ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ๋„๊ตฌ์™€ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค. Jenkins๋Š” ์ž์ฒด ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

ํŠน์ง•

  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„: Jenkins์˜ ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.
  • ์ž์ฒด ํ˜ธ์ŠคํŒ…: Jenkins๋Š” ์ž์ฒด ์„œ๋ฒ„์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋ฏ€๋กœ ๋ณด์•ˆ์ด๋‚˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์œ ๋ฆฌํ•˜๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ธ ์ง€์›: Jenkinsfile์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๊ณ„

  • ์„ค์ • ๋ฐ ์œ ์ง€๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ: ์ดˆ๊ธฐ ์„ค์ •์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์œ ์ง€๊ด€๋ฆฌ๋„ ํ•„์š”ํ•˜๋‹ค.
  • ์ž์› ์š”๊ตฌ๋Ÿ‰: ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž์›์ด ๋งŽ์ด ์†Œ๋ชจ๋  ์ˆ˜ ์žˆ๋‹ค.

2. GitHub Actions ์†Œ๊ฐœ

GitHub Actions๋Š” GitHub ๋‚ด๋ถ€์—์„œ CI/CD ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋กœ, GitHub ์ €์žฅ์†Œ์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์žˆ๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ์ฝ”๋“œ ํ‘ธ์‹œ, PR ์ƒ์„ฑ ๋“ฑ์˜ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง•

  • ํ†ตํ•ฉ๋œ ํ™˜๊ฒฝ: GitHub์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ค์ •์ด ๊ฐ„ํŽธํ•˜๋‹ค.
  • YAML ๊ธฐ๋ฐ˜ ์„ค์ •: YAML ํŒŒ์ผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด ์ง๊ด€์ ์ด๋‹ค.
  • ๋ฌด๋ฃŒ ์ œ๊ณต: ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋‚˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๊ณ„

  • ์ œํ•œ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ: GitHub Actions์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด Jenkins์— ๋น„ํ•ด ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค: GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด GitHub์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.

3. ์ฃผ์š” ๋น„๊ต

ํŠน์„ฑJenkinsGitHub Actions
์„ค์น˜ ๋ฐ ์„ค์ •๋ณต์žกํ•จ๊ฐ„๋‹จํ•จ
ํ˜ธ์ŠคํŒ…์ž์ฒด ์„œ๋ฒ„ ํ•„์š”GitHub์—์„œ ํ˜ธ์ŠคํŒ…
ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๋ฐฉ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ œํ•œ์ 
์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์ง€์›๋จํ•„์ˆ˜์ 
๋ณด์•ˆ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฑ…์ž„GitHub ๋ณด์•ˆ ๋ชจ๋ธ ์ ์šฉ

4. ์‚ฌ์šฉ ์‚ฌ๋ก€

Jenkins ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋Œ€๊ทœ๋ชจ ๊ธฐ์—…: ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ฐ ํŒ€์—์„œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ: ํŠน์ • ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋‚˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ํ•„์š”ํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค.

GitHub Actions ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ: ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  GitHub๊ณผ ํ†ตํ•ฉ๋˜์–ด ์žˆ์–ด ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์šด ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.
  • ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ: ๋ณต์žกํ•œ ์„ค์ •์ด ํ•„์š” ์—†๋Š” ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.

5. ๊ฒฐ๋ก 

Jenkins์™€ GitHub Actions๋Š” ๊ฐ๊ฐ์˜ ๊ฐ•์ ๊ณผ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ, ํŒ€์˜ ํ•„์š”, ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. Jenkins๋Š” ์œ ์—ฐ์„ฑ๊ณผ ๊ธฐ๋Šฅ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด, GitHub Actions๋Š” ๊ฐ„ํŽธํ•˜๊ณ  ํ†ตํ•ฉ๋œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.

๋ณดํ†ต, ๋Œ€๊ทœ๋ชจ ๋˜๋Š” ๋ณต์žกํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์š”๊ตฌํ•˜๋Š” ์กฐ์ง์€ Jenkins๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๋ฐ˜๋ฉด, ์†Œ๊ทœ๋ชจ ํŒ€์ด๋‚˜ ๋‹จ์ˆœํ•œ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž๋“ค์€ GitHub Actions๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ฐ์ž์˜ ์ƒํ™ฉ์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋ฉด CI/CD์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.