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처럼 잘 나뉘어져서 조립되어있다.
큰 틀부터 알아보자.
우선 가장 먼저 pipeline을 선언하는데 이는 이제부터 이 틀안에 파이프라인을 짜겠다는 것이다.
이제 이 안에 원하는 문법을 작성한다.
pipeline {
}
agent는 파이프라인 블록 내 최상단에 정의해야한다.
agent값을 무엇으로 주느냐(any,none..)에 따라 agent를 파이프라인 전체(any)에 쓸 수 있는지 특정 stage(none)에 쓸 수 있는지 지정된다.
하나 이상의 stage를 포함해야하는데 각 stage는 보통 진행해야할 일들을 단위로 잘라서 선언한다.
위의 소스로 예로 들면
stage('stage명') {
steps{
할 일
}
}
stage 내부 block에서 여러번 호출될 수 있다.
stage('stage명') {
steps{
steps{
할 일
}
할 일
}
}
특정 스테이지 이전/이후에 실행될 condition 블록이다.
특정 단계가 끝나고 할일 또는 log 남기기 등에 사용된다.
특정 단계가 어떤 상태인지에 따라 남기는 문을 달리할 수도 있다.
post{
always {
echo '항상 실행되는 문'
}
changed {
}
failure{
}
success{
}
}
파이프라인의 config 설정값으로 보면된다.
파이프라인 혹은 스테이지 내부에서 쓰일 변수값을 정의한다.
environment {
GIT_URL = "https://github.com/baeyuna97/K8S.git"
}
자동 설치나 Path에 추가할 도구를 정의할 수 있다.
tool{
NodeJS 'Nodejs-bell'
}
파라미터 정의가 가능하다.
# 선언
parameters {
booleanParam(containername: 'hello', type: 'container')
}
# 사용
script {
if (params.containername=='hello') {
echo 'test'
}
}
when {
조건문
}
steps {
조건이 맞으면 실행할 내용
}
script { // if문 쓰기 위해 선언
if (조건문) {
조건이 맞으면 실행할 내용
}
}