Added WIP detecting in commit messages for salt formulas and models

Change-Id: I2032ed19f46ffcedd0a66e7e15a6027e0e012555
diff --git a/test-salt-formulas-pipeline.groovy b/test-salt-formulas-pipeline.groovy
index d088030..c3a2e51 100644
--- a/test-salt-formulas-pipeline.groovy
+++ b/test-salt-formulas-pipeline.groovy
@@ -25,7 +25,7 @@
     defaultGitUrl = null
 }
 
-def checkouted = false;
+def checkouted = false
 
 node("python") {
   try{
@@ -41,73 +41,79 @@
     stage("checkout") {
       if (gerritRef) {
         // job is triggered by Gerrit
-        // test if change aren't already merged
         def gerritChange = gerrit.getGerritChange(GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, CREDENTIALS_ID)
-        def merged = gerritChange.status == "MERGED"
-        if(!merged){
-          checkouted = gerrit.gerritPatchsetCheckout ([
-            credentialsId : CREDENTIALS_ID
-          ])
-        } else{
-          common.successMsg("Change ${GERRIT_CHANGE_NUMBER} is already merged, no need to test them")
+        // test WIP contains in commit message
+        if(gerritChange.commitMessage.contains("WIP")){
+          common.successMsg("Commit message contains WIP, skipping tests") // do nothing
+        }else{
+          // test if change aren't already merged
+          def merged = gerritChange.status == "MERGED"
+          if(!merged){
+            checkouted = gerrit.gerritPatchsetCheckout ([
+              credentialsId : CREDENTIALS_ID
+            ])
+          } else{
+            common.successMsg("Change ${GERRIT_CHANGE_NUMBER} is already merged, no need to test them")
+          }
         }
       } else if(defaultGitRef && defaultGitUrl) {
           checkouted = gerrit.gerritPatchsetCheckout(defaultGitUrl, defaultGitRef, "HEAD", CREDENTIALS_ID)
-      }
-      if(!checkouted){
+      } else {
         throw new Exception("Cannot checkout gerrit patchset, GERRIT_REFSPEC and DEFAULT_GIT_REF is null")
       }
     }
     stage("test") {
       if(checkouted){
-        wrap([$class: 'AnsiColorBuildWrapper']) {
-          sh("make clean")
-          sh("[ $SALT_VERSION != 'latest' ] || export SALT_VERSION=''; make test")
+          wrap([$class: 'AnsiColorBuildWrapper']) {
+            sh("make clean")
+            sh("[ $SALT_VERSION != 'latest' ] || export SALT_VERSION=''; make test")
         }
       }
     }
     stage("kitchen") {
-      if (fileExists(".kitchen.yml")) {
-        common.infoMsg(".kitchen.yml found, running kitchen tests")
-        ruby.ensureRubyEnv()
-        def kitchenEnvs = []
-        if(fileExists(".travis.yml")){
-          common.infoMsg(".travis.yml found, running custom kitchen init")
-          def kitchenConfigYML = readYaml(file: ".travis.yml")
-          kitchenEnvs=kitchenConfigYML["env"]
-          def kitchenInit = kitchenConfigYML["install"]
-          def kitchenInstalled = false
-          if(kitchenInit && !kitchenInit.isEmpty()){
-            for(int i=0;i<kitchenInit.size();i++){
-              if(kitchenInit[i].trim().startsWith("test -e Gemfile")){ //found Gemfile config
-                common.infoMsg("Custom Gemfile configuration found, using them")
-                ruby.installKitchen(kitchenInit[i].trim())
-                kitchenInstalled = true
+      if(checkouted){
+        if (fileExists(".kitchen.yml")) {
+          common.infoMsg(".kitchen.yml found, running kitchen tests")
+          ruby.ensureRubyEnv()
+          def kitchenEnvs = []
+          if(fileExists(".travis.yml")){
+            common.infoMsg(".travis.yml found, running custom kitchen init")
+            def kitchenConfigYML = readYaml(file: ".travis.yml")
+            kitchenEnvs=kitchenConfigYML["env"]
+            def kitchenInit = kitchenConfigYML["install"]
+            def kitchenInstalled = false
+            if(kitchenInit && !kitchenInit.isEmpty()){
+              for(int i=0;i<kitchenInit.size();i++){
+                if(kitchenInit[i].trim().startsWith("test -e Gemfile")){ //found Gemfile config
+                  common.infoMsg("Custom Gemfile configuration found, using them")
+                  ruby.installKitchen(kitchenInit[i].trim())
+                  kitchenInstalled = true
+                }
               }
             }
-          }
-          if(!kitchenInstalled){
-            ruby.installKitchen()
-          }
-        }else{
-          common.infoMsg(".travis.yml not found, running default kitchen init")
-          ruby.installKitchen()
-        }
-        common.infoMsg("Running kitchen testing, parallel mode: " + KITCHEN_TESTS_PARALLEL.toBoolean())
-        wrap([$class: 'AnsiColorBuildWrapper']) {
-          if(kitchenEnvs && !kitchenEnvs.isEmpty()){
-            common.infoMsg("Found multiple environment, first running kitchen without custom env")
-            ruby.runKitchenTests("", KITCHEN_TESTS_PARALLEL.toBoolean())
-            for(int i=0;i<kitchenEnvs.size();i++){
-              common.infoMsg("Found multiple environment, kitchen running with env: " + kitchenEnvs[i])
-              ruby.runKitchenTests(kitchenEnvs[i], KITCHEN_TESTS_PARALLEL.toBoolean())
+            if(!kitchenInstalled){
+              ruby.installKitchen()
             }
           }else{
-            ruby.runKitchenTests("", KITCHEN_TESTS_PARALLEL.toBoolean())
+            common.infoMsg(".travis.yml not found, running default kitchen init")
+            ruby.installKitchen()
           }
+          common.infoMsg("Running kitchen testing, parallel mode: " + KITCHEN_TESTS_PARALLEL.toBoolean())
+          wrap([$class: 'AnsiColorBuildWrapper']) {
+            if(kitchenEnvs && !kitchenEnvs.isEmpty()){
+              common.infoMsg("Found multiple environment, first running kitchen without custom env")
+              ruby.runKitchenTests("", KITCHEN_TESTS_PARALLEL.toBoolean())
+              for(int i=0;i<kitchenEnvs.size();i++){
+                common.infoMsg("Found multiple environment, kitchen running with env: " + kitchenEnvs[i])
+                ruby.runKitchenTests(kitchenEnvs[i], KITCHEN_TESTS_PARALLEL.toBoolean())
+              }
+            }else{
+              ruby.runKitchenTests("", KITCHEN_TESTS_PARALLEL.toBoolean())
+            }
+          }
+        } else {
+          common.infoMsg(".kitchen.yml not found")
         }
-      } else {
-        common.infoMsg(".kitchen.yml not found")
       }
     }
   } catch (Throwable e) {
diff --git a/test-salt-models-pipeline.groovy b/test-salt-models-pipeline.groovy
index fe08e75..c6f1a71 100644
--- a/test-salt-models-pipeline.groovy
+++ b/test-salt-models-pipeline.groovy
@@ -29,7 +29,6 @@
     defaultGitUrl = null
 }
 def checkouted = false
-def merged = false
 node("python") {
   try{
     stage("stop old tests"){
@@ -46,18 +45,25 @@
         // job is triggered by Gerrit
         // test if change aren't already merged
         def gerritChange = gerrit.getGerritChange(GERRIT_NAME, GERRIT_HOST, GERRIT_CHANGE_NUMBER, CREDENTIALS_ID)
-        merged = gerritChange.status == "MERGED"
-        if(!merged){
-          checkouted = gerrit.gerritPatchsetCheckout ([
-            credentialsId : CREDENTIALS_ID
-          ])
-        } else{
-          common.successMsg("Change ${GERRIT_CHANGE_NUMBER} is already merged, no need to test them")
+        // test WIP contains in commit message
+        if (gerritChange.commitMessage.contains("WIP")) {
+          common.successMsg("Commit message contains WIP, skipping tests") // do nothing
+        } else {
+          def merged = gerritChange.status == "MERGED"
+          if(!merged){
+            checkouted = gerrit.gerritPatchsetCheckout ([
+              credentialsId : CREDENTIALS_ID
+            ])
+          } else{
+            common.successMsg("Change ${GERRIT_CHANGE_NUMBER} is already merged, no need to test them")
+          }
         }
       } else if(defaultGitRef && defaultGitUrl) {
           checkouted = gerrit.gerritPatchsetCheckout(defaultGitUrl, defaultGitRef, "HEAD", CREDENTIALS_ID)
+      } else {
+        throw new Exception("Cannot checkout gerrit patchset, GERRIT_REFSPEC and DEFAULT_GIT_REF is null")
       }
-      if(checkouted){
+      if(checkouted) {
         if (fileExists('classes/system')) {
           ssh.prepareSshAgentKey(CREDENTIALS_ID)
           dir('classes/system') {
@@ -66,13 +72,11 @@
           }
           ssh.agentSh("git submodule init; git submodule sync; git submodule update --recursive")
         }
-      }else if(!merged){
-        throw new Exception("Cannot checkout gerrit patchset, GERRIT_REFSPEC and DEFAULT_GIT_REF is null")
       }
     }
 
     stage("test-nodes") {
-      if(!merged){
+      if(checkouted) {
         def workspace = common.getWorkspace()
         def nodes = sh(script: "find ./nodes -type f -name 'cfg*.yml'", returnStdout: true).tokenize()
         def buildSteps = [:]
@@ -104,7 +108,7 @@
   def jenkinsUtils = new com.mirantis.mk.JenkinsUtils()
   def triggeredBuilds= gerrit.getGerritTriggeredBuilds(jenkinsUtils.getJobRunningBuilds(jobName), gerritChangeNumber, excludePatchsetNumber)
   def buildNums =[]
-  for(int i=0;i<triggeredBuilds.size();i++){
+  for (int i=0; i<triggeredBuilds.size(); i++) {
       buildNums.add(triggeredBuilds[i].number)
   }
   return buildNums