pipeline {
agent any
stages {
stage('Git Clone Project') {
steps {
git branch : 'master',
url : 'https://github.com/kangbohyeon/guestbook.git'
}
}
stage('Project Build') {
steps {
sh "./mvnw -Dmaven.test.failure.ignore=true clean package"
}
}
}
}
stage('Project Test') {
steps {
sh "./mvnw test"
}
post {
always {
junit '**/target/surefire-reports/TEST-*.xml'
}
}
}



Project display name, Project key, Main branch name 작성 후 Set Up 클릭

Locally 클릭





Name , Url 작성후 Create클릭





stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('SonarQube-Server-Local'){
sh '''
./mvnw clean verify sonar:sonar \
-Dsonar.projectKey=guestbook \
'''
}
}
}
stage('SonarQube Quality Gate') {
steps {
timeout(time: 10, unit: 'MINUTES') {
script{
def qg = waitForQualityGate()
if(qg.status != 'OK') {
echo "NOT OK Status: ${qg.status}"
error "Pipeline aborted due to quality gate failure: ${qg.status}"
} else{
echo "OK Status: ${qg.status}"
}
}
}
}
}
import java.text.SimpleDateFormat
def VERSION = (new SimpleDateFormat("yyyyMMddHHmm")).format(new Date())
pipeline {
agent any
environment{
DOCKER_REGISTRY="localhost:5001"
LATEST_TAG="latest"
IMAGE_NAME="guestbook"
}
stages {
stage('Docker Image Build') {
steps {
sh 'docker build -t ${IMAGE_NAME}:${LATEST_TAG} -f Dockerfile .'
}
}
stage('Docker Image Tag') {
steps {
sh "docker tag ${IMAGE_NAME} ${DOCKER_REGISTRY}/${IMAGE_NAME}:${VERSION}"
sh "docker tag ${IMAGE_NAME} ${DOCKER_REGISTRY}/${IMAGE_NAME}:${LATEST_TAG}"
}
}
stage('Docker Image Push') {
steps {
sh "docker image push ${DOCKER_REGISTRY}/${IMAGE_NAME}:${VERSION}"
sh "docker image push ${DOCKER_REGISTRY}/${IMAGE_NAME}:${LATEST_TAG}"
}
}
}
}
curl http://localhost:5001/v2/_catalog
curl http://localhost:5001/v2/guestbook/tags/list
앱관리 선택 -> -> -> ->

Jenkins CI 검색 -> Slack에 추가 클릭 -> 채널 선택 -> Jenkins CI 통합 앱 추가 클릭

팀 하위 도메인, 통합 토큰 자격 증명ID 별도로 저장

설정 저장 클릭

Dashboard -> Jenkins관리 -> 시스템 설정 -> Slack -> workspace에 팀하위 도메인 작성 -> add 클릭 -> Test connection 클릭 -> success 뜨면 Save 클릭

Secret text 선택 -> Secret에 통합 토큰 자격 증명 ID 작성, ID, Descript 작성 후 Add 선택

정상적이면 다음과 같이 뜸

stages 밑에 코드 작성
post {
success {
slackSend(tokenCredentialId: 'slack-token-local'
, channel: '#일반'
, color: 'good'
, message: "${JOB_NAME} (${BUILD_NUMBER}) 빌드가 성공적으로 끝났습니다. Details: (<${BUILD_URL} | here >)")
}
failure {
slackSend(tokenCredentialId: 'slack-token-local'
, channel: '#일반'
, color: 'danger'
, message: "${JOB_NAME} (${BUILD_NUMBER}) 빌드가 실패하였습니다. Details: (<${BUILD_URL} | here >)")
}
}
