pipeline { agent any environment { REGISTRY_URL = 'git.winteraccess.id' IMAGE_NAME = 'winter-access/backend_nam' KUBE_CONFIG_ID = '8c2082d8-ab78-48b5-a27b-6717387a5ce6' CREDENTIALS_ID = '8242519c-ed9e-447a-ad63-1f8d7368cf68' } stages { stage('Checkout Code') { steps { git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}" } } stage('Build Docker Image') { steps { script { def shortSha = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() def imageTag = "dev-${shortSha}" sh "docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} ." } } } stage('Push Docker Image') { steps { script { def shortSha = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() def imageTag = "dev-${shortSha}" sh "docker push ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag}" sh "docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev" sh "docker push ${REGISTRY_URL}/${IMAGE_NAME}:latest" } } } stage('Deploy to Kubernetes') { steps { script { withCredentials([string(credentialsId: "${KUBE_CONFIG_ID}", variable: 'KUBE_CONFIG')]) { writeFile file: 'kubeconfig', text: KUBE_CONFIG sh "kubectl apply -f deploy/kubernetes/dev.yaml --kubeconfig=kubeconfig" } } } } } post { always { cleanWs() } } }