๊ด€๋ฆฌ ๋ฉ”๋‰ด

Jin's Dev Story

[Jenkins] ์  ํ‚จ์Šค๋ž€? ๋ณธ๋ฌธ

๊ธฐํƒ€

[Jenkins] ์  ํ‚จ์Šค๋ž€?

woojin._. 2023. 8. 16. 15:51

๐Ÿ’ก ๋ชจ๋“  ์–ธ์–ด์˜ ์กฐํ•ฉ๊ณผ ์ฝ”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํ†ตํ•ฉ(CI)๊ณผ ์ง€์†์  ๋ฐฐํฌ(CD) ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ

Jenkins

  • ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ๊ณผ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ
  • Java Runtime Environment์—์„œ ๋™์ž‘
  • ์ผ๋ จ์˜ ์ž๋™ํ™” ์ž‘์—…์˜ ์ˆœ์„œ๋“ค์˜ ์ง‘ํ•ฉ์ธ Pipeline์„ ํ†ตํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•

์žฅ์ 

  • ํ”„๋กœ์ ํŠธ ํ‘œ์ค€ ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์—์„œ์˜ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๊ฒ€์ถœ
  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ : ์ •์  ์ฝ”๋“œ ๋ถ„์„์— ์˜ํ•œ ์ฝ”๋”ฉ ๊ทœ์•ฝ ์ค€์ˆ˜ ์—ฌ๋ถ€ ์ฒดํฌ
  • ํ”„๋กœํŒŒ์ผ๋ง ํˆด์„ ์ด์šฉํ•œ ์†Œ์Šค ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ๋ณ€ํ™” ๊ฐ์‹œ
  • ๊ฒฐํ•จ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๋ฐฐํฌ ์ž‘์—…
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ์˜ Deloy(๋ฐฐํฌ) ๋“ฑ ๊ฐ„๋žตํ™”

๊ธฐ๋Šฅ

  • ๊ฐ์ข… ๋ฐฐ์น˜ ์ž‘์—…์˜ ๊ฐ„๋žตํ™” (DB ์…‹์—…, ํ™˜๊ฒฝ์„ค์ •, ๋ฐฐํฌ ๋“ฑ)
  • ๋นŒ๋“œ ์ž๋™ํ™”
  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ(์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ  ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰)
  • ์ฝ”๋“œ ํ‘œ์ค€ ์ค€์ˆ˜ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ
  • ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ(์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๋กœ ์ด๋ฃจ์–ด์ง„ ํ”„๋กœ์ ํŠธ์— ์œ ์šฉ)

CI/CD ๊ณผ์ •

  1. ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ ํ›„ ๊นƒํ—ˆ๋ธŒ๋กœ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ
  2. ์  ํ‚จ์Šค๊ฐ€ ์ด๋ฅผ ์ธ์ง€ํ•˜์—ฌ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ
  3. ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ ๋ฐฐํฌ ์„œ๋ฒ„๋กœ ์ „์†ก
  4. ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์•Œ๋ฆผ

 

Jenkins Plugins

  • Credentials Plugin
    • AWS token, Git access token, secret key, ssh(username, password) ๋“ฑ์˜ ์ •๋ณด๋“ค์„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ
    • ์œ„์™€ ๊ฐ™์ด ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ ์ €์žฅํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ
  • Git Plugin
    • jenkins์—์„œ git์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธ์–ด์™€์„œ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ
  • Pipeline
  • Docker plugin and Docker Pipeline
    • Docker agent๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  jenkins์—์„œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ

 

Jenkins ํŒŒ์ดํ”„๋ผ์ธ

1. Pipeline

  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์  ํ‚จ์Šค์— ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์˜ ์ง‘ํ•ฉ์ด์ž ๊ตฌ์„ฑ
  • ์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ์ด ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์ •์˜ํ•จ์œผ๋กœ์จ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•œ ์„œ๋น„์Šค๊ฐ€ ๋ฐฐํฌ๋จ
  • Pipeline DSL(Domain Specific Langage)๋กœ ์ž‘์„ฑ๋จ
  • ์  ํ‚จ์Šค๊ฐ€ ๋™์ž‘๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ณผ์ •

2. Pipeline์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ

  • Declarative (๋” ์ตœ์‹ ์ด๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์Œ)
    • Environ ment ( ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ stage scope์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •)
    • Parameter (ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์‹œ์— ๋ฐ›์„ ํŒŒ๋ผ๋ฏธํ„ฐ)
    • Triggers (์–ด๋–ค ํ˜•ํƒœ๋กœ ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š”์ง€ ์ •์˜)
    • When (์–ธ์ œ ์‹คํ–‰๋˜๋Š”์ง€ ์ •์˜)
  • Scripted Pipeline

3. Pipeline์˜ Section์˜ ๊ตฌ์„ฑ

  • Sections (๊ฐ€์žฅ ํฐ ๊ฐœ๋…)
    • Agent section
      • ์—ฌ๋Ÿฌ slave๋ฅผ ๋‘๊ณ  ์ž‘์—…ํ•  ๋•Œ ์–ด๋–ค ์  ํ‚จ์Šค๊ฐ€ ์–ด๋–ค ์ผ์„ ํ• ์ง€ ์ •์˜
    • Post section
      • ๊ฐ ์Šคํ…Œ์ด์ง€๊ฐ€ ๋๋‚œ ํ›„ ํ›„์† ์กฐ์น˜ ์„ค์ •
      • ex) Success / failure / always / cleanup
    • State section
      • ์–ด๋–ค ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ Stage ์ •์˜
      • ์ผ์ข…์˜ ์นดํ…Œ๊ณ ๋ฆฌ
    • Steps section
      • ์‹คํ–‰ํ•  ์ž‘์—… ์ •์˜

'๊ธฐํƒ€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ฟ ๋ฒ„๋„คํ‹ฐ์Šค] ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€?  (0) 2024.06.13
[Docker] Docker๋ž€?  (0) 2024.06.13
[CI/CD] CI/CD๋ž€?  (0) 2023.08.16
[MSA] MSA๋ž€?  (0) 2023.08.16