1
+
1
2
pipeline {
2
3
3
4
agent {
4
5
docker {
5
- image ' maven:3-jdk-11'
6
- args ' -v $HOME/.m2:/var/maven/.m2:z -u 1000 -ti -e _JAVA_OPTIONS=-Duser.home=/var/maven -e MAVEN_CONFIG=/var/maven/.m2'
6
+ /* using a custom build image with a defined home directory for UID 1000 among other things */
7
+ image ' nexus.intranda.com:4443/maven:3.9.3-eclipse-temurin-17'
8
+ registryUrl ' https://nexus.intranda.com:4443'
9
+ registryCredentialsId ' jenkins-docker'
10
+ args ' -v $HOME/.m2:/var/maven/.m2:z -v $HOME/.config:/var/maven/.config -v $HOME/.sonar:/var/maven/.sonar -u 1000 -ti -e _JAVA_OPTIONS=-Duser.home=/var/maven -e MAVEN_CONFIG=/var/maven/.m2'
7
11
}
8
12
}
9
13
10
14
options {
11
15
buildDiscarder logRotator(artifactDaysToKeepStr : ' ' , artifactNumToKeepStr : ' 15' , daysToKeepStr : ' 90' , numToKeepStr : ' ' )
12
16
}
13
-
14
-
17
+
15
18
stages {
16
19
stage(' prepare' ) {
17
20
steps {
18
- sh ' git clean -fdx'
21
+ sh ' git reset --hard HEAD && git clean -fdx'
19
22
}
20
23
}
21
-
22
- stage(' build' ) {
24
+ stage(' build-snapshot' ) {
25
+ when {
26
+ not {
27
+ anyOf {
28
+ branch ' master'
29
+ branch ' release_*'
30
+ allOf {
31
+ branch ' PR-*'
32
+ expression { env. CHANGE_BRANCH . startsWith(" release_" ) }
33
+ }
34
+ }
35
+ }
36
+ }
23
37
steps {
24
- sh ' mvn -f plugin/pom.xml package'
25
- recordIssues enabledForFailure : true , aggregatingResults : true , tools : [java(), javaDoc()]
38
+ sh ' mvn clean verify -U -P snapshot-build'
26
39
}
27
40
}
28
-
29
- stage(' deployment of artifacts to maven repository' ) {
41
+ stage(' build-release' ) {
42
+ when {
43
+ anyOf {
44
+ branch ' master'
45
+ branch ' release_*'
46
+ allOf {
47
+ branch ' PR-*'
48
+ expression { env. CHANGE_BRANCH . startsWith(" release_" ) }
49
+ }
50
+ }
51
+ }
52
+ steps {
53
+ sh ' mvn clean verify -U -P release-build'
54
+ }
55
+ }
56
+ stage(' sonarcloud' ) {
57
+ when {
58
+ anyOf {
59
+ branch ' master'
60
+ branch ' release_*'
61
+ branch ' sonar_*'
62
+ allOf {
63
+ branch ' PR-*'
64
+ expression { env. CHANGE_BRANCH . startsWith(" release_" ) }
65
+ }
66
+ }
67
+ }
68
+ steps {
69
+ withCredentials([string(credentialsId : ' jenkins-sonarcloud' , variable : ' TOKEN' )]) {
70
+ sh ' mvn verify sonar:sonar -Dsonar.token=$TOKEN -U'
71
+ }
72
+ }
73
+ }
74
+ stage(' deploy-libs' ) {
30
75
when {
31
76
anyOf {
32
- tag " v*"
33
- branch ' develop'
34
77
branch ' master'
78
+ branch ' develop'
35
79
}
36
80
}
37
81
steps {
38
- sh ' mvn -f plugin/pom.xml deploy'
82
+ script {
83
+ if (fileExists(' module-lib/pom.xml' )) {
84
+ sh ' mvn -N deploy'
85
+ sh ' mvn -f module-lib/pom.xml deploy'
86
+ }
87
+ }
88
+ }
89
+ }
90
+ stage(' tag release' ) {
91
+ when { branch ' master' }
92
+ steps {
93
+ withCredentials([gitUsernamePassword(credentialsId : ' 93f7e7d3-8f74-4744-a785-518fc4d55314' ,
94
+ gitToolName : ' git-tool' )]) {
95
+ sh ''' #!/bin/bash -xe
96
+ projectversion=$(mvn org.apache.maven.plugins:maven-help-plugin:3.4.0:evaluate -Dexpression=project.version -q -DforceStdout)
97
+ if [ $? != 0 ]
98
+ then
99
+ exit 1
100
+ elif [[ "${projectversion}" =~ "SNAPSHOT" ]]
101
+ then
102
+ echo "This is a SNAPSHOT version"
103
+ exit 1
104
+ fi
105
+ echo "${projectversion}"
106
+ git tag -a "v${projectversion}" -m "releasing v${projectversion}" && git push origin v"${projectversion}"
107
+ '''
108
+ }
39
109
}
40
110
}
41
111
}
112
+
42
113
post {
114
+ always {
115
+ junit allowEmptyResults : true , testResults : " **/target/surefire-reports/*.xml"
116
+ step([
117
+ $class : ' JacocoPublisher' ,
118
+ execPattern : ' **/target/jacoco.exec' ,
119
+ classPattern : ' **/target/classes/' ,
120
+ sourcePattern : ' **/src/main/java' ,
121
+ exclusionPattern : ' **/*Test.class'
122
+ ])
123
+ recordIssues (
124
+ enabledForFailure : true , aggregatingResults : false ,
125
+ tools : [checkStyle(pattern : ' target/checkstyle-result.xml' , reportEncoding : ' UTF-8' )]
126
+ )
127
+ dependencyCheckPublisher pattern : ' target/dependency-check-report.xml'
128
+ }
43
129
success {
44
- archiveArtifacts artifacts : ' **/target/*.jar, */plugin_*.xml, plugin_*.xml ' , fingerprint : true , onlyIfSuccessful : true
130
+ archiveArtifacts artifacts : ' **/target/*.jar, install/* ' , fingerprint : true , onlyIfSuccessful : true
45
131
}
46
132
changed {
47
133
emailext(
@@ -53,5 +139,3 @@ pipeline {
53
139
}
54
140
}
55
141
}
56
-
57
- /* vim: set ts=2 sw=2 tw=120 et :*/
0 commit comments