113 lines
4.4 KiB
Plaintext
113 lines
4.4 KiB
Plaintext
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
DOCKER_IMAGE = 'caliverse/admintool-back-stage'
|
|
DOCKER_TAG = '1.0.0'
|
|
DOCKER_TAG_PRE = '1.0.0'
|
|
FILE_NAME = 'admintool_back_stage.tar'
|
|
DOCKER_NAME = 'admintool-back-stage'
|
|
DOCKER_PORT = '23450'
|
|
DOCKERFILE_NAME = 'Dockerfile.stage'
|
|
META_FOLDER = 'metadata/*'
|
|
REMOTE_META_FOLDER = 'admintool'
|
|
}
|
|
|
|
stages {
|
|
stage('Gradle Build') {
|
|
steps {
|
|
script {
|
|
sh 'sed -i "s/\\r$//" gradlew'
|
|
sh 'chmod +x gradlew'
|
|
sh './gradlew clean build -x test -Pprofile=stage' //빌드 test는 하지않는다
|
|
}
|
|
}
|
|
}
|
|
stage('Docker Image Build') {
|
|
steps {
|
|
script {
|
|
sh 'docker rmi $DOCKER_IMAGE:$DOCKER_TAG_PRE || true' //이전 이미지 삭제
|
|
sh 'rm $FILE_NAME || true' //이전 .tar 파일 삭제
|
|
sh 'docker build -f $DOCKERFILE_NAME -t $DOCKER_IMAGE:$DOCKER_TAG .'
|
|
echo 'Docker Image Create'
|
|
sh 'docker save -o $FILE_NAME $DOCKER_IMAGE:$DOCKER_TAG'
|
|
echo 'Docker Image > .tar File Create'
|
|
}
|
|
}
|
|
}
|
|
stage('SSH Tunneling Start') {
|
|
steps {
|
|
script {
|
|
sh '/home/admintool/ssh-tunneling-stage.sh start'
|
|
}
|
|
}
|
|
}
|
|
stage('Transfer Docker Image') {
|
|
steps {
|
|
// aws .tar transfer
|
|
sshPublisher(
|
|
publishers: [
|
|
sshPublisherDesc(
|
|
configName: 'stage-backend',
|
|
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-backend',
|
|
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 \
|
|
--log-opt max-size=10m \
|
|
-e TZ=\${TZ:-Asia/Seoul} \
|
|
-v ./admintool/log:/logs \
|
|
-v ./admintool/upload:/upload \
|
|
-v ./admintool/metadata:/metadata:ro,cached \
|
|
${DOCKER_IMAGE}:${DOCKER_TAG} &&
|
|
rm ${FILE_NAME}
|
|
""",
|
|
execTimeout: 120000
|
|
)
|
|
],
|
|
usePromotionTimestamp: false,
|
|
verbose: true
|
|
)
|
|
]
|
|
)
|
|
}
|
|
}
|
|
stage('SSH Tunneling Stop') {
|
|
steps {
|
|
script {
|
|
sh '/home/admintool/ssh-tunneling-stage.sh stop; /home/admintool/ssh-tunneling-stage.sh status'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |