-
Notifications
You must be signed in to change notification settings - Fork 227
Expand file tree
/
Copy pathJenkinsfile
More file actions
129 lines (105 loc) · 3.17 KB
/
Copy pathJenkinsfile
File metadata and controls
129 lines (105 loc) · 3.17 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
node {
def tag = "3.0"
def dockerHubUser = "anujsharma1990"
def containerName = "bankingapp"
def httpPort = "8989"
def containerPort = "8989"
stage('Clean Workspace') {
cleanWs()
}
stage('Checkout Code') {
echo "Checking out source code..."
checkout scm
}
stage('Maven Build') {
echo "Building application..."
sh "mvn clean package -DskipTests"
}
stage('Get Docker Credentials') {
withCredentials([
usernamePassword(
credentialsId: 'dockerHubAccount',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASSWORD'
)
]) {
dockerHubUser = env.DOCKER_USER
}
}
stage('Build Docker Image') {
echo "Building Docker image..."
sh """
docker build \
--pull \
--no-cache \
-t ${dockerHubUser}/${containerName}:${tag} .
"""
}
stage('Push Docker Image') {
withCredentials([
usernamePassword(
credentialsId: 'dockerHubAccount',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASSWORD'
)
]) {
sh """
echo "\$DOCKER_PASSWORD" | docker login \
-u "\$DOCKER_USER" \
--password-stdin
docker push ${dockerHubUser}/${containerName}:${tag}
docker logout
"""
}
}
stage('Deploy Container') {
withCredentials([
usernamePassword(
credentialsId: 'dockerHubAccount',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASSWORD'
)
]) {
sh """
echo "\$DOCKER_PASSWORD" | docker login \
-u "\$DOCKER_USER" \
--password-stdin
docker pull ${dockerHubUser}/${containerName}:${tag}
echo "Checking for existing container..."
if docker ps -a --format '{{.Names}}' | grep -w ${containerName}; then
echo "Stopping existing container..."
docker stop ${containerName}
docker rm ${containerName}
fi
echo "Starting new container..."
docker run -d \
--name ${containerName} \
--restart unless-stopped \
-p ${httpPort}:${containerPort} \
${dockerHubUser}/${containerName}:${tag}
docker image prune -f
docker logout
"""
}
}
/*
stage('Kubernetes Deployment') {
sleep 15
sh """
kubectl delete -f deployment.yaml | true
kubectl apply -f deployment.yaml
kubectl get pods -o wide
"""
}
*/
stage('Verify Deployment') {
sleep 15
sh """
docker ps
curl -f http://localhost:${httpPort}/bank-api/swagger-ui.html
"""
}
stage('Cleanup') {
cleanWs()
}
}