adding jenkinsfile

This commit is contained in:
areeqakbr 2025-02-24 14:36:21 +07:00
parent 593a312745
commit 90cacb86c5
1 changed files with 17 additions and 75 deletions

92
Jenkinsfile vendored
View File

@ -4,51 +4,23 @@ pipeline {
environment { environment {
REGISTRY_URL = 'git.winteraccess.id' REGISTRY_URL = 'git.winteraccess.id'
IMAGE_NAME = 'winter-access/backend_nam' IMAGE_NAME = 'winter-access/backend_nam'
KUBE_NAMESPACE = 'nam-backend-dev' KUBE_CONFIG_ID = '8c2082d8-ab78-48b5-a27b-6717387a5ce6'
GIT_CREDENTIALS_ID = '8242519c-ed9e-447a-ad63-1f8d7368cf68' CREDENTIALS_ID = '8242519c-ed9e-447a-ad63-1f8d7368cf68'
} }
stages { stages {
stage('Checkout') { stage('Checkout Code') {
steps { steps {
checkout([ git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}"
$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"
}
} }
} }
stage('Build Docker Image') { stage('Build Docker Image') {
steps { steps {
script { script {
sh """ def shortSha = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} \ def imageTag = "dev-${shortSha}"
-t ${REGISTRY_URL}/${IMAGE_NAME}:dev \ sh "docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} ."
-t ${REGISTRY_URL}/${IMAGE_NAME}:latest \
-f src/Dockerfile .
"""
} }
} }
} }
@ -56,41 +28,11 @@ pipeline {
stage('Push Docker Image') { stage('Push Docker Image') {
steps { steps {
script { script {
sh """ def shortSha = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} def imageTag = "dev-${shortSha}"
docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev sh "docker push ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag}"
docker push ${REGISTRY_URL}/${IMAGE_NAME}:latest sh "docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev"
""" sh "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
"""
} }
} }
} }
@ -98,10 +40,10 @@ pipeline {
stage('Deploy to Kubernetes') { stage('Deploy to Kubernetes') {
steps { steps {
script { script {
sh """ withCredentials([string(credentialsId: "${KUBE_CONFIG_ID}", variable: 'KUBE_CONFIG')]) {
kubectl apply -f deploy/kubernetes/dev.yaml writeFile file: 'kubeconfig', text: KUBE_CONFIG
kubectl set image deployment/backend backend=${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} -n ${KUBE_NAMESPACE} sh "kubectl apply -f deploy/kubernetes/dev.yaml --kubeconfig=kubeconfig"
""" }
} }
} }
} }
@ -112,4 +54,4 @@ pipeline {
cleanWs() cleanWs()
} }
} }
} }