pipeline { agent any environment { IMAGE_NAME = 'myapp' IMAGE_TAG = 'latest' DOCKERHUB_USER = 'vipin2025devops' DEPLOYMENT_FILE = 'k8s/deployment.yaml' SERVICE_FILE = 'k8s/service.yaml' } stages { stage('Checkout Code') { steps { git branch: 'main', url: 'https://git.opsmonsters.in/vipin.p/my-react-app.git', credentialsId: 'git-opsmonsters-cred' } } stage('Build & Push Docker Image') { steps { script { withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { sh """ echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin docker build -t vipin2025devops/myapp:latest . docker push vipin2025devops/myapp:latest """ } } } } stage('Verify Docker Image') { steps { powershell """ docker images | Select-String '${DOCKERHUB_USER}/${IMAGE_NAME}' """ } } stage('Deploy to Kubernetes') { steps { withCredentials([file(credentialsId: 'kubeconfig-file', variable: 'KUBECONFIG_PATH')]) { powershell """ kubectl --kubeconfig $env:KUBECONFIG_PATH apply -f k8s/deployment.yaml --validate=false kubectl --kubeconfig $env:KUBECONFIG_PATH apply -f k8s/service.yaml --validate=false kubectl --kubeconfig $env:KUBECONFIG_PATH get pods -o wide kubectl --kubeconfig $env:KUBECONFIG_PATH get svc """ } } } stage('Verify Deployment') { steps { withCredentials([file(credentialsId: 'kubeconfig-file', variable: 'KUBECONFIG_PATH')]) { powershell """ echo 'Pods Status:' kubectl --kubeconfig $env:KUBECONFIG_PATH get pods -o wide echo 'Services:' kubectl --kubeconfig $env:KUBECONFIG_PATH get svc """ } } } } post { success { echo " Deployment successful!" } failure { echo " Deployment failed. Check logs above." } } }