my-react-app/Jenkinsfile
2025-09-12 15:20:09 +05:30

79 lines
2.5 KiB
Groovy

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')]) {
bat """
echo %DOCKER_PASS% | docker login -u %DOCKER_USER% --password-stdin
docker build -t %DOCKER_USER%/%IMAGE_NAME%:%IMAGE_TAG% .
docker push %DOCKER_USER%/%IMAGE_NAME%:%IMAGE_TAG%
"""
}
}
}
}
stage('Verify Docker Image') {
steps {
bat """
docker images | findstr %DOCKERHUB_USER%/%IMAGE_NAME%
"""
}
}
stage('Deploy to Kubernetes') {
steps {
withCredentials([file(credentialsId: 'kubeconfig-file', variable: 'KUBECONFIG_PATH')]) {
bat """
kubectl --kubeconfig %KUBECONFIG_PATH% apply -f %DEPLOYMENT_FILE% --validate=false
kubectl --kubeconfig %KUBECONFIG_PATH% apply -f %SERVICE_FILE% --validate=false
kubectl --kubeconfig %KUBECONFIG_PATH% get pods -o wide
kubectl --kubeconfig %KUBECONFIG_PATH% get svc
"""
}
}
}
stage('Verify Deployment') {
steps {
withCredentials([file(credentialsId: 'kubeconfig-file', variable: 'KUBECONFIG_PATH')]) {
bat """
echo Pods Status:
kubectl --kubeconfig %KUBECONFIG_PATH% get pods -o wide
echo Services:
kubectl --kubeconfig %KUBECONFIG_PATH% get svc
"""
}
}
}
}
post {
success {
echo "Deployment successful!"
}
failure {
echo " Deployment failed. Check logs above."
}
}
}