59 lines
2.2 KiB
Groovy
59 lines
2.2 KiB
Groovy
pipeline {
|
|
agent any
|
|
environment {
|
|
SRC = '/opt/zioinfo/src'
|
|
JAR_DIR = '/opt/zioinfo/app'
|
|
STATIC = '/var/www/zioinfo'
|
|
MVN = '/usr/bin/mvn'
|
|
NOTIFY = "${ITSM_BASE_URL}/api/messenger/webhook"
|
|
}
|
|
options {
|
|
buildDiscarder(logRotator(numToKeepStr: '5'))
|
|
timeout(time: 20, unit: 'MINUTES')
|
|
timestamps()
|
|
}
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout([
|
|
$class: 'GitSCM', branches: scm.branches,
|
|
userRemoteConfigs: scm.userRemoteConfigs,
|
|
extensions: [[$class: 'SparseCheckoutPaths',
|
|
sparseCheckoutPaths: [[path: 'frontend'], [path: 'backend']]
|
|
]]
|
|
])
|
|
}
|
|
}
|
|
stage('Frontend Build') {
|
|
steps {
|
|
dir('frontend') {
|
|
sh 'npm ci --legacy-peer-deps --prefer-offline 2>/dev/null || npm install --legacy-peer-deps'
|
|
sh 'npm run build'
|
|
}
|
|
}
|
|
}
|
|
stage('Backend Build') {
|
|
steps {
|
|
dir('backend') {
|
|
sh "${MVN} clean package -DskipTests -q"
|
|
}
|
|
}
|
|
}
|
|
stage('Deploy') {
|
|
when { branch 'main' }
|
|
steps {
|
|
sh """
|
|
cp backend/target/*.jar ${JAR_DIR}/app.jar
|
|
cp -r backend/src/main/resources/static/. ${STATIC}/
|
|
systemctl restart zioinfo
|
|
sleep 4
|
|
systemctl is-active zioinfo || exit 1
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success { sh "curl -sf -X POST ${NOTIFY} -H 'Content-Type:application/json' -d '{\"event\":\"build_result\",\"room\":\"ops\",\"success\":true,\"result_summary\":\"✅ zioinfo-web 배포 완료 #${BUILD_NUMBER}\"}' 2>/dev/null || true" }
|
|
failure { sh "curl -sf -X POST ${NOTIFY} -H 'Content-Type:application/json' -d '{\"event\":\"build_result\",\"room\":\"ops\",\"success\":false,\"result_summary\":\"❌ zioinfo-web 빌드 실패 #${BUILD_NUMBER}\"}' 2>/dev/null || true" }
|
|
}
|
|
} |