Skip to content

Commit dcf5fac

Browse files
author
Matt Pavlovich
committed
[#476] Add Jenkinsfile
1 parent 3fed61a commit dcf5fac

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

Jenkinsfile

+151
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#!groovy
2+
3+
pipeline {
4+
5+
agent any
6+
7+
tools {
8+
// ... tell Jenkins what java version, maven version or other tools are required ...
9+
maven 'maven-3.9'
10+
jdk 'jdk-11'
11+
}
12+
13+
options {
14+
// Configure an overall timeout for the build of ten hours.
15+
timeout(time: 8, unit: 'HOURS')
16+
// When we have test-fails e.g. we don't need to run the remaining steps
17+
buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
18+
disableConcurrentBuilds()
19+
}
20+
21+
parameters {
22+
choice(name: 'Build', choices: ['snapshot', 'release-dry-run', 'release'])
23+
string(name: 'ReleaseVersion', trim: true, description: 'Override release version number')
24+
string(name: 'NextSnapshotVersion', trim: true, description: 'Override next SNAPSHOT version number')
25+
booleanParam(name: 'keepWorkspace', description: 'Keep workspace', defaultValue: false)
26+
booleanParam(name: 'mavenDebug', description: 'Enable Maven debug mode', defaultValue: false)
27+
}
28+
29+
stages {
30+
stage('Initialization') {
31+
steps {
32+
echo 'Building branch ' + env.BRANCH_NAME
33+
echo 'Using PATH ' + env.PATH
34+
echo 'Git URL: ' + env.GIT_URL
35+
echo 'Git branch: ' + env.GIT_BRANCH
36+
echo 'Git commit: ' + env.GIT_COMMIT
37+
echo 'Git commiter: ' + env.GIT_COMMITER_NAME
38+
}
39+
}
40+
41+
stage('Cleanup') {
42+
steps {
43+
echo 'Cleaning up the workspace'
44+
deleteDir()
45+
}
46+
}
47+
48+
stage('Checkout') {
49+
steps {
50+
script {
51+
echo 'Checking out branch ' + env.BRANCH_NAME
52+
checkout scm
53+
54+
// Check for the temporary merge commit to test PR against target branch
55+
//result = sh (script: "git log -1 | grep '^Author: Jenkins'", returnStatus: true)
56+
//if (result == 0) {
57+
// Check if next real commit was the release plugin
58+
// result = sh (script: "git log -2 | grep '.*\\[maven-release-plugin\\] prepare release.*'", returnStatus: true)
59+
// if (result == 0) {
60+
// error ("'[maven-release-plugin] prepare release' spotted in git commit. Aborting.")
61+
// currentBuild.result = 'ABORTED'
62+
// error('Build aborted due to matching release commit')
63+
// }
64+
//}
65+
}
66+
}
67+
}
68+
69+
stage('Build') {
70+
steps {
71+
echo 'Building'
72+
sh 'mvn -U -B -e clean install -DskipTests'
73+
}
74+
}
75+
76+
stage('Tests') {
77+
steps {
78+
echo 'Running tests [SKIPPED]'
79+
sh 'mvn -Prelease -B -e -fae test'
80+
}
81+
post {
82+
always {
83+
junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
84+
junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
85+
}
86+
}
87+
}
88+
89+
stage('Deploy') {
90+
when {
91+
expression {
92+
env.BRANCH_NAME ==~ /(master|jaxb-tools-3.x|jaxb-tools-2.x)/
93+
}
94+
}
95+
steps {
96+
echo 'Deploying [SKIPPED]'
97+
// sh 'mvn -Pfull,release -B -e deploy -Pdeploy -DskipTests'
98+
}
99+
}
100+
101+
stage("Release Dry Run") {
102+
when {
103+
expression { params.Build == 'release-dry-run' }
104+
}
105+
steps {
106+
script {
107+
if (!params.ReleaseVersion.isEmpty() && !params.NextSnapshotVersion.isEmpty()) {
108+
sh "mvn -Prelease -B -Darguments=\"-DskipTests=true -Dmpir.skip=true\" -DignoreSnapshots=true -DdryRun=true -DskipTests=true -Dmpir.skip=true -DreleaseVersion=${params.ReleaseVersion} -DdevelopmentVersion=${params.NextSnapshotVersion} validate release:prepare release:perform"
109+
} else {
110+
sh "mvn -Prelease -B -Darguments=\"-DskipTests=true -Dmpir.skip=true\" -DignoreSnapshots=true -DdryRun=true -DskipTests=true -Dmpir.skip=true validate release:prepare release:perform"
111+
}
112+
}
113+
}
114+
}
115+
116+
stage("Release") {
117+
when {
118+
expression { params.Build == 'release' }
119+
}
120+
121+
steps {
122+
script {
123+
if (params.mavenDebug) {
124+
if (!params.ReleaseVersion.isEmpty() && !params.NextSnapshotVersion.isEmpty()) {
125+
sh "mvn -Prelease,helm-deploy -X -B -Darguments=\"-DskipTests=true -Dmpir.skip=true\" -DignoreSnapshots=true -DskipTests=true -Dmpir.skip=true -DreleaseVersion=${params.ReleaseVersion} -DdevelopmentVersion=${params.NextSnapshotVersion} validate release:clean release:prepare release:perform"
126+
} else {
127+
sh "mvn -Prelease,helm-deploy -X -B -Darguments=\"-DskipTests=true -Dmpir.skip=true\" -DignoreSnapshots=true -DskipTests=true -Dmpir.skip=true validate release:clean release:prepare release:perform"
128+
}
129+
} else {
130+
if (!params.ReleaseVersion.isEmpty() && !params.NextSnapshotVersion.isEmpty()) {
131+
sh "mvn -Prelease,helm-deploy -B -Darguments=\"-DskipTests=true -Dmpir.skip=true\" -DignoreSnapshots=true -DskipTests=true -Dmpir.skip=true -DreleaseVersion=${params.ReleaseVersion} -DdevelopmentVersion=${params.NextSnapshotVersion} validate release:clean release:prepare release:perform"
132+
} else {
133+
sh 'mvn -Prelease,helm-deploy -B -Darguments="-DskipTests=true -Dmpir.skip=true" -DignoreSnapshots=true -DskipTests=true -Dmpir.skip=true validate release:clean release:prepare release:perform'
134+
}
135+
}
136+
137+
}
138+
}
139+
}
140+
}
141+
142+
stage("Post-Cleanup") {
143+
when {
144+
expression { return !params.keepWorkspace }
145+
}
146+
steps {
147+
deleteDir()
148+
}
149+
}
150+
}
151+
}

0 commit comments

Comments
 (0)