Compare commits

...

2 Commits

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

88
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: """
if [ -f ${env.DEPLOY_FILE} ]; then
mkdir -p ${env.BACKUP_PATH}
cp ${env.DEPLOY_FILE} ${env.BACKUP_FILE}
echo '기존 WAR 파일 백업 완료'
else else
echo "백업 대상 없음 (최초 배포)" echo '백업할 WAR 파일이 없습니다 (최초 배포)'
fi 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}",
user: "${env.SERVER_USER}",
// identityFile: "${env.SSH_KEY_PATH}",
allowAnyHosts: true
], command: """
${env.TOMCAT_HOME}/bin/shutdown.sh || true
sleep 5 sleep 5
${TOMCAT_HOME}/bin/startup.sh ${env.TOMCAT_HOME}/bin/startup.sh
echo "Tomcat 재시작 완료" 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
], command: """
if [ -f ${env.BACKUP_FILE} ]; then
cp ${env.BACKUP_FILE} ${env.DEPLOY_FILE}
${env.TOMCAT_HOME}/bin/shutdown.sh || true
sleep 5 sleep 5
${TOMCAT_HOME}/bin/startup.sh ${env.TOMCAT_HOME}/bin/startup.sh
echo "롤백 완료" echo '⚠️ 롤백 완료'
else else
echo "백업본 없음 - 롤백 불가" echo '⚠️ 백업본 없음 - 롤백 불가'
fi fi
'
""" """
} }
echo "❌ 배포 실패 - 롤백 처리됨" echo '❌ 배포 실패 - 롤백 처리됨'
} }
} }
} }