Compare commits
1 Commits
main
...
cicd-setup
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
564f4a8316 |
69
Jenkinsfile
vendored
69
Jenkinsfile
vendored
@ -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."
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user