-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathJenkinsfile
More file actions
78 lines (65 loc) · 1.96 KB
/
Jenkinsfile
File metadata and controls
78 lines (65 loc) · 1.96 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
pipeline {
agent any
environment {
APP_NAME = "simple-java-docker-app"
IMAGE_TAG = "latest"
ECR_REPO = "814022332232.dkr.ecr.ap-south-1.amazonaws.com/my-ecr-repo"
AWS_REGION = "ap-south-1"
}
stages {
stage("Checkout Code") {
steps {
git branch: 'main', url: 'https://github.com/bhagyashreep032/simple-java-docker-app.git'
}
}
stage("Build Java App") {
steps {
sh "mvn clean package -DskipTests"
}
}
stage("Build image") {
steps {
sh """
docker build -t ${APP_NAME}:latest .
docker tag ${APP_NAME}:latest ${ECR_REPO}:latest
"""
}
}
stage("ECR Login") {
steps {
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding',
credentialsId: 'aws-cred']]) {
sh """
aws ecr get-login-password --region ${AWS_REGION} \
| docker login --username AWS --password-stdin ${ECR_REPO}
"""
}
}
}
stage("Push to ECR") {
steps {
sh "docker push ${ECR_REPO}:latest"
}
}
stage('Deploy using Helm') {
steps {
withCredentials([
[$class: 'AmazonWebServicesCredentialsBinding',
credentialsId: 'aws-cred'],
file(credentialsId: 'kube-cred', variable: 'KUBECONFIG')
]) {
sh """
echo "Using kubeconfig at \$KUBECONFIG"
aws sts get-caller-identity
kubectl get nodes
helm upgrade --install myapp $WORKSPACE/helm-repo \
--namespace jenkins \
--create-namespace \
--set image.repository=${ECR_REPO} \
--set image.tag=${IMAGE_TAG}
"""
}
}
}
}
}