| 刘洪青 | 45bb76c | 2019-08-19 14:41:35 +0800 | [diff] [blame] | 1 | pipeline { | 
 | 2 |   agent any | 
 | 3 |  | 
 | 4 |   triggers { | 
 | 5 |     // 每30分钟检查一下GIT仓库 | 
 | 6 |     pollSCM '*/30 * * * *' | 
 | 7 |   } | 
 | 8 |  | 
 | 9 |   options { | 
 | 10 |     // 禁止因Multibranch pipeline index动作触发构建 | 
 | 11 |     overrideIndexTriggers false | 
 | 12 |     // 禁止并发构建 | 
 | 13 |     disableConcurrentBuilds() | 
 | 14 |     // 构建结果保留天数10天,最多保留10个 | 
 | 15 |     buildDiscarder logRotator(daysToKeepStr: '30', numToKeepStr: '10') | 
 | 16 |     // 控制台打出时间戳 | 
 | 17 |     // timestamps() | 
 | 18 |     // 构建超时设置:15分钟 | 
 | 19 |     timeout(30) | 
 | 20 |   } | 
 | 21 |  | 
 | 22 |   stages { | 
 | 23 |  | 
 | 24 |     stage('Build & Test') { | 
 | 25 |  | 
 | 26 |       steps { | 
 | 27 |         withMaven( | 
 | 28 |           // Jenkins全局工具设置的Maven的名字 | 
 | 29 |           maven: 'Maven3', | 
 | 30 |           // Jenkins全局工具设置的JDK的名字,有JDK6,JDK7,JDK8可选 | 
 | 31 |           jdk: 'JDK8', | 
 | 32 |           // 指定maven本地仓库路径为项目working dir下的.local-m2-reop,可以避免因并发构建导致本地仓库混乱的问题 | 
 | 33 |           mavenLocalRepo: '.local-m2-repo' | 
 | 34 |         ) { | 
 | 35 |           sh 'mvn clean package -DskipTests -DskipITs' | 
 | 36 |         } | 
 | 37 |       } | 
 | 38 |  | 
 | 39 |     } | 
 | 40 |  | 
 | 41 |     stage('Push nexus') { | 
 | 42 |  | 
 | 43 |       when { | 
 | 44 |         // 只有当前分支是develop时才执行本Stage | 
 | 45 |         branch 'develop' | 
 | 46 |         beforeAgent true | 
 | 47 |       } | 
 | 48 |  | 
 | 49 |       steps { | 
 | 50 |         withMaven( | 
 | 51 |           maven: 'Maven3', | 
 | 52 |           jdk: 'JDK8', | 
 | 53 |           mavenLocalRepo: '.local-m2-repo', | 
 | 54 |           // 只是Deploy,因此把所有options都关闭掉(默认是都开启的) | 
 | 55 |           publisherStrategy: 'EXPLICIT' | 
 | 56 |         ) { | 
 | 57 |           sh 'mvn clean package deploy -DskipTests -DskipITs' | 
 | 58 |         } | 
 | 59 |       } | 
 | 60 |  | 
 | 61 |     } | 
 | 62 |  | 
 | 63 |     stage ('Push harbor') { | 
 | 64 |  | 
 | 65 |       when { | 
 | 66 |         branch 'develop' | 
 | 67 |         beforeAgent true | 
 | 68 |       } | 
 | 69 |  | 
 | 70 |       steps { | 
 | 71 |         withMaven( | 
 | 72 |           maven: 'Maven3', | 
 | 73 |           jdk: 'JDK8', | 
 | 74 |           mavenLocalRepo: '.local-m2-repo', | 
 | 75 |           publisherStrategy: 'EXPLICIT' | 
 | 76 |         ) { | 
 | 77 |           sh 'mvn clean package -DskipTests -DskipITs dockerfile:build dockerfile:push' | 
 | 78 |         } | 
 | 79 |       } | 
 | 80 |  | 
 | 81 |     } | 
 | 82 |  | 
 | 83 |   } | 
 | 84 |  | 
 | 85 |   post { | 
 | 86 |     always { | 
 | 87 |       // 发送邮件到本次change所包含的committer | 
 | 88 |       emailext recipientProviders: [developers()], | 
 | 89 |         subject: "Pipeline [${currentBuild.fullDisplayName}] built ${currentBuild.currentResult}", | 
 | 90 |         body: "More details: ${currentBuild.absoluteUrl}" | 
 | 91 |  | 
 | 92 |     } | 
 | 93 |     cleanup { | 
 | 94 |       // 清空workspace,节省Jenkins服务器磁盘空间 | 
 | 95 |       echo 'Cleanup workspace' | 
 | 96 |       withMaven(maven: 'Maven3', jdk: 'JDK8', mavenLocalRepo: '.local-m2-repo') { | 
 | 97 |         sh 'mvn clean' | 
 | 98 |       } | 
 | 99 |  | 
 | 100 |     } | 
 | 101 |   } | 
 | 102 | } |