blob: 57c5f870763939f172c13ca44f70dda51c303078 [file] [log] [blame]
刘洪青45bb76c2019-08-19 14:41:35 +08001pipeline {
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}