Files
operationSystem-front/Jenkinsfile.stage
2025-02-12 18:29:27 +09:00

88 lines
3.7 KiB
Plaintext

pipeline {
agent any
environment {
DOCKER_IMAGE = "caliverse/admintool-front-stage"
DOCKER_TAG = "1.0.0"
DOCKER_TAG_PRE = "1.0.0"
FILE_NAME = 'admintool_front-stage.tar'
DOCKER_NAME = 'admintool-front-stage'
DOCKER_PORT = '8080'
DOCKERFILE_NAME = 'Dockerfile.stage'
}
stages {
stage('Docker Build') {
steps {
sh 'docker rmi $DOCKER_IMAGE:$DOCKER_TAG_PRE || true' //이전 이미지 삭제
sh 'docker build -f $DOCKERFILE_NAME -t $DOCKER_IMAGE:$DOCKER_TAG .' //Dockerfile 기준으로 이미지 생성
echo 'Docker Image Create'
sh 'docker save -o $FILE_NAME $DOCKER_IMAGE:$DOCKER_TAG' //이미지 .tar 로 생성
echo 'Docker Image > .tar File Create'
script {
def todayDate = sh(script: "date +%Y-%m-%d", returnStdout: true).trim()
def fileName = "${FILE_NAME}_${todayDate}.tar"
sh "cp ${FILE_NAME} ${fileName}" // 이름 변경
}
}
}
stage('Transfer Docker Image') {
steps {
// aws .tar transfer
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'stage-frontend',
transfers: [
sshTransfer(
sourceFiles: "${FILE_NAME}",
remoteDirectory: '',
execCommand: """
echo '.tar Transfer Complete'
""",
execTimeout: 120000
)
],
usePromotionTimestamp: false,
verbose: true
)
]
)
}
}
stage('Deploy to Remote'){
steps{
// aws command
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'stage-frontend',
transfers: [
sshTransfer(
execCommand: """
docker stop ${DOCKER_NAME} || true &&
docker rm ${DOCKER_NAME} || true &&
docker rmi ${DOCKER_IMAGE}:${DOCKER_TAG_PRE} || true &&
docker load -i ${FILE_NAME} &&
docker run -d \
-p ${DOCKER_PORT}:${DOCKER_PORT} \
--name ${DOCKER_NAME} \
--restart=always \
-v ./admintool/log:/var/log/nginx \
-e TZ=\${TZ:-Asia/Seoul} \
${DOCKER_IMAGE}:${DOCKER_TAG} &&
rm ${FILE_NAME}
echo 'Docker Container Create Complete'
""",
execTimeout: 120000
)
],
usePromotionTimestamp: false,
verbose: true
)
]
)
}
}
}
}