Update insurance/Jenkinsfile.InsuranceBe
This commit is contained in:
@@ -25,32 +25,39 @@ pipeline {
|
||||
stage('Increase Version') {
|
||||
steps {
|
||||
script {
|
||||
// Get current version safely
|
||||
def currentVersion = sh(script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=project.version -q -DforceStdout", returnStdout: true).trim()
|
||||
if (!currentVersion) {
|
||||
error "Unable to retrieve current version from pom.xml"
|
||||
// Get current version
|
||||
def currentVersion = sh(script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout || echo 'Failed to get version'", returnStdout: true).trim()
|
||||
if (currentVersion == 'Failed to get version' || !currentVersion) {
|
||||
error "Unable to retrieve current version from pom.xml."
|
||||
}
|
||||
echo "Current version: '${currentVersion}'"
|
||||
|
||||
// Increment version using build-helper and versions plugin
|
||||
// Increment version using Maven Versions Plugin
|
||||
sh """
|
||||
mvn --batch-mode build-helper:parse-version versions:set \
|
||||
mvn build-helper:parse-version versions:set \
|
||||
-DnewVersion='\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT' \
|
||||
versions:commit
|
||||
versions:commit || exit 1
|
||||
"""
|
||||
|
||||
// Read the new version
|
||||
def newVersion = sh(script: "mvn --batch-mode -Dstyle.color=never help:evaluate -Dexpression=project.version -q -DforceStdout", returnStdout: true).trim()
|
||||
// Get the new version after update
|
||||
def newVersion = sh(script: "mvn help:evaluate -Dexpression=project.version -q -DforceStdout", returnStdout: true).trim()
|
||||
// Remove ANSI escape codes
|
||||
newVersion = newVersion.replaceAll(/\u001B\\[[;\\d]*m/, '')
|
||||
echo "New version: '${newVersion}'"
|
||||
|
||||
// Push updated pom.xml
|
||||
// Validate
|
||||
if (!newVersion || newVersion.contains("null")) {
|
||||
error "Invalid new version: '${newVersion}'. Check Maven configuration."
|
||||
}
|
||||
|
||||
// Commit and push updated pom.xml
|
||||
withCredentials([usernamePassword(credentialsId: env.GITEA_CREDENTIALS, usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) {
|
||||
sh """
|
||||
git config user.email "jenkins@hzwnrw.my"
|
||||
git config user.email "jenkins@yourdomain.com"
|
||||
git config user.name "Jenkins"
|
||||
git add pom.xml
|
||||
git commit -m "Auto-increment version to ${newVersion}" || echo "No changes to commit"
|
||||
git push https://${GIT_USER}:${GIT_PASS}@git.hzwnrw.my/Insurance/insurance-be.git HEAD:main
|
||||
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
|
||||
"""
|
||||
}
|
||||
|
||||
@@ -62,16 +69,16 @@ pipeline {
|
||||
stage('Build & Push Docker Image') {
|
||||
steps {
|
||||
script {
|
||||
sh "mvn clean package -DskipTests -B -Dstyle.color=never"
|
||||
sh "mvn clean package -DskipTests || exit 1"
|
||||
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')]) {
|
||||
sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin"
|
||||
sh "echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin || exit 1"
|
||||
}
|
||||
|
||||
sh "docker push ${dockerImage}"
|
||||
sh "docker push ${dockerImage} || exit 1"
|
||||
env.DOCKER_IMAGE = dockerImage
|
||||
}
|
||||
}
|
||||
@@ -82,8 +89,8 @@ pipeline {
|
||||
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}
|
||||
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} || exit 1
|
||||
"""
|
||||
}
|
||||
}
|
||||
@@ -92,9 +99,14 @@ pipeline {
|
||||
|
||||
stage('Cleanup') {
|
||||
steps {
|
||||
sh "docker image prune -f || true"
|
||||
sh "docker builder prune -f || true"
|
||||
sh "mvn clean -B -Dstyle.color=never || true"
|
||||
script {
|
||||
if (env.DOCKER_IMAGE) {
|
||||
sh "docker rmi ${env.DOCKER_IMAGE} || echo 'No image to remove'"
|
||||
}
|
||||
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'"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,5 +115,11 @@ pipeline {
|
||||
always {
|
||||
cleanWs()
|
||||
}
|
||||
failure {
|
||||
echo "Pipeline failed! Check logs."
|
||||
}
|
||||
success {
|
||||
echo "Pipeline completed successfully!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user