Skip to main content

Jenkinsfile-docs-k8s.md

Template pipeline for docs deployment:

  • build image: bomeravi/docs:latest
  • push to Docker Hub
  • deploy manifests from k8s/kubernetes

Pipeline

pipeline {
agent any

environment {
IMAGE_NAME = 'bomeravi/docs:latest'
K8S_NAMESPACE = 'docs'
}

stages {
stage('Checkout') {
steps { checkout scm }
}

stage('Build Docker Image') {
steps { sh 'docker build -t ${IMAGE_NAME} .' }
}

stage('Push Docker Image') {
steps {
withCredentials([usernamePassword(credentialsId: 'dockerhub-creds', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
sh '''
echo "${DOCKER_PASS}" | docker login -u "${DOCKER_USER}" --password-stdin
docker push ${IMAGE_NAME}
docker logout
'''
}
}
}

stage('Deploy to Kubernetes') {
steps {
withCredentials([file(credentialsId: 'kubeconfig-prod', variable: 'KUBECONFIG_FILE')]) {
sh '''
export KUBECONFIG="${KUBECONFIG_FILE}"
kubectl apply -f k8s/kubernetes/01-namespace.yaml
kubectl apply -f k8s/kubernetes/02-clusterissuer.yaml
kubectl apply -f k8s/kubernetes/03-deployment.yaml
kubectl apply -f k8s/kubernetes/04-service.yaml
kubectl apply -f k8s/kubernetes/05-ingress.yaml
kubectl rollout status deployment/docs -n ${K8S_NAMESPACE}
'''
}
}
}
}
}

Copy this pipeline to repository root as Jenkinsfile or use the included root-level Jenkinsfile.