Jenkins ?? ????? Jenkinsfile ??
This commit is contained in:
219
Jenkinsfile
vendored
219
Jenkinsfile
vendored
@@ -1,170 +1,74 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
agent any
|
||||||
|
|
||||||
tools {
|
tools {
|
||||||
jdk 'JDK17'
|
jdk 'JDK17'
|
||||||
}
|
}
|
||||||
|
|
||||||
// parameters {
|
|
||||||
// choice(name: 'ENVIRONMENT', choices: ['dev'], description: '배포할 어플리케이션 profile 선택')
|
|
||||||
// choice(name: 'DEPLOY_SERVER_IP', choices: ['172.31.20.11'], description: '배포할 WAS 서버 IP 선택')
|
|
||||||
// string(name: 'GIT_REPO', defaultValue: 'http://172.31.18.11:3000/gcone/gcone_batch.git', description: 'Git 레파지토리 주소')
|
|
||||||
// }
|
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
SERVER_IP = "${DEPLOY_SERVER_IP}"
|
// 서버 정보
|
||||||
SERVER_USER = "tomcat"
|
SERVER_IP = '115.68.232.36'
|
||||||
TOMCAT_HOME = "${ENVIRONMENT == 'dev' ? '/var/lib/tomcat' : '/usr/local/tomcat'}"
|
SERVER_USER = 'tomcat'
|
||||||
DEPLOY_PATH = "${TOMCAT_HOME}/webapps"
|
|
||||||
BACKUP_PATH = "${DEPLOY_PATH}/backup"
|
// 앱 정보
|
||||||
APP_NAME = "gcone_batch"
|
APP_NAME = 'sake_batch'
|
||||||
WAR_FILE = "${APP_NAME}.war"
|
TOMCAT_HOME = '/usr/local/tomcat'
|
||||||
DEPLOY_FILE = "${DEPLOY_PATH}/${WAR_FILE}"
|
DEPLOY_PATH = "${TOMCAT_HOME}/webapps"
|
||||||
BACKUP_FILE = "${BACKUP_PATH}/${WAR_FILE}.bak"
|
BACKUP_PATH = "${TOMCAT_HOME}/backup"
|
||||||
GIT_BRANCH = "${ENVIRONMENT == 'dev' ? 'develop' : 'master'}"
|
|
||||||
// SSH_KEY_PATH = "C:/Users/CHAMDAHAN-41/.ssh/id_rsa"
|
// 자격증명
|
||||||
|
SSH_CREDENTIAL = 'op-batch-servers-ssh'
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
|
|
||||||
stage('Setup parameters') {
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
try {
|
|
||||||
echo "Setup parameters ${ENVIRONMENT}"
|
|
||||||
echo "tomcat home here ${env.TOMCAT_HOME}"
|
|
||||||
|
|
||||||
|
|
||||||
if("${ENVIRONMENT}" == "dev" ) {
|
|
||||||
properties([
|
|
||||||
parameters([
|
|
||||||
choice(name: 'ENVIRONMENT', choices: ['dev'], description: '배포할 어플리케이션 profile 선택'),
|
|
||||||
choice(name: 'DEPLOY_SERVER_IP', choices: ['172.31.20.11'], description: '배포할 WAS 서버 IP 선택'),
|
|
||||||
string(name: 'GIT_REPO', defaultValue: 'http://172.31.18.11:3000/gcone/gcone_batch.git', description: 'Git 레파지토리 주소')
|
|
||||||
])
|
|
||||||
])
|
|
||||||
}else{
|
|
||||||
properties([
|
|
||||||
parameters([
|
|
||||||
choice(name: 'ENVIRONMENT', choices: ['stage'], description: '배포할 어플리케이션 profile 선택'),
|
|
||||||
choice(name: 'DEPLOY_SERVER_IP', choices: ['10.100.241.11'], description: '배포할 WAS 서버 IP 선택'),
|
|
||||||
string(name: 'GIT_REPO', defaultValue: 'http://172.31.18.11:3000/gcone/gcone_batch.git', description: 'Git 레파지토리 주소')
|
|
||||||
])
|
|
||||||
])
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
error "Setup parameters 실패: ${e.getMessage()}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
stage('Checkout') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
git branch: 'master',
|
||||||
try {
|
credentialsId: 'itfirst',
|
||||||
echo "Checking out ${env.GIT_BRANCH} branch for ${params.ENVIRONMENT} environment"
|
url: 'http://115.68.207.90:3000/itfirst/sake_batch.git'
|
||||||
git branch: "${env.GIT_BRANCH}", url: "${params.GIT_REPO}"
|
|
||||||
echo "Checkout 성공: 브랜치 ${env.GIT_BRANCH}, 저장소 ${params.GIT_REPO}"
|
|
||||||
} catch (Exception e) {
|
|
||||||
error "Checkout 실패: ${e.getMessage()}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
sh './gradlew clean war'
|
||||||
try {
|
|
||||||
if("${RUNNING_OS}" == "linux" ) {
|
|
||||||
sh 'chmod +x gradlew'
|
|
||||||
sh "./gradlew clean war -x test -Pprofile=${params.ENVIRONMENT}"
|
|
||||||
}else{
|
|
||||||
bat "./gradlew.bat clean build -Pprofile=${params.ENVIRONMENT}"
|
|
||||||
}
|
|
||||||
echo "Build 성공"
|
|
||||||
} catch (Exception e) {
|
|
||||||
error "Build 실패: ${e.getMessage()}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Unit Tests') {
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
try {
|
|
||||||
if("${RUNNING_OS}" == "linux" ) {
|
|
||||||
sh "./gradlew test"
|
|
||||||
}else{
|
|
||||||
bat "./gradlew.bat test"
|
|
||||||
}
|
|
||||||
echo "Unit Tests 성공"
|
|
||||||
} catch (Exception e) {
|
|
||||||
error "Unit Tests 실패: ${e.getMessage()}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Backup') {
|
stage('Backup') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
||||||
sshCommand remote: [
|
sh """
|
||||||
name: 'WAS Server',
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
||||||
host: "${env.SERVER_IP}",
|
mkdir -p ${BACKUP_PATH}
|
||||||
user: "${env.SERVER_USER}",
|
if [ -f ${DEPLOY_PATH}/${APP_NAME}.war ]; then
|
||||||
identityFile: "${env.SSH_KEY_PATH}",
|
cp ${DEPLOY_PATH}/${APP_NAME}.war \
|
||||||
allowAnyHosts: true
|
${BACKUP_PATH}/${APP_NAME}.war.bak
|
||||||
], command: """
|
echo "백업 완료"
|
||||||
if [ -f ${env.DEPLOY_FILE} ]; then
|
else
|
||||||
mkdir -p ${env.BACKUP_PATH}
|
echo "백업 대상 없음 (최초 배포)"
|
||||||
cp ${env.DEPLOY_FILE} ${env.BACKUP_FILE}
|
fi
|
||||||
rm -r ${env.TOMCAT_HOME}/webapps/${env.WAR_FILE}
|
'
|
||||||
echo "기존 WAR 파일 백업 완료"
|
|
||||||
else
|
|
||||||
echo "백업할 WAR 파일이 없습니다"
|
|
||||||
fi
|
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Deploy to Tomcat') {
|
stage('Deploy') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
||||||
sshPut remote: [
|
sh """
|
||||||
name: 'WAS Server',
|
# WAR 전송
|
||||||
host: "${env.SERVER_IP}",
|
scp build/libs/${APP_NAME}.war \
|
||||||
user: "${env.SERVER_USER}",
|
${SERVER_USER}@${SERVER_IP}:${DEPLOY_PATH}/${APP_NAME}.war
|
||||||
identityFile: "${env.SSH_KEY_PATH}",
|
|
||||||
allowAnyHosts: true
|
|
||||||
], from: "build/libs/${env.WAR_FILE}", into: "${env.DEPLOY_FILE}"
|
|
||||||
|
|
||||||
sshCommand remote: [
|
# Tomcat 재시작
|
||||||
name: 'WAS Server',
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
||||||
host: "${env.SERVER_IP}",
|
${TOMCAT_HOME}/bin/shutdown.sh || true
|
||||||
user: "${env.SERVER_USER}",
|
sleep 5
|
||||||
identityFile: "${env.SSH_KEY_PATH}",
|
${TOMCAT_HOME}/bin/startup.sh
|
||||||
allowAnyHosts: true
|
echo "Tomcat 재시작 완료"
|
||||||
], command: """
|
'
|
||||||
if nc -z localhost 8005; then
|
|
||||||
echo "Tomcat이 실행 중입니다. 종료 중..."
|
|
||||||
${env.TOMCAT_HOME}/bin/shutdown.sh
|
|
||||||
sleep 2
|
|
||||||
rm -r ${env.TOMCAT_HOME}/webapps/${env.APP_NAME}
|
|
||||||
sleep 10
|
|
||||||
else
|
|
||||||
echo "Tomcat이 실행 중이지 않습니다."
|
|
||||||
fi
|
|
||||||
${env.TOMCAT_HOME}/bin/startup.sh
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
echo "Deploy 완료 (${params.ENVIRONMENT} 환경, ${env.GIT_BRANCH} 브랜치)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -172,37 +76,26 @@ pipeline {
|
|||||||
|
|
||||||
post {
|
post {
|
||||||
success {
|
success {
|
||||||
echo '배포가 성공적으로 완료되었습니다.'
|
echo "✅ sake_batch 배포 완료"
|
||||||
}
|
}
|
||||||
failure {
|
failure {
|
||||||
script {
|
sshagent(credentials: ["${SSH_CREDENTIAL}"]) {
|
||||||
echo '배포에 실패했습니다. 이전 버전으로 롤백을 시도합니다.'
|
sh """
|
||||||
sshCommand remote: [
|
ssh ${SERVER_USER}@${SERVER_IP} '
|
||||||
name: 'WAS 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}
|
|
||||||
if nc -z localhost 8005; then
|
|
||||||
echo "Tomcat이 실행 중입니다. 종료 중..."
|
|
||||||
${env.TOMCAT_HOME}/bin/shutdown.sh
|
|
||||||
sleep 10
|
|
||||||
else
|
else
|
||||||
echo "Tomcat이 실행 중이지 않습니다."
|
echo "백업본 없음 - 롤백 불가"
|
||||||
fi
|
fi
|
||||||
${env.TOMCAT_HOME}/bin/startup.sh
|
'
|
||||||
echo "롤백 완료"
|
|
||||||
else
|
|
||||||
echo "백업 파일이 존재하지 않아 롤백할 수 없습니다."
|
|
||||||
fi
|
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
echo "❌ 배포 실패 - 롤백 처리됨"
|
||||||
always {
|
|
||||||
echo '파이프라인 실행이 종료되었습니다.'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user