Compare commits

..

1 Commits

Author SHA1 Message Date
VIPIN
564f4a8316 Added Jenkinsfile for DockerHub + Kubernetes deploy 2025-09-12 10:14:05 +05:30
2 changed files with 22 additions and 49 deletions

65
Jenkinsfile vendored
View File

@ -2,74 +2,47 @@ pipeline {
agent any agent any
environment { environment {
IMAGE_NAME = 'myapp' DOCKERHUB_CREDENTIALS = credentials('dockerhub-creds')
IMAGE_TAG = 'latest' DOCKER_IMAGE = "vipin2025devops/myapp"
DOCKERHUB_USER = 'vipin2025devops' K8S_DEPLOYMENT = "k8s/deployment.yaml"
DEPLOYMENT_FILE = 'k8s/deployment.yaml'
SERVICE_FILE = 'k8s/service.yaml'
KUBECONFIG = 'C:\\Users\\rlkri\\.kube\\config'
} }
stages { stages {
stage('Checkout Code') { stage('Checkout') {
steps { steps {
git branch: 'main', git branch: 'main', url: 'https://git.opsmonsters.in/vipin.p/my-react-app'
url: 'https://git.opsmonsters.in/vipin.p/my-react-app.git',
credentialsId: 'git-opsmonsters-cred'
} }
} }
stage('Build & Push Docker Image') { stage('Build Docker Image') {
steps { steps {
script { script {
withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { def imageTag = "build-${env.BUILD_NUMBER}"
bat """ sh "docker build -t ${DOCKER_IMAGE}:${imageTag} ."
echo %DOCKER_PASS% | docker login -u %DOCKER_USER% --password-stdin sh "docker tag ${DOCKER_IMAGE}:${imageTag} ${DOCKER_IMAGE}:latest"
docker build -t %DOCKER_USER%/%IMAGE_NAME%:%IMAGE_TAG% . env.IMAGE_TAG = imageTag
docker push %DOCKER_USER%/%IMAGE_NAME%:%IMAGE_TAG%
"""
}
} }
} }
} }
stage('Verify Docker Image') { stage('Push to DockerHub') {
steps { steps {
bat """ script {
docker images | findstr %DOCKERHUB_USER%/%IMAGE_NAME% 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') { stage('Deploy to Kubernetes') {
steps { steps {
bat """ script {
kubectl apply -f %DEPLOYMENT_FILE% --validate=false sh """
kubectl apply -f %SERVICE_FILE% --validate=false sed 's|IMAGE_PLACEHOLDER|${DOCKER_IMAGE}:${IMAGE_TAG}|g' ${K8S_DEPLOYMENT} | kubectl apply -f -
kubectl get pods -o wide
kubectl get svc
"""
}
}
stage('Verify Deployment') {
steps {
bat """
echo Pods Status:
kubectl get pods -o wide
echo Services:
kubectl get svc
""" """
} }
} }
} }
post {
success {
echo "Deployment successful!"
}
failure {
echo "Deployment failed. Check logs above."
}
} }
} }

View File

@ -14,6 +14,6 @@ spec:
spec: spec:
containers: containers:
- name: myapp - name: myapp
image: vipin2025devops/myapp:latest image: IMAGE_PLACEHOLDER # Jenkins will replace this
ports: ports:
- containerPort: 3000 - containerPort: 3000