pipeline { agent { kubernetes { cloud 'kubernetes' defaultContainer 'kaniko' yaml """ apiVersion: v1 kind: Pod metadata: labels: jenkins-job: kaniko-build spec: restartPolicy: Never containers: # ------------ 1) Kaniko (build & push) ------------ - name: kaniko image: gcr.io/kaniko-project/executor:debug command: ["/busybox/sh"] args: ["-c", "sleep 3600"] tty: true env: - name: DOCKER_CONFIG value: /kaniko/.docker volumeMounts: - name: kaniko-secret mountPath: /kaniko/.docker # ------------ 2) Kubectl (deploy) --------------- - name: kubectl image: bitnami/kubectl:latest command: ["sh", "-c", "sleep 3600"] tty: true volumes: - name: kaniko-secret secret: secretName: regcred """ } } environment { IMAGE = '10.10.3.232:5000/wordpress:latest' GIT_CTX = 'git://github.com/RobbyDwiJayanto/rentalmotor.git#master' } stages { stage('Build & Push Image') { steps { sh ''' /kaniko/executor \ --context=${GIT_CTX} \ --dockerfile=Dockerfile \ --destination=${IMAGE} \ --insecure \ --skip-tls-verify ''' } } stage('Deploy to Cluster') { steps { container('kubectl') { sh 'kubectl apply -f k8s/ -n jenkins' } } } } post { always { echo 'Pipeline selesai ✅' } failure { echo '❌ Build gagal – periksa log!' } } }