Jenkins ํƒ๊ตฌ์ƒํ™œ ๐Ÿ™„

chisaeยท2024๋…„ 2์›” 8์ผ

๋„์ ์ด๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
8/12
post-thumbnail

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ Jenkins์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค, ์ตœ๊ทผ ๋“ค์–ด ์ด๋ฒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์ธํ”„๋ผ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ์„ ๋งŽ์ด ๋А๋ผ๊ฒŒ ๋˜์—ˆ๊ณ  ํ•˜๋ฃจ ๋นจ๋ฆฌ ๋ฐฐ์›Œ๋ณด๊ณ  ์‹ถ์–ด ๊ณง ๋ช…์ ˆ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Jenkins๋ฅผ ์„ค์น˜ ํ•ด๋ณด๊ณ  build๊นŒ์ง€ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค, ๊ทธ๋Ÿผ ์ง€๊ธˆ ๋ถ€ํ„ฐ ํ•œ๋ฒˆ Jenkins๊ฐ€ ๋ญ”์ง€ ์•Œ์•„๋ณผ๊นŒ์š” !?



Jenkins..?

์™œ ํ•„์š”ํ• ๊นŒ

Jenkins๊ฐ€ ๋ญ”์ง€ ์•Œ๊ธฐ ์ „์— ์™œ Jenkins๊ฐ€ ํ•„์š”ํ•œ์ง€๋ถ€ํ„ฐ ์•Œ์•„์•ผ์ง€ ๋ฐฐ์šฐ๋Š”๋ฐ์— ์žˆ์–ด์„œ ์ข‹์€ ๋™๊ธฐ๊ฐ€ ๋  ๊ฑฐ ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ์š”, ๋จผ์ € ๊ธฐ์กด์—๋Š” ์–ด๋–ค์‹์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋๋Š”์ง€๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด ๋ถˆํŽธํ•œ ์ ์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋  ๊ฒ๋‹ˆ๋‹ค.. ์ƒˆ์‚ผ ๋А๋ผ๊ฒŒ ๋˜๋Š”๊ฒŒ ๊ฐœ๋ฐœ์ž๋ผ๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํŽธํ•˜๋‹ค ๋А๋ผ๋Š”๊ฒŒ ์žˆ์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์ž๋™ํ™” ์‹œํ‚ค๋Š” ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹
(๊ทธ๋ž˜์„œ ํšจ์œจ์„ ์ค‘์š”์‹œํ•˜๋Š” ์ €ํ•œํ…Œ๋Š” ๋งค์šฐ ์ข‹์€ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค)


AWS EC2์œผ๋กœ๋งŒ ๋ฐฐํฌํ•  ๊ฒฝ์šฐ

๋จผ์ € ๊ทธ ์–ด๋– ํ•œ ์ธํ”„๋ผ ์ž๋™ํ™” ๋ฐ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ์—†์ด ๋ฐฐํฌ๋ฅผ ํ•  ๊ฒฝ์šฐ ์–ด๋–ค ๊ณผ์ •์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋ ๊นŒ์š”?

1. JarํŒŒ์ผ์„ ๋นŒ๋“œํ•œ๋‹ค.
 1-2. JarํŒŒ์ผ์„ pemํŒŒ์ผ์ด ์žˆ๋Š”๊ณณ์œผ๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค
2. AWS์— ๋“ค์–ด๊ฐ„๋‹ค.
3. ์šฐ๋ถ„ํˆฌ์— ์ ‘์†ํ•œ๋‹ค.
4. ๊ธฐ์กด์— ์‹คํ–‰ํ•œ JarํŒŒ์ผ์„ ๊บผ์ค€๋‹ค.
5. ๊ธฐ์กด์— JarํŒŒ์ผ์„ ์ง€์›Œ์ค€๋‹ค.
6. JarํŒŒ์ผ์„ ์šฐ๋ถ„ํˆฌ์— ๋„˜๊ฒจ์ค€๋‹ค.
 6-2. ์ด๋•Œ Scp๋ฅผ ํ†ตํ•ด์„œ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๊ธฐ์— cmd๋ฅผ ํ•˜๋‚˜ ๋” ์ผœ์ค˜์•ผํ•œ๋‹ค.
7. JarํŒŒ์ผ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์ค€๋‹ค.

(์ €๊ฐ€ ์ฒ˜์Œ ๋ฐฐํฌํ•  ๋–„ ์ด๋ ‡๊ฒŒ ๋ฐฐํฌํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค)

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


Docker๋„ ๊ฐ™์ด ๋ฐฐํฌํ•  ๊ฒฝ์šฐ

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

1. ๋„์ปค๋ฅผ ๋„์ปคํ—ˆ๋ธŒ์— ํ‘ธ์‹œํ•ด์ค€๋‹ค
2. AWS์— ๋“ค์–ด๊ฐ„๋‹ค.
3. ์šฐ๋ถ„ํˆฌ์— ์ ‘์†ํ•œ๋‹ค
4. ๊ธฐ์กด์— ์‹คํ–‰ํ•œ ๋„์ปค๋ฅผ ๊บผ์ค€๋‹ค
5. ๋„์ปคํ—ˆ๋ธŒ์—์„œ ๋„์ปคํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ ํ›„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์ค€๋‹ค.

์ด์ „๋ณด๋‹ค ํ™•์‹คํžˆ ๊ณผ์ •์ด ๋‹จ์กฐ๋กœ์›Œ์กŒ์Šต๋‹ˆ๋‹ค, ๊ธฐ์กด์—๋Š” ๋งค๋ฒˆ JarํŒŒ์ผ์„ ๋นŒ๋“œํ•˜๊ณ  JarํŒŒ์ผ์„ pemํ‚ค๊ฐ€ ์žˆ๋Š” ํด๋”๋กœ ์˜ฎ๊ธด ํ›„ cmd๋‚˜ Git Bash๋ฅผ ํ•˜๋‚˜ ๋” ์ผœ์„œ ๋„˜๊ฒจ์ค˜์•ผ ํ–ˆ์—ˆ๋Š”๋ฐ Github๊ณผ ๋™์ผํ•˜๊ฒŒ ์›๊ฒฉ์œผ๋กœ ํŒŒ์ผ์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ  ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ • ์—ญ์‹œ ์กฐ๊ธˆ์€ ๋” ๋‹จ์กฐ๋กœ์›Œ์กŒ์Šต๋‹ˆ๋‹ค,

ํ•˜์ง€๋งŒ

์—ฌ์ „ํžˆ ๊ณ„์†ํ•ด์„œ ์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ์— ๋“ค์–ด๊ฐ€์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ์š”.. ์ด๊ฒŒ ํ•œ ๋‘๋ฒˆ์ด๋ฉด ๊ดœ์ฐฎ์ง€๋งŒ ๊ณ„์†ํ•ด์„œ ์ด๋ ‡๊ฒŒ ๋“ค์–ด๊ฐ”๋‹ค๊ฐ€ ๋‚˜์™”๋‹ค๊ฐ€ ํ•˜๊ธฐ์—” ์‹œ๊ฐ„์ด ์ง€๋‚  ์ˆ˜๋ก ์ง€์น˜๊ธฐ๋„ ํ•˜๊ณ  ๋•Œ์— ๋”ฐ๋ผ์„œ ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค, ๊ทธ๋ ‡๊ธฐ์— ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ €๋Š” Jenkins๋ฅผ ๋ฐฐ์›Œ์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.


๊ฐœ๋…

Jenkins๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์‹œ ์ง€์†์ ์ธ ํ†ตํ•ฉ(Continuous integration, CI)๊ณผ ์ง€์†์ ์ธ ๋ฐฐํฌ(Continuous Deployment, CD)๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค, ์•ž์„œ Jenkins๋ฅผ ์™œ ๋ฐฐ์›Œ์•ผํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ดค๊ณ  ๊ทธ๋ ‡๊ธฐ์— Jenkins ๊ฐ™์€ CI/CD ๋„๊ตฌ๊ฐ€ ์—†์—ˆ๋˜ ์‹œ์ ˆ์—๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ณ  ์„œ๋ฒ„์— ์ง์ ‘ ์ ‘์†ํ•ด์„œ ๋ฐฐํฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค...

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

์ฆ‰, Jenkins๋Š” Git์— ์ปค๋ฐ‹ํ•˜๋ฉด ์•Œ์•„์„œ ๋ฐฐํฌํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค..!

(Netlify๋‚˜ Vercel๋กœ ๋ฐฐํฌํ•œ ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ๋А๋‚Œ์ด๋ผ ๋งค์šฐ ์ข‹์Œ..)


์žฅ์ 

  • ์ž๋™ํ™”์™€ ํ‘œ์ค€ํ™”
    : Jenkins๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค,
  • ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ๋‹จ์ถ• : Jenkins๋ฅผ ํ†ตํ•ด ๋” ๋น ๋ฅด๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์ฃผ๊ธฐ๋ฅผ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋นŒ๋“œ ๊ณผ์ •์—์„œ ํ…Œ์ŠคํŠธ๋„ ํ•จ๊ป˜ ํ•ฉ๋‹ˆ๋‹ค)
  • ํ™•์žฅ์„ฑ
    : jenkins๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์ž‘์—… ๋ฐ ํ”Œ๋กœ์šฐ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์šฉ ํšจ์œจ์ 
    : ์˜คํ”ˆ ์†Œ์Šค์ด๊ธฐ์— ๋ผ์ด์„ ์Šค ๋น„์šฉ์ด ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.



์‹ค์Šต

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


Jenkins์˜ CI/CD ๊ณผ์ •

1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค๋ฐ‹
  : ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ๋ฅผ Git์— ์ปค๋ฐ‹ํ•˜๊ณ  ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  
2. Jenkins์˜ ๊ฐ์ง€ ๋ฐ ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ
  : Jenkins๋Š” ๊ณต์œ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ณ€๊ฒฝ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ 
  ๊ฐ์ง€ํ•œ ํ›„ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค, ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด
  ๋นŒ๋“œํ•œ ํŒŒ์ผ์„ ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  
3. ๋นŒ๋“œ ํŒŒ์ผ์˜ ๋ฐฐํฌ
  : ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์€ ๋ฐฐํฌ ์„œ๋ฒ„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค,
  ๋ฐฐํฌ์„œ๋ฒ„์—์„œ์˜ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ ํ•ฉ๋‹ˆ๋‹ค.
  
4. ์‹คํŒจ ์‹œ ๋กœ๊ทธ ๊ธฐ๋ก
  : ๋งŒ์•ฝ ๋นŒ๋“œ ๋˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ์—๋Š” ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ 
  ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.



Jenkins ์„ค์น˜ & ํšŒ์›๊ฐ€์ž…

๋จผ์ € Jenkins ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ž์‹ ์˜ ์„œ๋ฒ„ ์šด์˜์ฒด์ œ์™€ ์ผ์น˜ํ•˜๋Š” ์„ค์น˜ ๋ฉ”๋‰ด์–ผ์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•ด์„œ ์„ค์น˜ํ•ด์ฃผ์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค, ํ•˜์ง€๋งŒ ์ด๋Š” ๊ฐœ๋ฐœ ๋˜๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ  ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ Jenkins๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

https://get.jenkins.io/war-stable/
๊ทผ๋ฐ ์˜ค๋Š˜์€ ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์ด๋‹ˆ ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ๋‹ค์šด ๋ฐ›์•„๋ด…์‹œ๋‹ค ~ !

  1. ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ ์ ˆํ•œ ๋ฒ„์ „ ๋‹ค์šด
  2. jenkins.war ํŒŒ์ผ์„ ์›ํ•˜๋Š” ์œ„์น˜์— ๋†”๋‘๊ธฐ
  3. cmd ์ผœ์„œ jenkins.war ํŒŒ์ผ์ด ์žˆ๋Š” ์œ„์น˜๋กœ ๊ฐ„ ํ›„
    3-1. "java -jar jenkins.war" ์ž…๋ ฅ ํ›„ ์‹คํ–‰

์œ„ ๊ณผ์ •์„ ๋‹ค ํ•œ ํ›„ 8080ํฌํŠธ๋กœ ์ด๋™ํ•˜๋ฉด Jenkins๊ฐ€ ์‹คํ–‰๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ตœ์ดˆ ๋กœ๊ทธ์ธ์‹œ์—๋Š” cmd ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ์œผ๋‹ˆ ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์‹œ๊ณ  ๋กœ๊ทธ์ธ ํ•˜์‹œ๋ฉด ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

(๋กœ์ปฌ์ธ ๊ฒฝ์šฐ localhost:8080, ๋กœ์ปฌ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์„œ๋ฒ„IP or ๋„๋ฉ”์ธ + 8080)

๋กœ๊ทธ์ธ์„ ์™„๋ฃŒํ•˜์‹œ๊ณ  ๋‚˜๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ• ์ง€์— ๋Œ€ํ•ด์„œ ๋ฌผ์–ด๋ณด๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค, ์ด๋–„๋Š” install suggested plugins๋ฅผ ๋ˆŒ๋Ÿฌ ์ถ”์ฒœํ•ด์ฃผ๋Š”๊ฑธ๋กœ ์„ค์น˜ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ดํ›„์— ์ถ”์ฒœํ•ด์ค€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค ์„ค์น˜๊ฐ€ ๋˜๋ฉด ๊ธฐ๋ณธ์ ์ธ ๊ณ„์ • ์„ค์ • ํŽ˜์ด์ง€์™€ Jenkins URL๋ฅผ ์ •ํ•˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ์ด๊ฒƒ์€ ์›ํ•˜์‹œ๋Š”๋Œ€๋กœ ์ž…๋ ฅํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ธฐ๋ณธ ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๊ณ  ์ด๋•Œ๋ถ€ํ„ฐ Jenkins๋ฅผ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Jenkins Job

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

(์ด๋•Œ JDK ๋ฒ„์ „ ๋˜๋Š” Gradle ๋ฒ„์ „๊ณผ ๊ฐ™์€ ์‹คํ–‰ํ•  ํŒŒ์ผ์˜ ๋ฒ„์ „์— ๋งž๊ฒŒ Jenkins ์—ญ์‹œ ๋ฒ„์ „์„ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค..!)

์ดํ›„ item์˜ ์ด๋ฆ„์„ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ๋„˜์–ด์˜ค๋Š”๋ฐ 'Freestyle project'๋กœ ์ƒ์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ์„ค์ •์„ ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ๋„˜์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค,
์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ œ Github์™€ ์—ฐ๋™์„ ํ•  ์˜ˆ์ •์ด๊ธฐ์—
์˜›๋‚ ์— ๋งŒ๋“  recipe ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ ์—ญ์‹œ Git์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค,
์ด๋•Œ Credentials๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์˜ Add๋ฅผ ํด๋ฆญํ•œ ํ›„
Github ํ† ํฐ์„ ์ด์šฉํ•˜๋ฉด ์ถ”๊ฐ€ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ ๊ณผ์ •์—์„œ๋Š” Gradle์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก
'Invoke Gradle script'๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์–ธ์ œ ๋นŒ๋“œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋Š” Github hook trigger for GITScm polling์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค, ์ด ์˜ต์…˜์˜ ๊ฒฝ์šฐ Github ์ €์žฅ์†Œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠน์ • ์ด๋ฒคํŠธ(์˜ˆ:push. pull request)๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ Jenkins ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋ชจ๋“  ๊ตฌ์„ฑ์„ ๋งˆ์นœ ํ›„ ๋นŒ๋“œ๋ฅผ ํ•ด์ฃผ๋ฉด, ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ๋œ ๋ชจ์Šต์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ์ด๋•Œ ์•ž์„œ ์–˜๊ธฐ๋“œ๋ฆฐ ๊ฒƒ๊ณผ ๊ฐ™์ด JDK๋ฒ„์ „๊ณผ Gradle๋ฒ„์ „์„ ์ž˜ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค, ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ์ฒ˜์Œ์— ํ•œ ๋‘๋ฒˆ ๋นŒ๋“œ์— ์‹คํŒจํ–ˆ์—ˆ๋Š”๋ฐ JDK๋ฒ„์ „์„ ์ œ๋Œ€๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ๋ชปํ•ด์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค

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



๋์œผ๋กœ

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

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

profile
์ดˆ๋ณด ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€