Rebuild and re-test everything uncached when upgrading Bazel

Bazel version bump should trigger a complete revalidation of
everything without having to rely on local or remote caches.

Also reset BAZEL_OPTS to prevent the use of remote cache
enabled at project-level definition.

Change-Id: If3605b5bd6b3cc0b4d82b0ba55c46eb743d4c064
diff --git a/jenkins/gerrit-bazel-build.sh b/jenkins/gerrit-bazel-build.sh
index 6c933d1..3a2ef97 100644
--- a/jenkins/gerrit-bazel-build.sh
+++ b/jenkins/gerrit-bazel-build.sh
@@ -4,6 +4,11 @@
 
 cd gerrit
 
+if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+then
+  export BAZEL_OPTS=""
+fi
+
 export BAZEL_OPTS="$BAZEL_OPTS --spawn_strategy=standalone --genrule_strategy=standalone"
 
 java -fullversion
diff --git a/jenkins/gerrit-bazel-cleancache.sh b/jenkins/gerrit-bazel-cleancache.sh
new file mode 100644
index 0000000..59d8fb6
--- /dev/null
+++ b/jenkins/gerrit-bazel-cleancache.sh
@@ -0,0 +1,7 @@
+#!/bin/bash -e
+
+if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+then
+  echo "Bazel version upgrade to $(cat .bazelversion) detected => cleaning up all local Bazel caches"
+  rm -Rf ~/.gerritcodereview ~/.cache
+fi
diff --git a/jenkins/gerrit-bazel-test.sh b/jenkins/gerrit-bazel-test.sh
index e413081..897228d 100755
--- a/jenkins/gerrit-bazel-test.sh
+++ b/jenkins/gerrit-bazel-test.sh
@@ -4,6 +4,11 @@
 
 cd gerrit
 
+if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+then
+  export BAZEL_OPTS=""
+fi
+
 TEST_TAG_FILTERS="-flaky"
 if [ "{branch}" == "stable-2.16" ]
 then
diff --git a/jenkins/gerrit-codestyle-polygerrit-lint.sh b/jenkins/gerrit-codestyle-polygerrit-lint.sh
index 6cb2eec..377682e 100644
--- a/jenkins/gerrit-codestyle-polygerrit-lint.sh
+++ b/jenkins/gerrit-codestyle-polygerrit-lint.sh
@@ -2,13 +2,19 @@
 
 . set-java.sh 8
 
+if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+then
+  export BAZEL_OPTS=""
+fi
+
 cd gerrit
 bazelisk version
 if ([ "$TARGET_BRANCH" == "master" ] || \
     [ "$TARGET_BRANCH" == "stable-3.3" ] || \
     [ "$TARGET_BRANCH" == "stable-3.2" ]) && \
-   ((git show --diff-filter=AM --name-only --pretty="" HEAD | grep polygerrit-ui) || \
-    (git show --summary HEAD | grep -q ^Merge:))
+   ((git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q polygerrit-ui) || \
+    (git show --summary HEAD | grep -q ^Merge:) || \
+    (git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion))
 then
   echo 'Running PolyGerrit lint check...'
   java -fullversion
diff --git a/jenkins/gerrit-verifier.yaml b/jenkins/gerrit-verifier.yaml
index 5039ad6..150738c 100644
--- a/jenkins/gerrit-verifier.yaml
+++ b/jenkins/gerrit-verifier.yaml
@@ -119,6 +119,7 @@
       - set-git-credentials
       - merge-target-branch
       - fetch-all-submodules
+      - shell: !include-raw-escape: gerrit-bazel-cleancache.sh
       - shell: !include-raw-escape: gerrit-bazel-build.sh
       - shell: !include-raw-escape: set-docker-host.sh
       - shell: !include-raw-escape: gerrit-bazel-verifier-test.sh
@@ -140,6 +141,7 @@
       - set-git-credentials
       - merge-target-branch
       - fetch-all-submodules
+      - shell: !include-raw-escape: gerrit-bazel-cleancache.sh
       - shell: !include-raw-escape: gerrit-bazel-build.sh
       - shell: !include-raw-escape: set-docker-host.sh
       - shell: !include-raw-escape: gerrit-bazel-verifier-test.sh
@@ -168,6 +170,7 @@
       - set-git-credentials
       - merge-target-branch
       - fetch-all-submodules
+      - shell: !include-raw-escape: gerrit-bazel-cleancache.sh
       - shell: !include-raw-escape: gerrit-codestyle-gjf.sh
       - shell: !include-raw-escape: gerrit-codestyle-polygerrit-lint.sh
       - shell: !include-raw-escape: gerrit-codestyle-buildifier.sh
diff --git a/vars/gerritPipeline.groovy b/vars/gerritPipeline.groovy
index 683e31e..6f25cd5 100644
--- a/vars/gerritPipeline.groovy
+++ b/vars/gerritPipeline.groovy
@@ -145,7 +145,7 @@
     def polygerritFiles = changedFiles.findAll { it.startsWith("polygerrit-ui") ||
         it.startsWith("lib/js") }
     def bazelFiles = changedFiles.findAll { it == "WORKSPACE" || it.endsWith("BUILD") ||
-        it.endsWith(".bzl") }
+        it.endsWith(".bzl") || it == ".bazelversion" }
     if(isMerge) {
         println "Merge commit detected, adding 'polygerrit' validation..."
         Builds.modes += "polygerrit"
@@ -158,7 +158,7 @@
             Builds.modes += "polygerrit"
         }
     } else if(!bazelFiles.isEmpty()) {
-        println "WORKSPACE file changes detected, adding 'polygerrit' validation..."
+        println "Bazel files changes detected, adding 'polygerrit' validation..."
         Builds.modes += "polygerrit"
     }
 }