Fixes to the global presubmit

  - Exclude pipeline from the list of downstream job,
    else we trigger it on the global presubmit.
  - Correctly calls job from the Global folder,
    instead of calling top level jobs.
  - Avoid incorrect serialization of the job report.

Change-Id: I641d0c596a0a7d2ef53cb2e4cb7fc8951b51b9e1
diff --git a/jenkins/jobs/global.groovy b/jenkins/jobs/global.groovy
index 7466e69..ff82eb4 100644
--- a/jenkins/jobs/global.groovy
+++ b/jenkins/jobs/global.groovy
@@ -99,7 +99,8 @@
            [$class: 'StringParameterValue',
             name: 'REFSPEC',
             value: "${params.REFSPEC}"]
-         ])
+         ],
+         excludes: ["pipeline", currentBuild.getProjectName()])
 }
 
 stage("Publish report") {
diff --git a/jenkins/lib/vars/reportAB.groovy b/jenkins/lib/vars/reportAB.groovy
index 1476e0a..084c33e 100644
--- a/jenkins/lib/vars/reportAB.groovy
+++ b/jenkins/lib/vars/reportAB.groovy
@@ -53,9 +53,9 @@
 }
 
 def call(args = [:]) {
-  def name = args.name
-  def jobs = collectJobs(args.report, args.get("beforeFolder", ""))
   node {
+    def name = args.name
+    def jobs = collectJobs(args.report, args.get("beforeFolder", ""))
     writeFile file: (".report/${name}.html"), text: """
 <html>
 <h2>Newly failing jobs</h2>
@@ -74,9 +74,9 @@
       reportFiles: "${name}.html",
       reportName: name
     ]
-  }
 
-  if (args.get("unstableOnNewFailure", true) && !jobs.failures.empty) {
-    currentBuild.result = "UNSTABLE"
+    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 45c38a8..5413817 100644
--- a/jenkins/lib/vars/runAll.groovy
+++ b/jenkins/lib/vars/runAll.groovy
@@ -30,7 +30,10 @@
     if (!(jobName in excludes)) {
       toRun[jobName] = { ->
         try {
-          r = build(job: jobName, parameters: parameters, wait: wait, propagate: false)
+          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") {