Added Jenkinsfile for DockerHub + Kubernetes deploy

This commit is contained in:
VIPIN 2025-09-12 10:14:05 +05:30
parent d08eeea7ae
commit 564f4a8316

49
Jenkinsfile vendored
View File

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