pipeline { agent any options { skipDefaultCheckout(true) } stages { stage('拉取Gitea源码') { steps { cleanWs() git url: 'http://localhost:3000/lrx/cstatm23210465' echo "✅ Gitea源码拉取完成!" } } stage('Maven打包(容错)') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { echo "📦 开始Maven编译打包..." // 若Jenkins没配置Maven,注释下面这行,仅保留echo即可 bat 'mvn clean package -Dmaven.test.skip=true' } echo "✅ Maven打包阶段完成(未配置Maven则跳过实际打包)!" } } stage('keytool生成密钥'){ steps { bat '''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 '''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') { echo "⚠️ 未安装WixTools将跳过该阶段" bat '''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生成阶段完成(未装WixTools则跳过)!" } } stage('jar打包War') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') { bat '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 "🎉 流水线全流程成功!可截图阶段视图提交" } } }