runAll: do not set global status, instead report individually

Setting the global status completely hides where the cause was.
However, for our use, we the main information is which downstream
project had problems, the difference between failure (as in "fails
to build") and unstable ("builds, but tests fail") is only secondary.
So, use the pipelines in a more standard way let individual jobs
report their individual failures---while still cathching the errors
and continuing with the final reporting step.

Change-Id: I8db14e81bcb33d5f902b16257748f38d44b09d39
diff --git a/jenkins/lib/vars/reportAB.groovy b/jenkins/lib/vars/reportAB.groovy
index 084c33e..4d3ed52 100644
--- a/jenkins/lib/vars/reportAB.groovy
+++ b/jenkins/lib/vars/reportAB.groovy
@@ -75,8 +75,5 @@
       reportName: name
     ]
 
-    if (args.get("unstableOnNewFailure", true) && !jobs.failures.empty) {
-      currentBuild.result = "UNSTABLE"
-    }
   }
 }
diff --git a/jenkins/lib/vars/runAll.groovy b/jenkins/lib/vars/runAll.groovy
index 5413817..bc76fb5 100644
--- a/jenkins/lib/vars/runAll.groovy
+++ b/jenkins/lib/vars/runAll.groovy
@@ -19,9 +19,6 @@
   def parameters = params.get("parameters", [])
   def wait = params.get("wait", true)
   def catchError = params.get("catchError", false)
-  def statusOnError = params.get("statusOnError", "FAILURE")
-  def statusOnFailure = params.get("statusOnFailure", "SUCCESS")
-  def statusOnUnstable = params.get("statusOnUnstable", "SUCCESS")
   def jobs = JenkinsUtils.jobs(folder).toArray()
   def toRun = [:]
   def report = [:]
@@ -29,30 +26,24 @@
     def jobName = jobs[k]
     if (!(jobName in excludes)) {
       toRun[jobName] = { ->
-        try {
           r = build(job: folder ? "/${folder}/${jobName}" : jobName,
                     parameters: parameters,
                     wait: wait,
                     propagate: false)
-          if (r.result == "FAILURE") {
-            currentBuild.result = statusOnFailure
-          } else if (r.result == "UNSTABLE") {
-            currentBuild.result = statusOnUnstable
-          }
           report.put(jobName, r)
-        } catch(error) {
-          if (catchError) {
-            echo "Catched ${error} from upstream job ${jobName}"
-            currentBuild.result = statusOnError
-          } else {
-            throw error
+          if (r.result == "FAILURE" || r.result == "UNSTABLE"
+	      || r.result == "ABORTED") {
+            throw new Exception("Failed on " + jobName + ": " + r.result);
           }
         }
-      }
     }
   }
   jobs = null
-  parallel(toRun)
+  try {
+    parallel(toRun)
+  } catch(Exception e) {
+    // back to normal execution, to have the report available
+  }
 
   return report
 }