-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
138 lines (108 loc) · 3.43 KB
/
Jenkinsfile
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
133
134
135
136
137
138
pipeline {
agent any
tools {
jdk 'JDK17'
nodejs 'node22'
}
environment {
SCANNER_HOME = tool "sonar-scanner"
}
stages {
stage('Cleanup Workspace') {
steps {
cleanWs()
}
}
stage('Checkout from SCM') {
steps {
git branch: 'master', url: 'https://github.com/mimaraslan/devops-004-pipeline-aws.git'
}
}
stage('Install Dependencies') {
steps {
sh 'npm install'
}
}
/*
stage("Sonarqube Analysis") {
steps {
withSonarQubeEnv('SonarTokenForJenkins') {
sh '''$SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=devops-004-pipeline-aws \
-Dsonar.projectKey=devops-004-pipeline-aws'''
}
}
}
*/
stage('Run SonarQube Analysis') {
steps {
withSonarQubeEnv('SonarTokenForJenkins') {
sh '''
${SCANNER_HOME}/bin/sonar-scanner \
-Dsonar.projectKey=devops-004-pipeline-aws \
-Dsonar.sources=src
'''
}
}
}
stage("Quality Gate"){
steps {
script {
waitForQualityGate abortPipeline: false, credentialsId: 'SonarTokenForJenkins'
}
}
}
stage('TRIVY FS SCAN') {
steps {
sh "trivy fs . > trivyfs.txt"
}
}
stage("Docker Build & Push"){
steps{
script{
withDockerRegistry(credentialsId: 'dockerhub', toolName: 'docker'){
sh "docker build -t devops-004-pipeline-aws ."
sh "docker tag devops-004-pipeline-aws mimaraslan/devops-004-pipeline-aws:latest "
sh "docker push mimaraslan/devops-004-pipeline-aws:latest "
}
}
}
}
stage("TRIVY Image Scan"){
steps{
sh "trivy image mimaraslan/devops-004-pipeline-aws:latest > trivyimage.txt"
}
}
stage('Deploy to Kubernetes'){
steps{
script{
dir('kubernetes') {
withKubeConfig(caCertificate: '', clusterName: '', contextName: '', credentialsId: 'kubernetes', namespace: '', restrictKubeConfigAccess: false, serverUrl: '') {
sh 'kubectl delete --all pods'
sh 'kubectl apply -f deployment.yml'
sh 'kubectl apply -f service.yml'
}
}
}
}
}
stage('Docker Image to Clean') {
steps {
// sh 'docker rmi mimaraslan/devops-004-pipeline-aws:latest'
sh 'docker image prune -f'
}
}
}
/*
post {
always {
emailext attachLog: true,
subject: "'${currentBuild.result}'",
body: "Project: ${env.JOB_NAME}<br/>" +
"Build Number: ${env.BUILD_NUMBER}<br/>" +
"URL: ${env.BUILD_URL}<br/>",
to: 'mimaraslan@gmail.com',
attachmentsPattern: 'trivyfs.txt,trivyimage.txt'
}
}
*/
}