| Filip Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 1 | def gerrit = new com.mirantis.mk.Gerrit() | 
| Filip Pytloun | 6a05730 | 2017-03-07 16:33:30 +0100 | [diff] [blame] | 2 | def common = new com.mirantis.mk.Common() | 
| Filip Pytloun | 19376a8 | 2017-03-07 12:29:00 +0100 | [diff] [blame] | 3 |  | 
| Filip Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 4 | def gerritCredentials | 
 | 5 | try { | 
 | 6 |     gerritCredentials = CREDENTIALS_ID | 
 | 7 | } catch (MissingPropertyException e) { | 
 | 8 |     gerritCredentials = "gerrit" | 
 | 9 | } | 
 | 10 |  | 
| Jakub Josef | 4612c5d | 2017-03-30 16:04:26 +0200 | [diff] [blame] | 11 | def gerritRef | 
 | 12 | try { | 
 | 13 |   gerritRef = GERRIT_REFSPEC | 
 | 14 | } catch (MissingPropertyException e) { | 
 | 15 |   gerritRef = null | 
 | 16 | } | 
 | 17 |  | 
 | 18 | def defaultGitRef, defaultGitUrl | 
 | 19 | try { | 
 | 20 |     defaultGitRef = DEFAULT_GIT_REF | 
 | 21 |     defaultGitUrl = DEFAULT_GIT_URL | 
 | 22 | } catch (MissingPropertyException e) { | 
 | 23 |     defaultGitRef = null | 
 | 24 |     defaultGitUrl = null | 
 | 25 | } | 
 | 26 | def checkouted = false | 
| Jakub Josef | fcb615e | 2017-04-10 14:34:40 +0200 | [diff] [blame^] | 27 | def merged = false | 
| Filip Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 28 | try { | 
 | 29 |   stage("Checkout") { | 
 | 30 |     node() { | 
| Jakub Josef | 4612c5d | 2017-03-30 16:04:26 +0200 | [diff] [blame] | 31 |       if (gerritRef) { | 
 | 32 |         // job is triggered by Gerrit | 
| Jakub Josef | fcb615e | 2017-04-10 14:34:40 +0200 | [diff] [blame^] | 33 |         // 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 Josef | 4612c5d | 2017-03-30 16:04:26 +0200 | [diff] [blame] | 41 |         // change defaultGit variables if job triggered from Gerrit | 
| Jakub Josef | 6332677 | 2017-03-30 16:38:11 +0200 | [diff] [blame] | 42 |         defaultGitUrl = "${GERRIT_SCHEME}://${GERRIT_NAME}@${GERRIT_HOST}:${GERRIT_PORT}/${GERRIT_PROJECT}" | 
| Jakub Josef | 4612c5d | 2017-03-30 16:04:26 +0200 | [diff] [blame] | 43 |       } else if(defaultGitRef && defaultGitUrl) { | 
 | 44 |           checkouted = gerrit.gerritPatchsetCheckout(defaultGitUrl, defaultGitRef, "HEAD", gerritCredentials) | 
 | 45 |       } | 
| Filip Pytloun | 840a084 | 2017-03-07 13:54:23 +0100 | [diff] [blame] | 46 |     } | 
| Filip Pytloun | 19376a8 | 2017-03-07 12:29:00 +0100 | [diff] [blame] | 47 |   } | 
| Filip Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 48 |  | 
 | 49 |   stage("Test") { | 
| Jakub Josef | fcb615e | 2017-04-10 14:34:40 +0200 | [diff] [blame^] | 50 |     if(merged){ | 
 | 51 |       common.successMsg("Gerrit change is already merged, no need to test them") | 
| Jakub Josef | 4612c5d | 2017-03-30 16:04:26 +0200 | [diff] [blame] | 52 |     }else{ | 
| Jakub Josef | fcb615e | 2017-04-10 14:34:40 +0200 | [diff] [blame^] | 53 |       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 Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 70 |     } | 
| Filip Pytloun | fcce97c | 2017-03-07 14:06:07 +0100 | [diff] [blame] | 71 |   } | 
 | 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 Pytloun | 19376a8 | 2017-03-07 12:29:00 +0100 | [diff] [blame] | 78 | } |