-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJenkinsfile
More file actions
85 lines (73 loc) · 2.92 KB
/
Jenkinsfile
File metadata and controls
85 lines (73 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
pipeline {
agent any
environment {
DOCKER_IMAGE_NAME = 'monitoring-pal:latest'
DOCKER_IMAGE_FILE = 'monitoring-pal.tar.gz'
// Config‑file‑management 플러그인에 등록한 파일 ID
ENV_FILE_ID = 'env-file'
}
stages {
/* 1) 환경 변수 로드 ---------------------------------------------- */
stage('Init Env') {
steps {
configFileProvider([configFile(fileId: ENV_FILE_ID, variable: 'ENV_SRC')]) {
script {
// 1) 워크스페이스에 .env 파일로 복사
sh 'cp "$ENV_SRC" "$WORKSPACE/.env"'
// 2) 전역 변수로 경로 보존
env.ENV_FILE_PATH = "$WORKSPACE/.env"
// 3) 프로퍼티 로드 → env 주입
readProperties(file: env.ENV_FILE_PATH).each { k, v ->
env."$k" = v
}
}
}
}
}
/* 2) Git 체크아웃 -------------------------------------------------- */
stage('CheckOut') {
steps {
checkout scm
}
}
/* 3) 빌드 --------------------------------------------------------- */
stage('Build') {
steps {
sh 'chmod +x ./gradlew'
sh './gradlew clean build -x test'
}
}
/* 4) Docker 이미지 빌드 ------------------------------------------- */
stage('Build Docker Image') {
steps {
sh "docker build -t ${DOCKER_IMAGE_NAME} ."
}
}
/* 5) 이미지 아카이브 ---------------------------------------------- */
stage('Save Docker Image') {
steps {
sh "docker save ${DOCKER_IMAGE_NAME} | gzip > ${DOCKER_IMAGE_FILE}"
archiveArtifacts artifacts: "${DOCKER_IMAGE_FILE}"
}
}
/* 6) 로컬 배포 ---------------------------------------------------- */
stage('Deploy Docker Image Locally') {
steps {
script {
sh "docker load -i ${DOCKER_IMAGE_FILE}"
sh "docker stop monitoring-pal-container || true"
sh "docker rm monitoring-pal-container || true"
// prod 프로필로 컨테이너 실행. 모든 env 는 env‑file 로 전달
sh """
docker run -d --name monitoring-pal-container -p 8880:8880 \\
--env-file ${env.ENV_FILE_PATH} \\
-e SPRING_PROFILES_ACTIVE=prod \\
--network docker_backend \\
${DOCKER_IMAGE_NAME}
"""
sh "docker system prune -f"
}
}
}
}
}