Add insurance/Jenkinsfile.InsuranceBe

This commit is contained in:
2025-08-26 11:00:31 +08:00
parent 9f632b82f1
commit 2e1755dd94

View File

@@ -0,0 +1,96 @@
pipeline {
agent any
environment {
REGISTRY_CREDENTIALS = "docker"
KUBECONFIG_CREDENTIALS = "k3s-kubeconfig"
GITEA_CREDENTIALS = "gitea"
K8S_NAMESPACE = "insurance-system"
DEPLOYMENT_NAME = "insurance-backend"
}
stages {
stage('Checkout Code') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: '*/develop']],
userRemoteConfigs: [[
url: 'https://git.hzwnrw.my/Insurance/insurance-be.git',
credentialsId: env.GITEA_CREDENTIALS
]]
])
}
}
stage('Increase Version') {
steps {
script {
def currentVersion = sh(script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout", returnStdout: true).trim()
echo "Current version: ${currentVersion}"
sh """
mvn build-helper:parse-version versions:set \
-DnewVersion='\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT' \
versions:commit
"""
def newVersion = sh(script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout", returnStdout: true).trim()
echo "New version: ${newVersion}"
env.NEW_VERSION = newVersion
withCredentials([usernamePassword(credentialsId: env.GITEA_CREDENTIALS, usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) {
sh """
git add pom.xml
git commit -m "Auto-increment version to ${newVersion}" || echo "No changes"
git push https://${GIT_USER}:${GIT_PASS}@git.hzwnrw.my/Insurance/insurance-be.git HEAD:develop
"""
}
}
}
}
stage('Build & Push Docker Image') {
steps {
script {
sh "mvn clean package -DskipTests"
def dockerImage = "hzwnrw/dev:insurance-backend-${env.NEW_VERSION}"
sh "docker build -t ${dockerImage} ."
withCredentials([usernamePassword(credentialsId: env.REGISTRY_CREDENTIALS, usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin"
}
sh "docker push ${dockerImage}"
env.DOCKER_IMAGE = dockerImage
}
}
}
stage('Deploy to K3s') {
steps {
script {
withCredentials([file(credentialsId: env.KUBECONFIG_CREDENTIALS, variable: 'KUBECONFIG')]) {
sh """
kubectl --kubeconfig=$KUBECONFIG set image deployment/${DEPLOYMENT_NAME} ${DEPLOYMENT_NAME}=${DOCKER_IMAGE} -n ${K8S_NAMESPACE}
kubectl --kubeconfig=$KUBECONFIG rollout status deployment/${DEPLOYMENT_NAME} -n ${K8S_NAMESPACE}
"""
}
}
}
}
stage('Cleanup') {
steps {
sh "docker image prune -f || true"
sh "docker builder prune -f || true"
sh "mvn clean || true"
}
}
}
post {
always {
cleanWs()
}
}
}