Ultimate CI CD Pipeline Jenkins file

·

2 min read

pipeline{
    agent{
        docker{
            image 'abhishekf5/maven-abhishek-docker-agent:v1'
            args '--user root -v /var/run/docker.sock:/var/run/docker.sock' //·mount·Docker·socket·to·access·the·host's·Docker·daemon
        }
    }
    environment {
        AWS_ACCOUNT_ID="386288228052"
        AWS_DEFAULT_REGION="eu-west-1" 
        IMAGE_REPO_NAME="inspectorv2"
        IMAGE_TAG="${BUILD_NUMBER}"
        REPOSITORY_URI = "${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}"
        //REPOSITORY_URI = "public.ecr.aws/q8g4y1x9/${IMAGE_REPO_NAME}"
        //git config --global credential.helper "!aws.cmd codecommit credential-helper $@"
        //git config --global credential.UseHttpPath true
    }
    stages {
        stage('Checkout') {
            steps {
                sh 'echo passed'
                //git config --global credential.helper "!aws.cmd codecommit credential-helper $@"
                //git config --global credential.UseHttpPath true
                checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'CICD-GITusercredforcodecommit1', url: 'https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/CICD-Pipeline']])

            }
        }
        stage('Build and Test') {
            steps{

                //build the project and create JAR file
                sh 'cd java-maven-sonar-argocd-helm-k8s/spring-boot-app && ls -ltr'
                sh 'cd java-maven-sonar-argocd-helm-k8s/spring-boot-app && mvn -X clean package'
                sh 'cd java-maven-sonar-argocd-helm-k8s/spring-boot-app && ls -ltr'
            }
        }
        stage('Static Code Analysis') {
            environment {
                SONAR_URL = "http://34.241.36.33:9000"
                      }
            steps {
                withCredentials([string(credentialsId: 'sonarqube', variable: 'SONAR_AUTH_TOKEN')]) {
                    sh 'cd java-maven-sonar-argocd-helm-k8s/spring-boot-app && mvn sonar:sonar -Dsonar.login=$SONAR_AUTH_TOKEN -Dsonar.host.url=${SONAR_URL}'
                    }
                    }
        } 

        stage('Building image') {
            steps{
                script {
                    //dockerImage = docker.build "${IMAGE_REPO_NAME}:${IMAGE_TAG}"
                    //sh 'echo $dockerImage'

                    sh 'cd java-maven-sonar-argocd-helm-k8s/spring-boot-app && docker build -t ${IMAGE_REPO_NAME}:${IMAGE_TAG}  .'
                }
            }
        }
        stage('Pushing to ECR') {
            steps{ 

                withDockerRegistry(credentialsId: 'ecr:eu-west-1:CICD-ECRUser', url: 'https://386288228052.dkr.ecr.eu-west-1.amazonaws.com') {
                    script {
                        sh "docker tag ${IMAGE_REPO_NAME}:${IMAGE_TAG} ${REPOSITORY_URI}:$IMAGE_TAG"
                        sh "docker push  386288228052.dkr.ecr.eu-west-1.amazonaws.com/${IMAGE_REPO_NAME}:${IMAGE_TAG}"
                        sh 'echo "pushed successfulyyy"'
                    }
                 }
            }
        }
        stage('Update Deployment File') {
                steps {
                    script {

                       // sh 'git remote add codecommit https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/CICD-Pipeline'

                        sh '''

                        BUILD_NUMBER=${BUILD_NUMBER}

                        ls -ltr
                        pwd

                        sed -i "s/replaceImageTag/${BUILD_NUMBER}/g" /var/lib/jenkins/workspace/UltimateCICD/java-maven-sonar-argocd-helm-k8s/spring-boot-app-manifests/deployment.yaml
                        git config --global user.email "kakarlayogitha@gmail.com"
                        git config --global user.name "yogitha"

                        git add java-maven-sonar-argocd-helm-k8s/spring-boot-app-manifests/deployment.yaml
                        git commit -m "Update deployment image to version ${BUILD_NUMBER}"
                        git push codecommit main
                        '''
                        }
                        }
                        }                  


}
}