forked from strimzi/strimzi-kafka-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile-pr
122 lines (120 loc) · 4.33 KB
/
Jenkinsfile-pr
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/env groovy
def lib
pipeline {
agent {
node {
label 'strimzi-pr'
}
}
parameters {
string(name: 'TEST_CASE', defaultValue: '*ST', description: 'maven parameter for executing specific tests')
string(name: 'TEST_PROFILE', defaultValue: 'acceptance', description: 'maven parameter for executing specific test profile')
}
options {
timeout(time: 22, unit: 'HOURS')
ansiColor('xterm')
}
environment {
ARTIFACTS_DIR = 'systemtest/target/logs'
JOB_NAME_SUB = "${String.format("%.15s", JOB_NAME).toLowerCase()}"
ORIGIN_BASE_DIR = "${env.WORKSPACE}/origin/"
KUBE_CONFIG_PATH = "${env.WORKSPACE}/origin/kube-apiserver/admin.kubeconfig"
}
stages {
stage('Clean WS') {
steps {
cleanWs()
}
}
stage('Checkout Strimzi') {
steps {
checkout scm
}
}
stage('Parse parameters from comment') {
steps {
script {
echo "Comment body: ${env.ghprbCommentBody}"
env.TEST_CASE = params.TEST_CASE
env.TEST_PROFILE = params.TEST_PROFILE
if (env.ghprbCommentBody.contains('testcase=')) {
env.TEST_CASE = env.ghprbCommentBody.split('testcase=')[1].split(/\s/)[0]
}
echo "TEST_CASE: ${env.TEST_CASE}"
if (env.ghprbCommentBody.contains('profile=')) {
env.TEST_PROFILE = env.ghprbCommentBody.split('profile=')[1].split(/\s/)[0]
}
echo "TEST_PROFILE: ${env.TEST_PROFILE}"
if (env.ghprbCommentBody.contains('test_only')) {
env.TEST_ONLY = true
env.DOCKER_REGISTRY = "docker.io"
env.DOCKER_ORG="strimzi"
env.DOCKER_TAG = "latest"
} else {
env.TEST_ONLY = false
env.DOCKER_ORG="strimzi"
env.DOCKER_REGISTRY="localhost:5000"
env.DOCKER_TAG="pr"
}
echo "TEST_ONLY: ${env.TEST_ONLY}"
echo "DOCKER_REGISTRY: ${env.DOCKER_REGISTRY}"
echo "DOCKER_ORG: ${env.DOCKER_ORG}"
echo "DOCKER_TAG: ${env.DOCKER_TAG}"
}
}
}
stage('Start Openshift') {
steps {
timeout(time: 25, unit: 'MINUTES') {
script {
lib = evaluate readFile('./jenkins.groovy')
lib.startOrigin()
}
}
}
}
stage('Build project') {
steps {
script {
withMaven(mavenOpts: '-Djansi.force=true') {
sh "mvn clean install -DskipTests -Dstyle.color=always --no-transfer-progress"
}
}
}
}
stage('Build images') {
when {
environment name: 'TEST_ONLY', value: 'false'
}
steps {
script {
lib.buildStrimziImages()
}
}
}
stage('Execute system tests') {
steps {
script {
catchError {
lib.runSystemTests(env.WORKSPACE, env.TEST_CASE, env.TEST_PROFILE)
}
}
}
}
}
post {
always {
script {
sh "sudo ./systemtest/scripts/results_info.sh ./systemtest/target/failsafe-reports/ ${env.TEST_CASE} ${env.TEST_PROFILE}"
lib.postGithubPrComment("results.json")
lib.postAction(env.ARTIFACTS_DIR, env.ghprbPullId, env.ghprbActualCommitAuthor, env.ghprbPullTitle, env.ghprbPullLink, env.BUILD_URL, env.WORKSPACE, env.STRIMZI_MAILING_LIST)
}
}
failure {
echo "Build failed"
script {
lib.sendMail(env.STRIMZI_MAILING_LIST, "failed", env.ghprbPullId, env.ghprbActualCommitAuthor, env.ghprbPullTitle, env.ghprbPullLink, env.BUILD_URL)
}
}
}
}