From 7e2c4dd62ff712435e74a05fc61d73cb5e908a72 Mon Sep 17 00:00:00 2001 From: areeqakbr Date: Tue, 25 Feb 2025 09:36:24 +0700 Subject: [PATCH] edit jenkins --- Jenkinsfile | 79 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index de5f3f4..0765987 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,3 +1,28 @@ +pipeline { + agent { + kubernetes { + yaml """ +apiVersion: v1 +kind: Pod +spec: + containers: + - name: jnlp + image: jenkins/inbound-agent:latest + - name: docker + image: docker:latest + command: + - cat + tty: true + volumeMounts: + - name: docker-sock + mountPath: /var/run/docker.sock + volumes: + - name: docker-sock + hostPath: + path: /var/run/docker.sock +""" + } + } pipeline { agent any // Runs on an Ubuntu-based Jenkins agent @@ -12,54 +37,66 @@ pipeline { stages { stage('Checkout Code') { steps { - git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}" + container('jnlp') { + git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}" + } } } stage('Get Short SHA') { steps { - script { - env.SHORT_SHA = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + container('jnlp') { + script { + env.SHORT_SHA = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + } } } } stage('Login to Registry') { steps { - script { - withCredentials([usernamePassword(credentialsId: "${DOCKERUSRPASS}", usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_TOKEN')]) { - sh """ - echo "$REGISTRY_TOKEN" | docker login "$REGISTRY_URL" --username ${REGISTRY_USER} --password-stdin - """ + container('docker') { + script { + withCredentials([usernamePassword(credentialsId: "${DOCKERUSRPASS}", usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_TOKEN')]) { + sh """ + echo "$REGISTRY_TOKEN" | docker login "$REGISTRY_URL" --username ${REGISTRY_USER} --password-stdin + """ + } } } } } + stage('Build and Push Docker Image') { steps { - container('kaniko') { + container('docker') { script { def imageTag = "dev-${env.SHORT_SHA}" sh """ - /kaniko/executor --context=dir://. \ - --dockerfile=deploy/docker/Dockerfile \ - --destination=${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} \ - --destination=${REGISTRY_URL}/${IMAGE_NAME}:dev \ - --destination=${REGISTRY_URL}/${IMAGE_NAME}:latest + docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} \ + -t ${REGISTRY_URL}/${IMAGE_NAME}:dev \ + -t ${REGISTRY_URL}/${IMAGE_NAME}:latest \ + -f deploy/docker/Dockerfile . + docker push ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} + docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev + 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 - kubectl set image deployment/backend backend=${REGISTRY_URL}/${IMAGE_NAME}:dev-${env.SHORT_SHA} -n nam-backend-dev --kubeconfig=kubeconfig - """ + container('jnlp') { + 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 + kubectl set image deployment/backend backend=${REGISTRY_URL}/${IMAGE_NAME}:dev-${env.SHORT_SHA} -n nam-backend-dev --kubeconfig=kubeconfig + """ + } } } }