pipeline { agent any environment { DOCKERHUB_CREDENTIALS = credentials('dockerhub-creds') DOCKER_IMAGE = "vipin2025devops/myapp" K8S_DEPLOYMENT = "k8s/deployment.yaml" } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://git.opsmonsters.in/vipin.p/my-react-app' } } stage('Build Docker Image') { steps { 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 to DockerHub') { steps { 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 { script { sh """ sed 's|IMAGE_PLACEHOLDER|${DOCKER_IMAGE}:${IMAGE_TAG}|g' ${K8S_DEPLOYMENT} | kubectl apply -f - """ } } } } }