-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJenkinsfile-python
More file actions
102 lines (95 loc) · 4.37 KB
/
Jenkinsfile-python
File metadata and controls
102 lines (95 loc) · 4.37 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
pipeline {
agent any
environment {
DOCKER_IMAGE_ANALYZER = 'ghkdtnql/overthecam-analyzer'
}
stages {
stage('Git Clone') {
steps {
script {
try {
echo '====== Git Clone 시작 ======'
git branch: 'main',
url: 'https://lab.ssafy.com/s12-webmobile1-sub1/S12P11D204.git',
credentialsId: 'gitlab-user'
echo '====== Git Clone 성공 ======'
// 📌 Git Clone 후 파일 목록 확인
sh "ls -l /var/jenkins_home/workspace/python/python-analyzer/models/saved/emotion_model"
} catch (Exception e) {
echo '====== Git Clone 실패 ======'
error "Git clone failed: ${e.message}"
}
}
}
}
stage('Docker Build & Push') {
steps {
script {
try {
echo '====== Docker Build 시작 ======'
dir('python-analyzer') {
withCredentials([usernamePassword(credentialsId: 'docker', usernameVariable: 'DOCKERHUB_CREDENTIALS_USR', passwordVariable: 'DOCKERHUB_CREDENTIALS_PSW')]) {
sh """
docker images | grep ${DOCKER_IMAGE_ANALYZER} | tr -s ' ' | cut -d ' ' -f 2 | xargs -I {} docker rmi ${DOCKER_IMAGE_ANALYZER}:{} || true
docker build -t ${DOCKER_IMAGE_ANALYZER}:${BUILD_NUMBER} .
echo '${DOCKERHUB_CREDENTIALS_PSW}' | docker login -u '${DOCKERHUB_CREDENTIALS_USR}' --password-stdin
docker push ${DOCKER_IMAGE_ANALYZER}:${BUILD_NUMBER}
docker logout
"""
}
}
echo '====== Docker Build & Push 완료 ======'
} catch (Exception e) {
echo '====== Docker Build/Push 실패 ======'
error "Docker build/push failed: ${e.message}"
}
}
}
}
stage('Deploy to EC2') {
steps {
script {
try {
echo '====== EC2 배포 시작 ======'
sshagent(['ssh']) {
sh '''
ssh -o StrictHostKeyChecking=no ubuntu@i12d204.p.ssafy.io "\
echo '새 이미지 가져오는 중...' && \
docker pull ${DOCKER_IMAGE_ANALYZER}:${BUILD_NUMBER} && \
echo '기존 컨테이너 중지 중...' && \
docker stop python || true && \
docker rm python || true && \
echo '새 컨테이너 시작 중...' && \
docker run -d --name python \
-p 5001:5001 \
${DOCKER_IMAGE_ANALYZER}:${BUILD_NUMBER} && \
docker system prune -f && \
echo '컨테이너 로그:' && \
sleep 10 && \
docker logs python"
'''
}
echo '====== EC2 배포 성공 ======'
} catch (Exception e) {
echo '====== EC2 배포 실패 ======'
error "Deployment failed: ${e.message}"
}
}
}
}
}
post {
always {
echo '====== 파이프라인 종료 ======'
sh "docker logout || true"
cleanWs()
}
failure {
echo '====== 파이프라인 실패 ======'
sh "docker rmi ${DOCKER_IMAGE_ANALYZER}:${BUILD_NUMBER} || true"
}
success {
echo '===== 파이프라인 성공 ====='
}
}
}