forked from FeatureIDE/FeatureIDE
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
87 lines (77 loc) · 3.31 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
script{
setBuildStatus = {String message, String context, String state ->
withCredentials([string(credentialsId: 'githubToken', variable: 'TOKEN')]) {
sh """
set -x
curl \"https://api.github.com/repos/FeatureIDE/FeatureIDE/statuses/$GIT_COMMIT?access_token=$TOKEN\" \
-H \"Content-Type: application/json\" \
-X POST \
-d \"{\\\"description\\\": \\\"$message\\\", \\\"state\\\": \\\"$state\\\", \\\"context\\\": \\\"$context\\\", \\\"target_url\\\": \\\"$BUILD_URL\\\"}\"
"""
}
}
}
pipeline {
agent any
tools {
maven 'Maven 3.5.2'
}
stages {
stage ('Initialize') {
steps {
script {
setBuildStatus("Compiling", "Jenkins build", "pending");
def causes = currentBuild.getBuildCauses('com.cloudbees.jenkins.GitHubPushCause').shortDescription
if(!causes) {
causes = currentBuild.getBuildCauses('hudson.model.Cause$UserIdCause').shortDescription
}
currentBuild.displayName = "#${BUILD_NUMBER} ${GIT_BRANCH} ${causes}"
}
sh '''
echo "PATH = ${PATH}"
echo "M2_HOME = ${M2_HOME}"
'''
}
}
stage ('Test') {
steps {
sh 'mvn clean test'
}
}
stage ('Package') {
steps {
sh 'mvn clean package'
}
}
stage ('Verify') {
steps {
//starts Xvfb plugin
wrap([$class: 'Xvfb', additionalOptions: '', assignedLabels: '', autoDisplayName: true, debug: true, displayNameOffset: 0, installationName: 'default', parallelBuild: true, screen: '']) {
sh 'mvn clean verify'
}
jacoco exclusionPattern: '**/*Test*.class **/T*.class **/*Test.class **/*Tests.class', sourcePattern: '**/src/de/ovgu'
}
}
}
post {
success{
script{
setBuildStatus("Build complete", "Jenkins build", "success")
}
}
unsuccessful {
script {
setBuildStatus("Failed", "Jenkins build", "failure")
def author = ""
if(currentBuild && !currentBuild.changeSets.isEmpty()) {
author += "Commit author: ${currentBuild.changeSets.getAt(0).getItems()[0].getAuthor()}"
} else {
author += "${currentBuild.getBuildCauses('hudson.model.Cause$UserIdCause').shortDescription}"
author = author.substring(1, author.length()-1)
}
def gitBranch = currentBuild.displayName.substring(currentBuild.displayName.indexOf('/')+1, currentBuild.displayName.indexOf('['))
emailext body: "Result can be found at:'${currentBuild.absoluteUrl}' \n \n${author} \n \nGitbranch: ${gitBranch} ", subject: "Failed Branch: ${gitBranch}", to: 'thomas.thuem@uni-ulm.de, Sebastian.Krieter@ovgu.de, c.sundermann@tu-braunschweig.de, joshua.sprey@web.de, paul.westphal@tu-braunschweig.de, tobias.hess@uni-ulm.de'
}
}
}
}