From 37c214068da7b72a0fd6efc156f084ffdb520a10 Mon Sep 17 00:00:00 2001 From: hzwnrw Date: Tue, 26 Aug 2025 11:00:56 +0800 Subject: [PATCH] Add insurance/Jenkinsfile.InsuranceFe --- insurance/Jenkinsfile.InsuranceFe | 95 +++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 insurance/Jenkinsfile.InsuranceFe diff --git a/insurance/Jenkinsfile.InsuranceFe b/insurance/Jenkinsfile.InsuranceFe new file mode 100644 index 0000000..d45df69 --- /dev/null +++ b/insurance/Jenkinsfile.InsuranceFe @@ -0,0 +1,95 @@ +pipeline { + agent any + + environment { + REGISTRY_CREDENTIALS = "docker" + KUBECONFIG_CREDENTIALS = "k3s-kubeconfig" + GITEA_CREDENTIALS = "gitea" + K8S_NAMESPACE = "insurance-system" + DEPLOYMENT_NAME = "insurance-frontend" + } + + stages { + stage('Checkout Code') { + steps { + checkout([$class: 'GitSCM', + branches: [[name: '*/develop']], + userRemoteConfigs: [[ + url: 'https://git.hzwnrw.my/Insurance/insurance-fe.git', + credentialsId: env.GITEA_CREDENTIALS + ]] + ]) + } + } + + stage('Increase Version') { + steps { + script { + sh ''' + git config user.email "jenkins@yourdomain.com" + git config user.name "Jenkins" + ''' + def currentVersion = sh(script: "node -p \"require('./package.json').version\"", returnStdout: true).trim() + echo "Current version: ${currentVersion}" + sh "npm version patch -m 'Auto-increment version [skip ci]'" + def newVersion = sh(script: "node -p \"require('./package.json').version\"", 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 package.json package-lock.json + git commit -m "Auto-increment version to ${newVersion}" || echo "No changes" + git push https://${GIT_USER}:${GIT_PASS}@git.hzwnrw.my/Insurance/insurance-fe.git HEAD:develop + """ + } + } + } + } + + stage('Build & Push Docker Image') { + steps { + script { + sh "npm install" + sh "npm run build --configuration production" + + def dockerImage = "hzwnrw/dev:insurance-frontend-${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 "rm -rf node_modules dist || true" + } + } + } + + post { + always { + cleanWs() + } + } +}