This repository has been archived by the owner on Aug 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathJenkinsfile-CD
98 lines (87 loc) · 3.46 KB
/
Jenkinsfile-CD
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
pipeline {
environment {
registry = "qzqz0826/careers-application"
registryCredential = 'docker-hub'
dockerImage = ''
}
agent any
stages {
stage('Git Clone') {
steps {
echo 'Source Clone'
git branch: 'main', credentialsId: 'Careers-Git', url: '[email protected]:f-lab-edu/careers.git'
}
}
stage('Unit Test') {
steps {
echo 'Careers Test'
sh 'chmod +x gradlew'
sh './gradlew clean checkstyleTest'
}
}
stage('Build') {
steps {
echo 'Careers Build'
sh './gradlew build --exclude-task test --exclude-task asciidoctor'
}
}
stage('Docekr Build') {
steps {
script {
echo 'Docekr Build & Push'
dockerImage = docker.build(registry + ":$BUILD_NUMBER", '--build-arg JAR_FILE=build/libs/*.jar .')
}
}
}
stage('Docker Publish') {
steps {
echo 'Docker Publish'
script {
docker.withRegistry('', registryCredential) {
dockerImage.push("$BUILD_NUMBER")
}
}
}
}
stage('Docker Image Cleaning up') {
steps {
sh "docker rmi $registry:$BUILD_NUMBER"
}
}
stage('Deploy') {
steps([$class: 'BapSshPromotionPublisherPlugin']) {
echo 'SSH Publish'
sshPublisher(
continueOnError: false, //서버에 문제가 발생 시 진행여부
failOnError: true, //서버에 deploy 시 문제가 있는 경우 빌드 실패로 표시 여부
publishers :[
sshPublisherDesc(
configName: "careers-instance-1",//Jenkins 시스템 정보에 사전 입력한 서버 ID
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "", //젠킨스 서버에서 전송할 파일
removePrefix: "", //파일에서 삭제할 경로가 있다면 작성
remoteDirectory: "", //배포할 위치
execCommand: "./script.sh $BUILD_NUMBER" //원격지에서 실행할 커맨드
)
]
),
sshPublisherDesc(
configName: "careers-instance-2",//Jenkins 시스템 정보에 사전 입력한 서버 ID
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "", //젠킨스 서버에서 전송할 파일
removePrefix: "", //파일에서 삭제할 경로가 있다면 작성
remoteDirectory: "", //배포할 위치
execCommand: "./script.sh $BUILD_NUMBER" //원격지에서 실행할 커맨드
)
]
)
]
)
}
}
}
}