60 lines
2.0 KiB
Groovy
60 lines
2.0 KiB
Groovy
// GUARDiA MES — CI/CD Pipeline (Jenkins, 보조)
|
|
// 주 배포는 Gitea webhook → deploy_server.py(9999). Jenkins는 검증/롤백 백업 경로.
|
|
// 저장소 구조: backend/, frontend/ 가 루트에 위치 (단일 jar — frontend가 backend static으로 번들됨)
|
|
pipeline {
|
|
agent any
|
|
environment {
|
|
MES_HOME = '/opt/guardia-mes'
|
|
JAVA_HOME = '/usr/lib/jvm/java-21-openjdk-amd64' // 서버 JDK21 (Java17 타겟 호환 빌드)
|
|
PATH = "${JAVA_HOME}/bin:${env.PATH}"
|
|
}
|
|
stages {
|
|
stage('Checkout') { steps { checkout scm } }
|
|
|
|
// frontend 먼저 빌드 → vite outDir(../backend/src/main/resources/static)에 산출 → jar에 번들
|
|
stage('Frontend Build') {
|
|
steps {
|
|
dir('frontend') {
|
|
sh 'npm ci --silent 2>/dev/null || npm install --silent'
|
|
sh 'npm run build'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Backend Build & Test') {
|
|
steps {
|
|
dir('backend') {
|
|
sh 'mvn clean package -DskipTests -q'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy') {
|
|
steps {
|
|
sh '''
|
|
sudo systemctl stop guardia-mes 2>/dev/null || true
|
|
sudo mkdir -p ${MES_HOME}
|
|
sudo cp backend/target/guardia-mes-*.jar ${MES_HOME}/app.jar
|
|
sudo systemctl start guardia-mes
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Health Check') {
|
|
steps {
|
|
retry(5) {
|
|
sleep 8
|
|
sh 'curl -sf http://localhost:8013/actuator/health | grep -q "UP"'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success { echo 'GUARDiA MES 배포 성공 (포트 8013)' }
|
|
failure {
|
|
sh 'sudo systemctl stop guardia-mes 2>/dev/null || true'
|
|
echo 'GUARDiA MES 배포 실패 — 서비스 중지(롤백)'
|
|
}
|
|
}
|
|
}
|