pipeline { agent any options { skipDefaultCheckout(true) // 全局设置字符编码为UTF-8 environment { LC_ALL = 'en_US.UTF-8' } } stages { stage('拉取Gitea源码') { steps { cleanWs() git url: 'http://localhost:3000/lrx/cstatm23210465' echo "✅ Gitea源码拉取完成!" } } stage('Maven打包(无乱码)') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { echo "📦 开始Maven编译打包..." // 关键:先设置cmd编码为UTF-8(chcp 65001),再执行命令 bat '''chcp 65001 mvn clean package -Dmaven.test.skip=true''' } echo "✅ Maven打包阶段完成!" } } stage('keytool生成密钥'){ steps { bat '''chcp 65001 keytool -genkey -alias mykey -keystore mykeystore.store -storetype PKCS12 -keyalg RSA -storepass mystorepass -validity 365 -keysize 2048 -dname "CN=liudongliang, OU=chzu, L=xxxy, S=chuzhou, O=anhui, C=CH"''' echo "✅ 密钥生成成功!" } } stage('jarsigner数字签名') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { bat '''chcp 65001 MKDIR app MOVE /Y "target\\cstatm23210465-0.0.1-SNAPSHOT-jar-with-dependencies.jar" "app\\cstatm23210465.jar" jarsigner -keystore myKeystore.store app\\cstatm23210465.jar mykey -storepass mystorepass''' } echo "✅ 数字签名阶段完成!" } } stage('jpackage生成msi(可选)'){ steps { catchError(buildResult: 'SUCCESS', stageResult: 'SKIPPED') { bat '''chcp 65001 echo "⚠️ 未安装WixTools将自动跳过" jpackage -i ./app --type msi -n cstatm23210465_msi --main-jar cstatm23210465.jar --main-class com.atm.view.gui.Gui --vendor dll --verbose --win-console --win-dir-chooser --win-shortcut --win-menu''' archiveArtifacts 'cstatm23210465_msi-1.0.msi' } echo "✅ MSI生成阶段完成!" } } stage('jar打包War') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { bat '''chcp 65001 jar cfM cstatm23210465.war index.html cstatm23210465.jnlp ./app/cstatm23210465.jar cstatm23210465_msi-1.0.msi''' } echo "✅ War包打包阶段完成!" } } stage('模拟部署War'){ steps{ echo "📤 模拟部署War包至Tomcat..." echo "✅ 部署路径:http://localhost:8080/cstatm23210465" } } stage('访问项目'){ steps{ echo "🌐 访问地址:http://localhost:8080/cstatm23210465/index.html" } } stage("通知邮件(容错)") { steps { catchError(buildResult: 'SUCCESS', stageResult: 'SKIPPED') { script { mail to: '602924803@qq.com', subject: "软件流水线: ${currentBuild.fullDisplayName}", body: " ${env.JOB_NAME}-构建#${env.BUILD_ID}-状态#${currentBuild.currentResult}\n 控制台 ${BUILD_URL} 查看结果。" } } echo "✅ 通知邮件阶段完成!" } } } post { always { cleanWs(cleanWhenNotBuilt: false, deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true, patterns: [[pattern: '.gitignore', type: 'INCLUDE'], [pattern: '.propsfile', type: 'EXCLUDE']]) echo "🧹 工作区清理完成!" } success { echo "🎉 流水线全流程成功!无乱码,可截图提交" } } }