diff --git a/Jenkinsfile b/Jenkinsfile index e733d2a..a034382 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,51 +4,23 @@ pipeline { environment { REGISTRY_URL = 'git.winteraccess.id' IMAGE_NAME = 'winter-access/backend_nam' - KUBE_NAMESPACE = 'nam-backend-dev' - GIT_CREDENTIALS_ID = '8242519c-ed9e-447a-ad63-1f8d7368cf68' + KUBE_CONFIG_ID = '8c2082d8-ab78-48b5-a27b-6717387a5ce6' + CREDENTIALS_ID = '8242519c-ed9e-447a-ad63-1f8d7368cf68' } stages { - stage('Checkout') { + stage('Checkout Code') { steps { - checkout([ - $class: 'GitSCM', - branches: [[name: '*/dev']], - doGenerateSubmoduleConfigurations: false, - extensions: [], - userRemoteConfigs: [[ - url: 'https://git.winteraccess.id/winter-access/backend_nam.git', - credentialsId: env.GIT_CREDENTIALS_ID - ]] - ]) - } - } - - stage('Get Short SHA') { - steps { - script { - env.SHORT_SHA = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() - } - } - } - - stage('Login to Registry') { - steps { - script { - sh "echo ${env.REGISTRY_TOKEN} | docker login ${REGISTRY_URL} --username ${env.REGISTRY_USER} --password-stdin" - } + git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}" } } stage('Build Docker Image') { steps { script { - sh """ - docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} \ - -t ${REGISTRY_URL}/${IMAGE_NAME}:dev \ - -t ${REGISTRY_URL}/${IMAGE_NAME}:latest \ - -f src/Dockerfile . - """ + 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} ." } } } @@ -56,41 +28,11 @@ pipeline { stage('Push Docker Image') { steps { script { - sh """ - docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} - docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev - docker push ${REGISTRY_URL}/${IMAGE_NAME}:latest - """ - } - } - } - - stage('SonarQube Analysis') { - steps { - script { - withSonarQubeEnv('SonarQube') { - sh 'mvn sonar:sonar' - } - } - } - } - - stage('Setup Kubectl') { - steps { - script { - sh 'kubectl version --client' - } - } - } - - stage('Create Kubeconfig') { - steps { - script { - sh """ - mkdir -p \$HOME/.kube - echo "${env.KUBECONFIG}" > \$HOME/.kube/config - chmod 600 \$HOME/.kube/config - """ + 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" } } } @@ -98,10 +40,10 @@ pipeline { stage('Deploy to Kubernetes') { steps { script { - sh """ - kubectl apply -f deploy/kubernetes/dev.yaml - kubectl set image deployment/backend backend=${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} -n ${KUBE_NAMESPACE} - """ + 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" + } } } } @@ -112,4 +54,4 @@ pipeline { cleanWs() } } -} +} \ No newline at end of file