-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathQEJenkinsFile
105 lines (95 loc) · 3.67 KB
/
QEJenkinsFile
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
import groovy.json.JsonSlurperClassic
def build_id
def build_zip
def build_tar
def build_maven
def build_maven_zip
def buildRuns = ''
def authProps = [
'requestProperties' : [
'Authorization': "Basic ${'mw-build-user:da2011a51dc4a01e9001dd68149225ca'.bytes.encodeBase64()}".toString()
]
]
@NonCPS
def getJobsFromView(def viewUrl, def authProps) {
def jsonSlurper = new JsonSlurperClassic()
def jobs = []
def stack = [] as Stack
stack << jsonSlurper.parseText(viewUrl.getText(authProps))
while(!stack.empty()) {
def viewOrJob = stack.pop()
if (viewOrJob.views) {
viewOrJob.views.each { stack << jsonSlurper.parseText("${it.url}/api/json".toURL().getText(authProps)) }
} else {
jobs.addAll(viewOrJob.jobs)
}
}
return jobs
}
node ('dtests-tcn') {
stage('get stagger info') {
checkout scm
sh "sh ./scripts/getamq.sh"
def props = readProperties file:'build.properties'
build_id= props['BUILDID']
build_zip= props['BUILDZIP']
build_tar= props['BUILDTAR']
build_maven= props['BUILDMAVEN']
build_maven_zip= "${build_maven}.zip"
echo "build_id=${build_id}"
echo "build_zip=${build_zip}"
echo "build_tar=${build_tar}"
echo "build_maven=${build_maven}"
echo "build_maven_zip=${build_maven_zip}"
}
stage ('build eap') {
def eap = build(
job: 'early-testing-messaging-prepare',
parameters: [
[ $class: 'StringParameterValue', name: 'EAP_REPO', value: '' ],
[ $class: 'StringParameterValue', name: 'EAP_BRANCH', value: 'EAP_7.4.0.CD21-AMQ' ],
[ $class: 'StringParameterValue', name: 'ARTEMIS_ZIP_URL', value: build_zip]
],
propagate: false
)
if (eap.result != 'SUCCESS') {
throw new Exception("EAP build job failed.")
}
eapZipUrl = "${eap.absoluteUrl}/artifact/jboss-eap.zip"
clientsVersion = "${eap.absoluteUrl}/artifact/clients-version.txt".toURL().getText(authProps).trim()
}
stage('EAP Tests') {
def viewUrl = "https://mw-messaging-qe-jenkins.rhev-ci-vms.eng.rdu2.redhat.com/view/AMQ%20Broker%20Nightly/api/json".toURL()
def tasks = [:]
for (def job : getJobsFromView(viewUrl, authProps)) {
if (job.color == 'disabled') {
continue
}
def jobName = job.name
tasks[jobName] = {
build(
job: jobName,
parameters: [
[ $class: 'StringParameterValue', name: 'EAP_ZIP_URL', value: eapZipUrl ],
[ $class: 'StringParameterValue', name: 'EAP_VERSION', value: clientsVersion ],
[ $class: 'StringParameterValue', name: 'ARTEMIS_REPO', value: '' ],
[ $class: 'StringParameterValue', name: 'TESTSUITE_REPO', value: 'git@gitlab.cee.redhat.com:dbruscin/eap-testsuite-mirror.git' ],
[ $class: 'StringParameterValue', name: 'TESTSUITE_BRANCH', value: 'maven_cli_opts' ],
[ $class: 'StringParameterValue', name: 'AMQ_BROKER_DOWNLOAD_URL', value: build_zip],
[ $class: 'StringParameterValue', name: 'CUSTOM_MAVEN_REPO_ZIP_URL', value: build_maven_zip],
[ $class: 'StringParameterValue', name: 'SUT_URL', value: build_zip]
],
propagate: false
)
}
}
def jobs = parallel(tasks)
for (def job : jobs.values()) {
buildRuns += "${job.absoluteUrl}\n"
}
}
stage('Collate Results') {
writeFile file: "results.txt", text: buildRuns
archiveArtifacts artifacts: 'results.txt'
}
}