Jenkins Pipeline으로 빌드 배포 하기

1. Jenkins Pipeline

  • Jenkins Pipeline을 이용하여 순차적으로 Job을 처리할 수 있음
  • 하나의 Stage는 여러개의 step으로 분리가 되어있음
  • jenkins pipeline

2. Pipeline 스크립트

  • 현재 dobby.work에 사용하고 있는 Jenkins Pipeline 스크립트

  • 간단하게 fetch -> build -> deploy 정도로만 구성하였고, 서버에 배포할때는 sshagent를 이용하여 scp로 배포함
  • 좀 더 응용한다면 build 와 deploy 사이에 linttest stage를 넣으면 좋지 않을까 ..

    pipeline {
    agent any
    
    tools {
      // Install the Maven version configured
      nodejs "node13.1.0"
    }
    
    stages {
      stage('Build') {
         steps {
            // Get some code from a GitHub repository
            git(
                url : 'git remote repo',
                credentialsId: 'ad7###',
                branch: 'master'
            )
    
            // yarn install & build
            sh "yarn install"
            sh "yarn build"
         }
      }
      stage('Deploy') {
           steps {
                // sshagent plugin required when using jenkins credentials
               sshagent(credentials : ['credential id']) {
                     sh 'ssh -v id@host'
                     sh 'ssh id@host mkdir -p /home/dobby/deploy/dobby-work'
                     sh 'scp -r ./public id@host:/home/dobby/deploy/dobby-work'
                 }
           }
      }
    }
    }

3. Pipeline 실행 결과

  • Pipeline 을 실행하면 다음과 같은 로그를 볼 수 있다.
  • 각 스텝별로 자세하게 나오며 Dump도 뜰 수 있음 jenkins pipeline

4. 여기에 Blue Ocean을 끼얹으면?

  • jenkins pipeline blueocean
  • Blue Ocean Plugin을 설치하면 아래와 같이 Pipeline에 Open Blue Ocean 메뉴가 생성된다.
  • jenkins blueocean ready
  • Open Blue Ocean 메뉴를 클릭하면 아래와 같이 예쁜? UI가 나오게 된다.
  • jenkins blueocean
  • 해당 build를 클릭해보면 좀 더 깔끔하고 정돈된 UI를 볼 수 있다.
  • jenkins blueocean pipeline

5. Webhook을 이용하여 코드가 변경되면 자동으로 Pipeline 실행 하기

  • 코드가 변경된 경우 webhook을 이용하여 자동으로 Pipeline 을 시작
  • 설치형 이슈트래커 + Git 저장소인 Yona 를 이용하고 있으므로 Yona webhook을 사용
  • github, bitbucket도 webhook을 지원하므로 상황에 맞게 사용하면 될 듯
  • yona webhook
  • pipeline 시작 요청시 루트 인증을 우회하기 위해서 https://wiki.jenkins.io/display/JENKINS/Build+Token+Root+Plugin 을 사용
  • 기존 build plugin을 사용하면 token을 사용하더라도 인증을 추가로 해야 하기때문에 token만으로 통과할 수 있게 하는 플러그인
  • 실행방법

    buildByToken/build?job=RevolutionTest&token=TacoTuesday

dobby
Written by@dobby
The beautiful thing in the world. the most precious thing in the universe.