102 lines
3.1 KiB
Groovy
102 lines
3.1 KiB
Groovy
pipeline {
|
|
agent any
|
|
tools {
|
|
jdk 'JDK17'
|
|
}
|
|
|
|
environment {
|
|
// 서버 정보
|
|
SERVER_IP = '115.68.232.36'
|
|
SERVER_USER = 'tomcat'
|
|
|
|
// 앱 정보
|
|
APP_NAME = 'sake_batch'
|
|
TOMCAT_HOME = '/usr/local/tomcat'
|
|
DEPLOY_PATH = "${TOMCAT_HOME}/webapps"
|
|
BACKUP_PATH = "${TOMCAT_HOME}/backup"
|
|
|
|
// 자격증명
|
|
SSH_CREDENTIAL = 'op-batch-servers-ssh'
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
git branch: 'master',
|
|
credentialsId: 'itfirst',
|
|
url: 'http://115.68.207.90:3000/itfirst/sake_batch.git'
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
steps {
|
|
sh './gradlew clean war'
|
|
}
|
|
}
|
|
|
|
stage('Backup') {
|
|
steps {
|
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
|
sh """
|
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
|
mkdir -p ${BACKUP_PATH}
|
|
if [ -f ${DEPLOY_PATH}/${APP_NAME}.war ]; then
|
|
cp ${DEPLOY_PATH}/${APP_NAME}.war \
|
|
${BACKUP_PATH}/${APP_NAME}.war.bak
|
|
echo "백업 완료"
|
|
else
|
|
echo "백업 대상 없음 (최초 배포)"
|
|
fi
|
|
'
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy') {
|
|
steps {
|
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
|
sh """
|
|
# WAR 전송
|
|
scp build/libs/${APP_NAME}.war \
|
|
${SERVER_USER}@${SERVER_IP}:${DEPLOY_PATH}/${APP_NAME}.war
|
|
|
|
# Tomcat 재시작
|
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
|
${TOMCAT_HOME}/bin/shutdown.sh || true
|
|
sleep 5
|
|
${TOMCAT_HOME}/bin/startup.sh
|
|
echo "Tomcat 재시작 완료"
|
|
'
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo "✅ sake_batch 배포 완료"
|
|
}
|
|
failure {
|
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
|
sh """
|
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
|
if [ -f ${BACKUP_PATH}/${APP_NAME}.war.bak ]; then
|
|
cp ${BACKUP_PATH}/${APP_NAME}.war.bak \
|
|
${DEPLOY_PATH}/${APP_NAME}.war
|
|
${TOMCAT_HOME}/bin/shutdown.sh || true
|
|
sleep 5
|
|
${TOMCAT_HOME}/bin/startup.sh
|
|
echo "롤백 완료"
|
|
else
|
|
echo "백업본 없음 - 롤백 불가"
|
|
fi
|
|
'
|
|
"""
|
|
}
|
|
echo "❌ 배포 실패 - 롤백 처리됨"
|
|
}
|
|
}
|
|
}
|