77 lines
1.6 KiB
Plaintext
77 lines
1.6 KiB
Plaintext
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!' }
|
||
}
|
||
}
|