49 lines
1.4 KiB
Groovy
49 lines
1.4 KiB
Groovy
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 -
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|