diff --git a/Jenkinsfile b/Jenkinsfile index c8ec998..dbb2260 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,53 +2,46 @@ pipeline { agent any environment { - DOCKERHUB_USER = 'vipin2025devops' - IMAGE_NAME = 'myapp' - IMAGE_TAG = "latest" - K8S_DEPLOYMENT = 'k8s/deployment.yaml' - K8S_SERVICE = 'k8s/service.yaml' + DOCKERHUB_CREDENTIALS = credentials('dockerhub-creds') + DOCKER_IMAGE = "vipin2025devops/myapp" + K8S_DEPLOYMENT = "k8s/deployment.yaml" } stages { - stage('Checkout Code') { + stage('Checkout') { steps { - checkout scm + git branch: 'main', url: 'https://git.opsmonsters.in/vipin.p/my-react-app' } } stage('Build Docker Image') { steps { - powershell """ - docker build -t ${DOCKERHUB_USER}/${IMAGE_NAME}:${IMAGE_TAG} . - """ + script { + def imageTag = "build-${env.BUILD_NUMBER}" + sh "docker build -t ${DOCKER_IMAGE}:${imageTag} ." + sh "docker tag ${DOCKER_IMAGE}:${imageTag} ${DOCKER_IMAGE}:latest" + env.IMAGE_TAG = imageTag + } } } - stage('Push Image to Docker Hub') { + stage('Push to DockerHub') { steps { - withCredentials([usernamePassword(credentialsId: 'docker-hub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { - powershell """ - echo $env:DOCKER_PASS | docker login -u $env:DOCKER_USER --password-stdin - docker push ${DOCKERHUB_USER}/${IMAGE_NAME}:${IMAGE_TAG} - """ + script { + sh "echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin" + sh "docker push ${DOCKER_IMAGE}:${IMAGE_TAG}" + sh "docker push ${DOCKER_IMAGE}:latest" } } } stage('Deploy to Kubernetes') { steps { - powershell """ - kubectl apply -f ${K8S_DEPLOYMENT} - kubectl apply -f ${K8S_SERVICE} - """ - } - } - - stage('Verify Deployment') { - steps { - powershell """ - kubectl get pods -o wide - """ + script { + sh """ + sed 's|IMAGE_PLACEHOLDER|${DOCKER_IMAGE}:${IMAGE_TAG}|g' ${K8S_DEPLOYMENT} | kubectl apply -f - + """ + } } } }