1- currentBuild. displayName = " Final_Demo # " + currentBuild. number
2-
3- def getDockerTag (){
1+ def getDockerTag (){
42 def tag = sh script : ' git rev-parse HEAD' , returnStdout : true
53 return tag
6- }
7-
4+ }
85
9- pipeline{
10- agent any
11- environment{
12- Docker_tag = getDockerTag()
13- }
14-
15- stages{
6+ pipeline {
7+ agent any
168
9+ environment{
10+ Docker_tag = getDockerTag()
11+ Docker_Creds = credentials(' dockerhub-creds' )
12+ }
1713
18- stage(' Quality Gate Statuc Check' ){
14+ stages {
15+ stage(' static code anaylysis' ){
16+
17+ agent{
18+ docker{
19+ image ' maven:3.6.0'
20+ }
21+ }
1922
20- agent {
21- docker {
22- image ' maven'
23- args ' -v $HOME/.m2:/root/.m2'
23+ steps {
24+ script{
25+ withSonarQubeEnv(credentialsId : ' sonartoken' ) {
26+ sh ' printenv'
27+ sh " mvn sonar:sonar"
2428 }
29+
30+ // timeout(5){
31+ // def qg = waitForQualityGate()
32+ // if (qg.status != 'OK'){
33+ // error "code didnt met qulaity gate"
34+ // }
35+ // }
36+
37+ }
2538 }
26- steps{
27- script{
28- withSonarQubeEnv(' sonarserver' ) {
29- sh " mvn sonar:sonar"
30- }
31- timeout(time : 1 , unit : ' HOURS' ) {
32- def qg = waitForQualityGate()
33- if (qg. status != ' OK' ) {
34- error " Pipeline aborted due to quality gate failure: ${ qg.status} "
35- }
36- }
37- sh " mvn clean install"
38- }
39- }
39+ }
40+
41+ stage(' build' ) {
42+
43+ agent{
44+ docker{
45+ image ' maven:3.6.0'
46+ args ' -v /root/.m2:/root/.m2'
4047 }
48+ }
4149
50+ steps{
51+ script{
52+ sh " mvn clean install"
53+ }
54+ }
55+ }
4256
57+ stage(' docker build & docker push' ) {
58+ steps{
59+ script{
60+ sh """
61+ cp -r ../complete-pipeline@2/target .
62+ docker build . -t deekshithsn/webapp-demo:$Docker_tag
63+ docker login -u $Docker_Creds_USR -p $Docker_Creds_PSW
64+ docker push deekshithsn/webapp-demo:$Docker_tag
65+ """
66+ currentBuild. description = " $Docker_tag "
67+ addBadge(icon : ' save.gif' , link : ' https://hub.docker.com/repository/docker/deekshithsn/webapp-demo/tags' )
68+ }
69+ }
70+ }
4371
44- stage(' build' )
45- {
46- steps{
47- script{
48- sh ' cp -r ../devops-training@2/target .'
49- sh ' docker build . -t deekshithsn/devops-training:$Docker_tag'
50- withCredentials([string(credentialsId : ' docker_password' , variable : ' docker_password' )]) {
51-
52- sh ' docker login -u deekshithsn -p $docker_password'
53- sh ' docker push deekshithsn/devops-training:$Docker_tag'
54- }
55- }
72+ stage(' approval stage' ) {
73+ steps{
74+ script{
75+ timeout(5 ){
76+ 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 : " deekshithsn@gmail.com" ;
77+ input( message : " Deploy ${ params.project_name} ?" , ok : ' Deploy' )
5678 }
57- }
58-
59- stage(' ansible playbook' ){
60- steps{
61- script{
62- sh ''' final_tag=$(echo $Docker_tag | tr -d ' ')
63- echo ${final_tag}test
64- sed -i "s/docker_tag/$final_tag/g" deployment.yaml
65- '''
66- ansiblePlaybook become : true , installation : ' ansible' , inventory : ' hosts' , playbook : ' ansible.yaml'
67- }
68- }
69- }
70-
71-
72-
73- }
74-
75-
76-
77-
78-
79- }
79+ }
80+ }
81+ }
82+
83+ }
84+ }
0 commit comments