Update insurance/Jenkinsfile.InsuranceBe

This commit is contained in:
2025-08-26 11:44:16 +08:00
parent a29b339148
commit 1e25df7f9b

View File

@@ -6,7 +6,7 @@ pipeline {
KUBECONFIG_CREDENTIALS = "k3s-kubeconfig" KUBECONFIG_CREDENTIALS = "k3s-kubeconfig"
GITEA_CREDENTIALS = "gitea" GITEA_CREDENTIALS = "gitea"
K8S_NAMESPACE = "insurance-system" K8S_NAMESPACE = "insurance-system"
DEPLOYMENT_NAME = "insurance-be" DEPLOYMENT_NAME = "insurance-backend"
} }
stages { stages {
@@ -25,51 +25,43 @@ pipeline {
stage('Increase Version') { stage('Increase Version') {
steps { steps {
script { script {
// Get current version // disable colors so no CTRL chars pollute version string
def currentVersion = sh( def currentVersion = sh(
script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout || echo 'Failed'", script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=project.version -q -DforceStdout",
returnStdout: true returnStdout: true
).trim() ).trim()
if (currentVersion == "Failed" || !currentVersion) {
error "Unable to retrieve version from pom.xml"
}
echo "Current version: ${currentVersion}" echo "Current version: ${currentVersion}"
// Update version (POSIX safe) def major = sh(
sh ''' script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=parsedVersion.majorVersion -q -DforceStdout",
MAJOR=$(mvn help:evaluate -Dexpression=parsedVersion.majorVersion -q -DforceStdout) returnStdout: true
MINOR=$(mvn help:evaluate -Dexpression=parsedVersion.minorVersion -q -DforceStdout) ).trim()
NEXTINC=$(mvn help:evaluate -Dexpression=parsedVersion.nextIncrementalVersion -q -DforceStdout) def minor = sh(
script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=parsedVersion.minorVersion -q -DforceStdout",
mvn versions:set -DnewVersion="$MAJOR.$MINOR.$NEXTINC-SNAPSHOT" versions:commit returnStdout: true
''' ).trim()
def nextInc = sh(
// Get new version script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=parsedVersion.nextIncrementalVersion -q -DforceStdout",
def newVersion = sh(
script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout",
returnStdout: true returnStdout: true
).trim() ).trim()
newVersion = newVersion.replaceAll(/\u001B\[.*?m/, '')
if (!newVersion || newVersion.contains("null")) { def newVersion = "${major}.${minor}.${nextInc}-SNAPSHOT"
error "Invalid new version: ${newVersion}" echo "New version: ${newVersion}"
} env.NEW_VERSION = newVersion
echo "Updated version from ${currentVersion} → ${newVersion}" sh """
mvn --batch-mode -Dstyle.color=never versions:set -DnewVersion=${newVersion} versions:commit
"""
// Commit and push
withCredentials([usernamePassword(credentialsId: env.GITEA_CREDENTIALS, usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) { withCredentials([usernamePassword(credentialsId: env.GITEA_CREDENTIALS, usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) {
sh """ sh """
git config user.email "jenkins@yourdomain.com"
git config user.name "Jenkins" git config user.name "Jenkins"
git config user.email "jenkins@hzwnrw.my"
git add pom.xml git add pom.xml
git commit -m "Auto-increment version to ${newVersion}" || echo "No changes to commit" 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:main || exit 1 git push https://${GIT_USER}:${GIT_PASS}@git.hzwnrw.my/Insurance/insurance-be.git HEAD:main
""" """
} }
env.NEW_VERSION = newVersion
} }
} }
} }
@@ -77,17 +69,15 @@ pipeline {
stage('Build & Push Docker Image') { stage('Build & Push Docker Image') {
steps { steps {
script { script {
sh "mvn clean package -DskipTests || exit 1" sh "mvn clean package -DskipTests -B -Dstyle.color=never"
def dockerImage = "hzwnrw/dev:insurance-be-${env.NEW_VERSION}" def dockerImage = "hzwnrw/dev:insurance-backend-${env.NEW_VERSION}"
echo "Building Docker image: ${dockerImage}" sh "docker build -t ${dockerImage} ."
sh "docker build -t ${dockerImage} . || exit 1"
withCredentials([usernamePassword(credentialsId: env.REGISTRY_CREDENTIALS, usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { withCredentials([usernamePassword(credentialsId: env.REGISTRY_CREDENTIALS, usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin || exit 1" sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin"
} }
sh "docker push ${dockerImage}"
sh "docker push ${dockerImage} || exit 1"
env.DOCKER_IMAGE = dockerImage env.DOCKER_IMAGE = dockerImage
} }
} }
@@ -97,12 +87,10 @@ pipeline {
steps { steps {
script { script {
withCredentials([file(credentialsId: env.KUBECONFIG_CREDENTIALS, variable: 'KUBECONFIG')]) { withCredentials([file(credentialsId: env.KUBECONFIG_CREDENTIALS, variable: 'KUBECONFIG')]) {
sh ''' sh """
echo "Updating K3s deployment..." kubectl --kubeconfig=$KUBECONFIG set image deployment/${DEPLOYMENT_NAME} ${DEPLOYMENT_NAME}=${DOCKER_IMAGE} -n ${K8S_NAMESPACE}
kubectl --kubeconfig=$KUBECONFIG set image deployment/${DEPLOYMENT_NAME} ${DEPLOYMENT_NAME}=${DOCKER_IMAGE} -n ${K8S_NAMESPACE} || exit 1 kubectl --kubeconfig=$KUBECONFIG rollout status deployment/${DEPLOYMENT_NAME} -n ${K8S_NAMESPACE}
kubectl --kubeconfig=$KUBECONFIG rollout status deployment/${DEPLOYMENT_NAME} -n ${K8S_NAMESPACE} || exit 1 """
echo "Deployment updated successfully!"
'''
} }
} }
} }
@@ -110,14 +98,9 @@ pipeline {
stage('Cleanup') { stage('Cleanup') {
steps { steps {
script { sh "docker image prune -f || true"
if (env.DOCKER_IMAGE) { sh "docker builder prune -f || true"
sh "docker rmi ${env.DOCKER_IMAGE} || echo 'Image not found, skipping cleanup'" sh "mvn clean -B -Dstyle.color=never || true"
}
sh "docker image prune -f || echo 'No dangling images'"
sh "docker builder prune -f || echo 'No build cache'"
sh "mvn clean || echo 'No Maven artifacts to clean'"
}
} }
} }
} }
@@ -126,11 +109,5 @@ pipeline {
always { always {
cleanWs() cleanWs()
} }
failure {
echo "Pipeline failed! Check the logs."
}
success {
echo "Pipeline completed successfully!"
}
} }
} }