91 lines
3.2 KiB
Plaintext
91 lines
3.2 KiB
Plaintext
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
JAVA_HOME = '/var/lib/jenkins/tools/openjdk17'
|
|
MAVEN_HOME = '/usr/share/maven'
|
|
PATH = "${MAVEN_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
|
|
APP_NAME = 'oms'
|
|
VERSION = '0.0.1-SNAPSHOT'
|
|
JAR_FILE = "target/oms.jar"
|
|
AWS_SERVER = '47.128.247.197'
|
|
AWS_USER = 'rocky'
|
|
DEPLOY_PATH = '/home/build' // 빌드 산출물 업로드 경로
|
|
RUN_PATH = '/home/run' // 실행 경로
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
steps {
|
|
sh 'echo "Building application..."'
|
|
script {
|
|
def mvnHome = tool 'maven'
|
|
sh "${mvnHome}/bin/mvn clean package -Pdev -DskipTests -Dspring.profiles.active=dev"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Archive Artifacts') {
|
|
steps {
|
|
sh 'echo "Checking JAR file..."'
|
|
sh 'ls -la target/'
|
|
sh 'ls -la target/*.jar'
|
|
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
|
|
}
|
|
}
|
|
|
|
stage('Deploy to AWS') {
|
|
steps {
|
|
script {
|
|
// 실제 빌드된 JAR 파일 찾기
|
|
def jarFiles = sh(
|
|
script: 'find target -name "*.jar" -not -name "*-sources.jar" -not -name "*-javadoc.jar" | head -1',
|
|
returnStdout: true
|
|
).trim()
|
|
|
|
if (!jarFiles) {
|
|
error "JAR 파일을 찾을 수 없습니다."
|
|
}
|
|
|
|
def actualJarFile = jarFiles.split('\n')[0]
|
|
echo "실제 JAR 파일: ${actualJarFile}"
|
|
|
|
withCredentials([sshUserPrivateKey(credentialsId: 'coreserver2', keyFileVariable: 'SSH_KEY')]) {
|
|
sh """
|
|
echo "Deploying to AWS server..."
|
|
chmod +x deploy-aws2.sh
|
|
./deploy-aws2.sh ${AWS_SERVER} ${AWS_USER} "\${SSH_KEY}" ${actualJarFile} ${DEPLOY_PATH}
|
|
echo "Uploading and running runApi.sh..."
|
|
chmod +x runApi.sh
|
|
scp -i "\${SSH_KEY}" runApi.sh ${AWS_USER}@${AWS_SERVER}:/home/${AWS_USER}/temp_runApi.sh
|
|
ssh -i "\${SSH_KEY}" ${AWS_USER}@${AWS_SERVER} "sudo -i bash -c 'mv /home/${AWS_USER}/temp_runApi.sh ${RUN_PATH}/runApi.sh && chmod +x ${RUN_PATH}/runApi.sh && JAR_NAME=\$(basename ${actualJarFile}) BUILD_DIR=${DEPLOY_PATH} RUN_DIR=${RUN_PATH} ${RUN_PATH}/runApi.sh'"
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo 'Pipeline succeeded!'
|
|
// 슬랙 알림 등 추가 가능
|
|
}
|
|
failure {
|
|
echo 'Pipeline failed!'
|
|
// 실패 알림 등 추가 가능
|
|
}
|
|
always {
|
|
// 빌드 결과 정리
|
|
sh 'echo "Build completed"'
|
|
}
|
|
}
|
|
}
|
|
|