forked from DeekshithSN/CICD_Java_gradle_application
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJenkinsfile
More file actions
132 lines (124 loc) · 4.92 KB
/
Jenkinsfile
File metadata and controls
132 lines (124 loc) · 4.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
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
130
131
132
pipeline{
agent any
stages{
stage("sonar quality check"){
agent {
docker{
image 'openjdk:11'
}
}
steps{
script{
withSonarQubeEnv(credentialsId: 'sonar-token') {
sh 'chmod +x gradlew'
sh './gradlew sonarqube'
}
}
}
}
}
}
/*pipeline{
agent any
environment{
VERSION = "${env.BUILD_ID}"
}
stages{
stage("sonar quality check"){
agent {
docker {
image 'openjdk:11'
}
}
steps{
script{
withSonarQubeEnv(credentialsId: 'sonar-token') {
sh 'chmod +x gradlew'
sh './gradlew sonarqube'
}
timeout(time: 1, unit: 'HOURS') {
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
}
}
stage("docker build & docker push"){
steps{
script{
withCredentials([string(credentialsId: 'docker_pass', variable: 'docker_password')]) {
sh '''
docker build -t 34.125.214.226:8083/springapp:${VERSION} .
docker login -u admin -p $docker_password 34.125.214.226:8083
docker push 34.125.214.226:8083/springapp:${VERSION}
docker rmi 34.125.214.226:8083/springapp:${VERSION}
'''
}
}
}
}
stage('indentifying misconfigs using datree in helm charts'){
steps{
script{
dir('kubernetes/') {
withEnv(['DATREE_TOKEN=GJdx2cP2TCDyUY3EhQKgTc']) {
sh 'helm datree test myapp/'
}
}
}
}
}
stage("pushing the helm charts to nexus"){
steps{
script{
withCredentials([string(credentialsId: 'docker_pass', variable: 'docker_password')]) {
dir('kubernetes/') {
sh '''
helmversion=$( helm show chart myapp | grep version | cut -d: -f 2 | tr -d ' ')
tar -czvf myapp-${helmversion}.tgz myapp/
curl -u admin:$docker_password http://34.125.214.226:8081/repository/helm-hosted/ --upload-file myapp-${helmversion}.tgz -v
'''
}
}
}
}
}
stage('manual approval'){
steps{
script{
timeout(10) {
mail bcc: '', body: "<br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br> Go to build url and approve the deployment request <br> URL de build: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: '', mimeType: 'text/html', replyTo: '', subject: "${currentBuild.result} CI: Project name -> ${env.JOB_NAME}", to: "deekshith.snsep@gmail.com";
input(id: "Deploy Gate", message: "Deploy ${params.project_name}?", ok: 'Deploy')
}
}
}
}
stage('Deploying application on k8s cluster') {
steps {
script{
withCredentials([kubeconfigFile(credentialsId: 'kubernetes-config', variable: 'KUBECONFIG')]) {
dir('kubernetes/') {
sh 'helm upgrade --install --set image.repository="34.125.214.226:8083/springapp" --set image.tag="${VERSION}" myjavaapp myapp/ '
}
}
}
}
}
stage('verifying app deployment'){
steps{
script{
withCredentials([kubeconfigFile(credentialsId: 'kubernetes-config', variable: 'KUBECONFIG')]) {
sh 'kubectl run curl --image=curlimages/curl -i --rm --restart=Never -- curl myjavaapp-myapp:8080'
}
}
}
}
}
post {
always {
mail bcc: '', body: "<br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br> URL de build: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: '', mimeType: 'text/html', replyTo: '', subject: "${currentBuild.result} CI: Project name -> ${env.JOB_NAME}", to: "deekshith.snsep@gmail.com";
}
}
}*/