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