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" DEPLOY_FILE = "${TOMCAT_HOME}/webapps/sake_batch.war" BACKUP_FILE = "${TOMCAT_HOME}/backup/sake_batch.war.bak" // SSH 키 (쇼핑몰과 동일하게 주석 처리 - jenkins 기본 키 사용) // SSH_KEY_PATH = "/var/lib/jenkins/.ssh/batch_server_key" } stages { stage('Checkout') { steps { git branch: 'master', credentialsId: 'itfirst', url: 'http://115.68.207.90:3000/itfirst/sake_batch.git' } } stage('Build') { steps { sh 'chmod +x gradlew' sh './gradlew clean war' } } stage('Backup') { steps { 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 """ } } } stage('Deploy') { steps { 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}" 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 재시작 완료' """ } } } } post { success { echo '✅ sake_batch 배포 완료' } failure { 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 '❌ 배포 실패 - 롤백 처리됨' } } }