|
|
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 "🎉 流水线全流程成功!可截图阶段视图提交"
|
|
|
}
|
|
|
}
|
|
|
} |