Compare commits

...

2 Commits

Author SHA1 Message Date
Claude Code
4a5b425ee8 sshCommand ???? Jenkinsfile ?? 2026-05-22 19:14:23 +09:00
Claude Code
a9bbda712a Merge dev into master: gradlew ?? ?? ?? 2026-05-22 18:52:01 +09:00

100
Jenkinsfile vendored
View File

@@ -14,9 +14,11 @@ pipeline {
TOMCAT_HOME = '/usr/local/tomcat' TOMCAT_HOME = '/usr/local/tomcat'
DEPLOY_PATH = "${TOMCAT_HOME}/webapps" DEPLOY_PATH = "${TOMCAT_HOME}/webapps"
BACKUP_PATH = "${TOMCAT_HOME}/backup" BACKUP_PATH = "${TOMCAT_HOME}/backup"
DEPLOY_FILE = "${TOMCAT_HOME}/webapps/sake_batch.war"
BACKUP_FILE = "${TOMCAT_HOME}/backup/sake_batch.war.bak"
// 자격증명 // SSH 키 (쇼핑몰과 동일하게 주석 처리 - jenkins 기본 키 사용)
SSH_CREDENTIAL = 'op-batch-servers-ssh' // SSH_KEY_PATH = "/var/lib/jenkins/.ssh/batch_server_key"
} }
stages { stages {
@@ -37,18 +39,21 @@ pipeline {
stage('Backup') { stage('Backup') {
steps { steps {
sshagent(credentials: ["${SSH_CREDENTIAL}"]) { script {
sh """ sshCommand remote: [
ssh ${SERVER_USER}@${SERVER_IP} ' name: 'Batch Server',
mkdir -p ${BACKUP_PATH} host: "${env.SERVER_IP}",
if [ -f ${DEPLOY_PATH}/${APP_NAME}.war ]; then user: "${env.SERVER_USER}",
cp ${DEPLOY_PATH}/${APP_NAME}.war \ // identityFile: "${env.SSH_KEY_PATH}",
${BACKUP_PATH}/${APP_NAME}.war.bak allowAnyHosts: true
echo "백업 완료" ], command: """
else if [ -f ${env.DEPLOY_FILE} ]; then
echo "백업 대상 없음 (최초 배포)" mkdir -p ${env.BACKUP_PATH}
fi cp ${env.DEPLOY_FILE} ${env.BACKUP_FILE}
' echo '기존 WAR 파일 백업 완료'
else
echo '백업할 WAR 파일이 없습니다 (최초 배포)'
fi
""" """
} }
} }
@@ -56,19 +61,27 @@ pipeline {
stage('Deploy') { stage('Deploy') {
steps { steps {
sshagent(credentials: ["${SSH_CREDENTIAL}"]) { script {
sh """ sshPut remote: [
# WAR 전송 name: 'Batch Server',
scp build/libs/${APP_NAME}.war \ host: "${env.SERVER_IP}",
${SERVER_USER}@${SERVER_IP}:${DEPLOY_PATH}/${APP_NAME}.war user: "${env.SERVER_USER}",
// identityFile: "${env.SSH_KEY_PATH}",
allowAnyHosts: true
], from: "build/libs/${env.APP_NAME}.war",
into: "${env.DEPLOY_FILE}"
# Tomcat 재시작 sshCommand remote: [
ssh ${SERVER_USER}@${SERVER_IP} ' name: 'Batch Server',
${TOMCAT_HOME}/bin/shutdown.sh || true host: "${env.SERVER_IP}",
sleep 5 user: "${env.SERVER_USER}",
${TOMCAT_HOME}/bin/startup.sh // identityFile: "${env.SSH_KEY_PATH}",
echo "Tomcat 재시작 완료" allowAnyHosts: true
' ], command: """
${env.TOMCAT_HOME}/bin/shutdown.sh || true
sleep 5
${env.TOMCAT_HOME}/bin/startup.sh
echo 'Tomcat 재시작 완료'
""" """
} }
} }
@@ -77,26 +90,29 @@ pipeline {
post { post {
success { success {
echo "✅ sake_batch 배포 완료" echo '✅ sake_batch 배포 완료'
} }
failure { failure {
sshagent(credentials: ["${SSH_CREDENTIAL}"]) { script {
sh """ sshCommand remote: [
ssh ${SERVER_USER}@${SERVER_IP} ' name: 'Batch Server',
if [ -f ${BACKUP_PATH}/${APP_NAME}.war.bak ]; then host: "${env.SERVER_IP}",
cp ${BACKUP_PATH}/${APP_NAME}.war.bak \ user: "${env.SERVER_USER}",
${DEPLOY_PATH}/${APP_NAME}.war // identityFile: "${env.SSH_KEY_PATH}",
${TOMCAT_HOME}/bin/shutdown.sh || true allowAnyHosts: true
sleep 5 ], command: """
${TOMCAT_HOME}/bin/startup.sh if [ -f ${env.BACKUP_FILE} ]; then
echo "롤백 완료" cp ${env.BACKUP_FILE} ${env.DEPLOY_FILE}
else ${env.TOMCAT_HOME}/bin/shutdown.sh || true
echo "백업본 없음 - 롤백 불가" sleep 5
fi ${env.TOMCAT_HOME}/bin/startup.sh
' echo '⚠️ 롤백 완료'
else
echo '⚠️ 백업본 없음 - 롤백 불가'
fi
""" """
} }
echo "❌ 배포 실패 - 롤백 처리됨" echo '❌ 배포 실패 - 롤백 처리됨'
} }
} }
} }