Dashboard -> 새로운 item -> Pipeline으로 Job 만들기


Name -> 매개변수 이름
Default Value -> 개발 서버 일때는 develop, 스테이지 & 메인 서버일때는 main
Branch Filter -> Github Branch 필터


※ {현재 서비스 이름}-{profile}
위에서 설정한 parameter을 Filtering 한다.

※ 위 Expression은 develop 브랜치만 가져오게 설정 main으로 교체 가능

Payload URL에
http://Jenkins ip:port/generic-webhook-trigger/invoke?token={위에서 설정한 토큰} 으로 설정하고
위와 같이 설정후 add
pipeline {
environment {
docker_name = "Repository 명"
-- Docker Name 앞에 Profile 추가 (Prod는 추가 안함)
docker_registry = "$docker_id/dev-$docker_name"
version = "${env.BUILD_NUMBER.toInteger() + 1000}"
docker_id = 'Docker Hub ID'
docker_pw = 'Docker Hub PW'
}
triggers {
githubPush()
}
agent any
stages {
stage('Start') {
steps {
slackSend (channel: '#배포', color: '#FFFF00', message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Clone sources') {
steps {
echo 'Clone'
git branch: '${BRANCH}', credentialsId: 'jslee', url: 'GitHub Repository URL'
}
}
stage('Build Jar') {
steps {
sh 'chmod 777 gradlew'
sh './gradlew build -x test'
}
}
stage('Docker Image Build') {
steps{
sh "docker build --no-cache -t $docker_registry:$version ."
}
}
stage('Deploy docker image') {
steps {
sh 'docker login -u $docker_id -p $docker_pw'
sh "docker push $docker_registry:$version"
}
}
stage('Clean docker image') {
steps{
sh "docker rmi $docker_registry:$version"
sh "docker volume prune -f"
}
}
}
post {
success {
slackSend (channel: '#배포', color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
failure {
slackSend (channel: '#배포', color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}