Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Linux/Docker

[Jenkins] Pipeline์œผ๋กœ ์›น ๋ฐฐํฌํ•˜๊ธฐ (Jenkinsfile)

728x90

Pipeline์œผ๋กœ ์›น ๋ฐฐํฌํ•˜๊ธฐ (Jenkinsfile)


๐Ÿ’ก ์  ํ‚จ์Šค์—์„œ ์ƒˆ๋กœ์šด ์•„์ดํ…œ ์ƒ์„ฑํ•˜๊ธฐ

โœ… โž• ์ƒˆ๋กœ์šด Item

์ƒˆ๋กœ์šด ์•„์ดํ…œ ํด๋ฆญํ•˜๊ธฐ

 

โœ”๏ธ ์  ํ‚จ์Šค์—์„œ ์•„์ดํ…œ์ด๋ž€?

์ƒˆ๋กญ๊ฒŒ ์ •์˜ํ•  ์ž‘์—…์„ ๋งํ•œ๋‹ค.

๋ชจ๋“  ์ž‘์—…์˜ ์ •์˜์™€ ์ˆœ์„œ๋ฅผ ๋ชจ์•„๋‘” ์ „์ฒด ์ž‘์—…์„ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์—๋Š” Freestyle, Pipeline๋“ฑ์ด ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์•„์ดํ…œ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๐Ÿ’ก Pipeline

์ƒˆ๋กœ์šด ์•„์ดํ…œ ํด๋ฆญ ํ›„ ๋‚˜์˜ค๋Š” ํ™”๋ฉด

โœ”๏ธ Pipeline์ด๋ž€?

์  ํ‚จ์Šค์—์„œ ์ง€์›ํ•˜๋Š” ๊ณ ์œ ์˜ Pipeline ๋ฌธ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ž‘์—…์„ ์ •์˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ด๋‹ค.

๊นƒํ—ˆ๋ธŒ์™€ ๊ฐ™์€ ์ฝ”๋“œ ์ €์žฅ์†Œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆด ๋•Œ Pipeline ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ํŒŒ์ผ์„ ํ•จ๊ป˜ ์˜ฌ๋ ค๋‘๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์™€ ๋ฐฐํฌ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ด€๋ฆฌ ํŽธ๋ฆฌ์„ฑ์ด ๋†’๋‹ค.

 

Pipeline์€ ๊ณ ์œ ์˜ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ ๋˜๋Š” ์ด๋Ÿฌํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ๋ฒ•์„ ํ† ํ•ด ์  ํ‚จ์Šค๋Š” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์ž‘์—…์ด ๋˜๋Š” ์ฝ”๋“œ๋กœ์„œ์˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์  ํ‚จ์Šค Pipeline์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฌธ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์ด๊ณ   ๋‘ ๋ฒˆ์งธ๋Š” ์„ ์–ธ์ ์ธ ๋ฌธ๋ฒ•์ด๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒ์—์„œ ์  ํ‚จ์Šค ์—์ด์ „ํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ต์ˆ™ํ•˜์ง€ ์•Š๋Š” ์  ํ‚จ์Šค์˜ ๊ณ ์œ  ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์„ ์–ธ์  ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์ต์ˆ™ํ•œ ์•ผ๋ฏˆ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ ์–ธ์ ์ธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

 

โœ… Pipeline script from SCM

์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ์„ ์–ธ์ ์ธ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ ์œ„ํ•ด์„œ.

์œ„์™€ ๊ฐ™์ด ์„ค์ • ํ›„ ์ €์žฅ

๐Ÿ’ก Jenkinsfile

โœ”๏ธ Jenkinsfile์˜ ๊ตฌ์„ฑ์š”์†Œ

Jenkinsfile์˜ ๊ตฌ์กฐ

๐Ÿงท pipeline

์„ ์–ธ์ ์ธ ๋ฌธ๋ฒ•์ด ์‹œ์ž‘ํ•˜๋Š” ๋ถ€๋ถ„

 

๐Ÿงท agent

์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์—์ด์ „ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ์„ค์ •์„ ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.

    ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—์ด์ „ํŠธ๋ฅผ ์  ํ‚จ์Šค๊ฐ€ ์ž„์˜๋กœ ์ง€์ •ํ•˜๋Š” any

    ํŠน์ • ๋ ˆ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜๋Š” ์—์ด์ „ํŠธ ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” label

    ์—์ด์ „ํŠธ ๋…ธ๋“œ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค๋กœ ์ง€์ •ํ•˜๋Š” docker

    ์—์ด์ „ํŠธ ๋…ธ๋“œ๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํŒŒ๋“œ๋กœ ์ง€์ •ํ•˜๋Š” kubernetes

 

๐Ÿงท stages

stage๋ฅผ ๋ชจ์•„์„œ ์ •์˜

 

๐Ÿงท stage

step๋“ค์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ

์  ํ‚จ์Šค์—์„œ ๋นŒ๋“œ๊ฐ€ ์ง„ํ–‰๋  ๋•Œ stage๋ณ„๋กœ ์ง„ํ–‰ ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿงท steps

stage ๋‚ด๋ถ€์—์„œ ์‹ค์ œ ์ž‘์—… ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ์˜์—ญ

step ์˜์—ญ ๋‚ด๋ถ€์—์„œ script, sh, git๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ†ตํ•ด ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 

pipeline {
  agent any
  stages {
    stage('git scm update') {
      steps {
        git url: 'https://github.com/YoonHakyoung/cicdtest.git', branch: 'main'
      }
    }
    stage('docker build and push') {
      steps {
        sh '''
        sudo docker build -t yoonhakyoung/cicdtest:1.0 .
        sudo docker push yoonhakyoung/cicdtest:1.0
        '''
      }
    }
    stage('deploy kubernetes') {
      steps {
        sh '''
        ansible master -m command -a 'kubectl create deployment pl-bulk-prod --image=yoonhakyoung/cicdtest:1.0'
        ansible master -m command -a 'kubectl expose deployment pl-bulk-prod --type=LoadBalancer --port=80 --target-port=80 --name=pl-bulk-prod-svc'
        '''
      }
    }
  }
}

 

- 'git scm update' : ๊นƒํ—ˆ๋ธŒ๋กœ๋ถ€ํ„ฐ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์€ ๋‹จ๊ณ„

- 'docker build and push' : ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œํ•˜๊ณ , ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ

- 'deploy kubernetes' : ์ด๋ฏธ์ง€๋ฅผ pl-bulk-prod๋กœ ๋ฐฐํฌํ•˜๊ณ , ๋ฐฐํฌํ•œ ํŒŒ๋“œ๋ฅผ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ํƒ€์ž…์œผ๋กœ ๋…ธ์ถœ

 

โœ… ์ง€๊ธˆ ๋นŒ๋“œ

 

์•„๋ž˜ Build History์—์„œ #1์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ

 

์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ฉด ์šฐ์ธก์—์„œ ๊ฐ ์Šคํ…Œ์ด์ง€ ๋ณ„ ๋‹จ๊ณ„์™€ ์„ฑ๊ณต ์—ฌ๋ถ€ ์†Œ์š” ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ.

 

728x90