Jenkins 파이프라인 문법

snooby·2022년 8월 3일
1

🔫 자잘부리 cs 팁

목록 보기
12/42
post-thumbnail
post-custom-banner

CI/CD 젠킨스 파이프라인을 구성하려면 파이프라인 문법을 작성해야한다.
할 때마다 이런건 어떻게하지 많이 검색하게되는데 이번에 정리해보려고한다.

우선 젠킨스 파이프라인은 어떻게 생겼는지 예시 코드로 보자.

pipeline {
    agent any
    
    environment {
        GIT_URL = "https://github.com/baeyuna97/K8S.git"
    }

    stages {
        stage('Pull') {
            steps {
                git url: "${GIT_URL}", branch: "main", poll: true, changelog: true
            }
        }
        
        stage('Build') {
            steps {
                sh 'docker build -t yuna1do/hello .'
            }
        }
    
        stage('Deploy'){
            steps{
                sh 'docker stop hello'
                sh 'docker rm hello'
                sh 'docker run -d --name hello -p 80:80 -p 443:443 -v /etc/letsencrypt/archive:/etc/letsencrypt/archive -u root yuna1do/hello:test'
            }
        }

       stage('Finish') {
            steps{
                sh 'docker images -qf dangling=true | xargs -I{} docker rmi {}'
            }
        }
    }
}

위의 소스를 보면 알겠지만 젠킨스의 파이프라인 문법은 매우 block처럼 잘 나뉘어져서 조립되어있다.

큰 틀부터 알아보자.

1. pipeline{...}

우선 가장 먼저 pipeline을 선언하는데 이는 이제부터 이 틀안에 파이프라인을 짜겠다는 것이다.
이제 이 안에 원하는 문법을 작성한다.

pipeline {

}

2. section

2-1. agent

agent는 파이프라인 블록 내 최상단에 정의해야한다.
agent값을 무엇으로 주느냐(any,none..)에 따라 agent를 파이프라인 전체(any)에 쓸 수 있는지 특정 stage(none)에 쓸 수 있는지 지정된다.

2-2. stage

하나 이상의 stage를 포함해야하는데 각 stage는 보통 진행해야할 일들을 단위로 잘라서 선언한다.
위의 소스로 예로 들면

  • git에서 가져오기 단계
  • Build 이미지 가져오기 단계
  • 컨테이너 생성 단계
    등으로 구분하였다.
stage('stage명') {
            steps{
               할 일
            }
        }

2-3. steps

stage 내부 block에서 여러번 호출될 수 있다.

stage('stage명') {
            steps{
              steps{
                 할 일
              }
               할 일
            }
        }

2-4. post

특정 스테이지 이전/이후에 실행될 condition 블록이다.
특정 단계가 끝나고 할일 또는 log 남기기 등에 사용된다.
특정 단계가 어떤 상태인지에 따라 남기는 문을 달리할 수도 있다.

post{
	always {
    	echo '항상 실행되는 문'
    }
    changed {
    }
    failure{
    }
    success{
    }
}

3. Directives

파이프라인의 config 설정값으로 보면된다.

3-1. environment

파이프라인 혹은 스테이지 내부에서 쓰일 변수값을 정의한다.

    environment {
        GIT_URL = "https://github.com/baeyuna97/K8S.git"
    }

3-2. tool

자동 설치나 Path에 추가할 도구를 정의할 수 있다.

tool{
	NodeJS 'Nodejs-bell'
}

3-3. parameter

파라미터 정의가 가능하다.

# 선언
 parameters {
        booleanParam(containername: 'hello', type: 'container')
    }

# 사용
 script { 
   if (params.containername=='hello') {
       echo 'test'
  }
}

4. if문

  • when, steps
when {
   조건문
}
steps {
   조건이 맞으면 실행할 내용
}
  • if문 쓰려면 script로 감싸줘야한다.
script { // if문 쓰기 위해 선언
   if (조건문) {
        조건이 맞으면 실행할 내용
   }
}
profile
DevOps 🐥
post-custom-banner

0개의 댓글