pipeline { agent any tools { maven 'Maven 3.8.8' jdk 'jdk20' } stages { // 拉取代码 stage('Pull Code') { steps { checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], extensions: [], userRemoteConfigs: [[credentialsId: '0f6d6eaa8754e735262afa495fe2828d611fca17', url: 'http://39.105.23.186:3000/develop/digimeta-MultiSaas.git']]]) } } // 代码静态检查 stage('Maven Package and Sonar') { steps { withSonarQubeEnv('Sonar') { sh "java -version" sh "which java" echo "打包子目录并进行代码检查 ${project_name}" sh "mvn clean install" sh "mvn -f ${project_name} clean package -e -U -Dmaven.test.skip=true -P${build_env} -Dsonar.login=admin -Dsonar.password=Digimeta@2023 sonar:sonar" } } } stage('Quality Gate') { steps { //休息10s等待结果 sleep(10) script { def workspace=pwd() // 删除所有report报告 sh "find ${workspace} -name report-task.txt | xargs rm -f" // 删除所有sonar锁 sh "find ${workspace} -name .sonar_lock | xargs rm -f" } timeout(time: 5, unit: 'MINUTES') { // Parameter indicates whether to set pipeline to UNSTABLE if Quality Gate fails // true = set pipeline to UNSTABLE, false = don't waitForQualityGates abortPipeline: true waitForQualityGate abortPipeline: true } } } // build Docker并推送镜像仓库 stage('Push to Registry') { steps { script { def workspace=pwd() // 版本 def tag = "0.8" def ali_registry = "registry.cn-beijing.aliyuncs.com" def mavenPath="/usr/share/maven" if ("${project_name}" == 'digimeta-MultiSaas' ) { echo '仅做代码检查,不打包目录' } else { echo "构件微服务 ${module_name},并推送到镜像仓库" sh """ cd ${workspace}/${project_name} docker login --username=缔智元2023 --password=digimeta@2023 ${ali_registry} docker build --tag ${ali_registry}/digitalman-multisaas/${module_name}:${git_version}-${build_env} . docker push ${ali_registry}/digitalman-multisaas/${module_name}:${git_version}-${build_env} docker rmi ${ali_registry}/digitalman-multisaas/${module_name}:${git_version}-${build_env} """ } } } } } }