Build Buck and/or Bazel depending on BUCK/BUILD files

Bug: Issue 5306
Change-Id: I5a5044cb48dfd417911e9f667a42ae84826f66e5
diff --git a/jenkins/gerrit-verifier-change.groovy b/jenkins/gerrit-verifier-change.groovy
index e2b6ec1..16d51b3 100644
--- a/jenkins/gerrit-verifier-change.groovy
+++ b/jenkins/gerrit-verifier-change.groovy
@@ -156,11 +156,44 @@
   def branch = change.branch
   def changeUrl = Globals.gerrit + "#/c/" + changeNum + "/" + patchNum
   def refspec = "+" + ref + ":" + ref.replaceAll('ref/', 'ref/remotes/origin/')
-  def tools = ["buck"]
+  def tools = []
   def modes = ["reviewdb"]
+  def workspace = build.environment.get("WORKSPACE")
+  println "workspace: $workspace"
+  def cwd = new File("$workspace")
+  println "cwd: $cwd"
+  println "ref: $ref"
 
   if(branch == "master") {
-    tools += ["bazel"]
+    def sout = new StringBuilder(), serr = new StringBuilder()
+    def fetchCmd = "git fetch origin $ref"
+    println "CMD: $fetchCmd"
+    def fetch = fetchCmd.execute([],cwd)
+    fetch.consumeProcessOutput(sout, serr)
+    fetch.waitForOrKill(30000)
+    println "OUT: $sout"
+    println "ERR: $serr"
+
+    def coCmd = "git checkout FETCH_HEAD"
+    println "CMD: $coCmd"
+    def co = coCmd.execute([],cwd)
+    sout = new StringBuilder()
+    serr = new StringBuilder()
+    co.consumeProcessOutput(sout, serr)
+    co.waitForOrKill(30000)
+    println "OUT: $sout"
+    println "ERR: $serr"
+
+    if(new java.io.File("$cwd/BUCK").exists()) {
+      tools += ["buck"]
+    }
+
+    if(new java.io.File("$cwd/BUILD").exists()) {
+      tools += ["bazel"]
+    }
+  }
+  else {
+    tools += ["buck"]
   }
 
   println "Building Change " + changeUrl
diff --git a/jenkins/gerrit-verifier.yaml b/jenkins/gerrit-verifier.yaml
index 8ab2c0f..c68944d 100644
--- a/jenkins/gerrit-verifier.yaml
+++ b/jenkins/gerrit-verifier.yaml
@@ -152,15 +152,27 @@
     name: 'Gerrit-verifier-change'
     project-type: flow
     concurrent: true
+    needs-workspace: true
     parameters:
       - string:
           name: CHANGE_ID
           description: Gerrit Change-ID to build and verify
+    scm:
+      - git:
+         url: https://gerrit.googlesource.com/gerrit
+         branches:
+           - "*/master"
+         submodule:
+           disable: true
+         skip-tag: true
     dsl:
        !include-raw: gerrit-verifier-change.groovy
     properties:
       - build-discarder:
            days-to-keep: 7
+      - inject:
+           keep-build-variables: true
+           keep-system-variables: true
 
 - job:
     name: 'Gerrit-verifier-flow'