| pipeline { | 
 |   agent any | 
 |  | 
 |   triggers { | 
 |     // 每30分钟检查一下GIT仓库 | 
 |     pollSCM '*/30 * * * *' | 
 |   } | 
 |  | 
 |   options { | 
 |     // 禁止因Multibranch pipeline index动作触发构建 | 
 |     overrideIndexTriggers false | 
 |     // 禁止并发构建 | 
 |     disableConcurrentBuilds() | 
 |     // 构建结果保留天数10天,最多保留10个 | 
 |     buildDiscarder logRotator(daysToKeepStr: '7', numToKeepStr: '10', artifactDaysToKeepStr: '1', artifactNumToKeepStr: '1') | 
 |     // 控制台打出时间戳 | 
 |     // timestamps() | 
 |     // 构建超时设置:15分钟 | 
 |     timeout(30) | 
 |   } | 
 |  | 
 |   stages { | 
 |  | 
 |     stage('Build & Test') { | 
 |  | 
 |       steps { | 
 |         withMaven( | 
 |           // Jenkins全局工具设置的Maven的名字 | 
 |           maven: 'Maven3', | 
 |           // Jenkins全局工具设置的JDK的名字,有JDK6,JDK7,JDK8可选 | 
 |           jdk: 'JDK8', | 
 |           // 指定maven本地仓库路径为项目working dir下的.local-m2-reop,可以避免因并发构建导致本地仓库混乱的问题 | 
 |           mavenLocalRepo: '.local-m2-repo' | 
 |         ) { | 
 |           sh 'mvn clean package -DskipTests -DskipITs' | 
 |         } | 
 |       } | 
 |  | 
 |     } | 
 |  | 
 |     stage('Push nexus') { | 
 |  | 
 |       when { | 
 |         // 只有当前分支是develop时才执行本Stage | 
 |         branch 'develop' | 
 |         beforeAgent true | 
 |       } | 
 |  | 
 |       steps { | 
 |         withMaven( | 
 |           maven: 'Maven3', | 
 |           jdk: 'JDK8', | 
 |           mavenLocalRepo: '.local-m2-repo', | 
 |           // 只是Deploy,因此把所有options都关闭掉(默认是都开启的) | 
 |           publisherStrategy: 'EXPLICIT' | 
 |         ) { | 
 |           sh 'mvn clean package deploy -DskipTests -DskipITs' | 
 |         } | 
 |       } | 
 |  | 
 |     } | 
 |  | 
 |     stage ('Push harbor') { | 
 |  | 
 |       when { | 
 |         branch 'develop' | 
 |         beforeAgent true | 
 |       } | 
 |  | 
 |       steps { | 
 |         withMaven( | 
 |           maven: 'Maven3', | 
 |           jdk: 'JDK8', | 
 |           mavenLocalRepo: '.local-m2-repo', | 
 |           publisherStrategy: 'EXPLICIT' | 
 |         ) { | 
 |           sh 'mvn clean package -DskipTests -DskipITs dockerfile:build dockerfile:push' | 
 |         } | 
 |       } | 
 |  | 
 |     } | 
 |  | 
 |   } | 
 |  | 
 |   post { | 
 |     always { | 
 |       // 发送邮件到本次change所包含的committer | 
 |       emailext recipientProviders: [developers()], | 
 |         subject: "Pipeline [${currentBuild.fullDisplayName}] built ${currentBuild.currentResult}", | 
 |         body: "More details: ${currentBuild.absoluteUrl}" | 
 |  | 
 |     } | 
 |     cleanup { | 
 |       // 清空workspace,节省Jenkins服务器磁盘空间 | 
 |       echo 'Cleanup workspace' | 
 |       withMaven(maven: 'Maven3', jdk: 'JDK8', mavenLocalRepo: '.local-m2-repo') { | 
 |         sh 'mvn clean' | 
 |       } | 
 |  | 
 |     } | 
 |   } | 
 | } |