blob: 4382204fb628e1cf92a7bd0ac35ce821c450a2e4 [file] [log] [blame]
Filip Pytlounfcce97c2017-03-07 14:06:07 +01001def gerrit = new com.mirantis.mk.Gerrit()
Filip Pytloun6a057302017-03-07 16:33:30 +01002def common = new com.mirantis.mk.Common()
Filip Pytloun19376a82017-03-07 12:29:00 +01003
Filip Pytlounfcce97c2017-03-07 14:06:07 +01004def gerritCredentials
5try {
6 gerritCredentials = CREDENTIALS_ID
7} catch (MissingPropertyException e) {
8 gerritCredentials = "gerrit"
9}
10
Jakub Josef4612c5d2017-03-30 16:04:26 +020011def gerritRef
12try {
13 gerritRef = GERRIT_REFSPEC
14} catch (MissingPropertyException e) {
15 gerritRef = null
16}
17
18def defaultGitRef, defaultGitUrl
19try {
20 defaultGitRef = DEFAULT_GIT_REF
21 defaultGitUrl = DEFAULT_GIT_URL
22} catch (MissingPropertyException e) {
23 defaultGitRef = null
24 defaultGitUrl = null
25}
26def checkouted = false
Jakub Joseffcb615e2017-04-10 14:34:40 +020027def merged = false
Filip Pytlounfcce97c2017-03-07 14:06:07 +010028try {
29 stage("Checkout") {
30 node() {
Jakub Josef4612c5d2017-03-30 16:04:26 +020031 if (gerritRef) {
32 // job is triggered by Gerrit
Jakub Joseffcb615e2017-04-10 14:34:40 +020033 // test if change aren't already merged
34 def gerritChange = gerrit.getGerritChange(GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, CREDENTIALS_ID)
35 merged = gerritChange.status == "MERGED"
36 if(!merged){
37 checkouted = gerrit.gerritPatchsetCheckout ([
38 credentialsId : gerritCredentials
39 ])
40 }
Jakub Josef4612c5d2017-03-30 16:04:26 +020041 // change defaultGit variables if job triggered from Gerrit
Jakub Josef63326772017-03-30 16:38:11 +020042 defaultGitUrl = "${GERRIT_SCHEME}://${GERRIT_NAME}@${GERRIT_HOST}:${GERRIT_PORT}/${GERRIT_PROJECT}"
Jakub Josef4612c5d2017-03-30 16:04:26 +020043 } else if(defaultGitRef && defaultGitUrl) {
44 checkouted = gerrit.gerritPatchsetCheckout(defaultGitUrl, defaultGitRef, "HEAD", gerritCredentials)
45 }
Filip Pytloun840a0842017-03-07 13:54:23 +010046 }
Filip Pytloun19376a82017-03-07 12:29:00 +010047 }
Filip Pytlounfcce97c2017-03-07 14:06:07 +010048
49 stage("Test") {
Jakub Joseffcb615e2017-04-10 14:34:40 +020050 if(merged){
51 common.successMsg("Gerrit change is already merged, no need to test them")
Jakub Josef4612c5d2017-03-30 16:04:26 +020052 }else{
Jakub Joseffcb615e2017-04-10 14:34:40 +020053 if(checkouted){
54 def branches = [:]
55 def testModels = TEST_MODELS.split(',')
56 for (int i = 0; i < testModels.size(); i++) {
57 def cluster = testModels[i]
58 def clusterGitUrl = defaultGitUrl.substring(0, defaultGitUrl.lastIndexOf("/") + 1) + cluster
59 branches["${cluster}"] = {
60 build job: "test-salt-model-${cluster}", parameters: [
61 [$class: 'StringParameterValue', name: 'DEFAULT_GIT_URL', value: clusterGitUrl],
62 [$class: 'StringParameterValue', name: 'DEFAULT_GIT_REF', value: "HEAD"]
63 ]
64 }
65 }
66 parallel branches
67 }else{
68 throw new Exception("Cannot checkout gerrit patchset, GERRIT_REFSPEC and DEFAULT_GIT_REF is null")
69 }
Filip Pytlounfcce97c2017-03-07 14:06:07 +010070 }
Filip Pytlounfcce97c2017-03-07 14:06:07 +010071 }
72} catch (Throwable e) {
73 // If there was an error or exception thrown, the build failed
74 currentBuild.result = "FAILURE"
75 throw e
76} finally {
77 common.sendNotification(currentBuild.result,"",["slack"])
Filip Pytloun19376a82017-03-07 12:29:00 +010078}