diff --git a/jenkins-docker/bazel-cache/Makefile b/jenkins-docker/bazel-cache/Makefile
index 2623506..8fb4d04 100644
--- a/jenkins-docker/bazel-cache/Makefile
+++ b/jenkins-docker/bazel-cache/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE=false
-IMAGE=gerritforge/bazel-cache
+PREFIX=gerritforge
+IMAGE=${PREFIX}/bazel-cache
 CACHE_ALLOW=0.0.0.0/0
 
 # Targets
diff --git a/jenkins-docker/master/Dockerfile b/jenkins-docker/master/Dockerfile
index 9563800..628067e 100644
--- a/jenkins-docker/master/Dockerfile
+++ b/jenkins-docker/master/Dockerfile
@@ -1,14 +1,8 @@
-FROM jenkins:latest
+FROM jenkins/jenkins:${JENKINS_WAR_VER}
 
 USER root
 
-ARG JENKINS_WAR_VER=2.204.1
-ARG JENKINS_WAR_SHA=924d2c9fabfdcacee1bae757337a07d7599eaa35
-
-# could use ADD but this one does not check Last-Modified header
-# see https://github.com/docker/docker/issues/8331
-RUN curl -fsSL http://repo.jenkins-ci.org/public/org/jenkins-ci/main/jenkins-war/${JENKINS_WAR_VER}/jenkins-war-${JENKINS_WAR_VER}.war -o /usr/share/jenkins/jenkins.war \
-  && echo "$JENKINS_WAR_SHA  /usr/share/jenkins/jenkins.war" | sha1sum -c -
+RUN echo "$JENKINS_WAR_SHA  /usr/share/jenkins/jenkins.war" | sha1sum -c -
 
 # Override Jenkins start-up script
 RUN mv /usr/local/bin/jenkins.sh /usr/local/bin/run-jenkins.sh
diff --git a/jenkins-docker/master/Makefile b/jenkins-docker/master/Makefile
index 413905b..b7157d3 100644
--- a/jenkins-docker/master/Makefile
+++ b/jenkins-docker/master/Makefile
@@ -53,9 +53,9 @@
 	chmod a+r id_rsa*
 
 build: id_rsa
+	 cat Dockerfile | JENKINS_WAR_VER=${JENKINS_WAR_VER} JENKINS_WAR_SHA=${JENKINS_WAR_SHA} envsubst \$$JENKINS_WAR_VER,\$$JENKINS_WAR_SHA > Dockerfile-subst
 	docker build --no-cache=$(NO_CACHE) \
-        --build-arg JENKINS_WAR_VER=${JENKINS_WAR_VER} \
-        --build-arg JENKINS_WAR_SHA=${JENKINS_WAR_SHA} -t ${IMAGE} .
+        -t ${IMAGE} -f Dockerfile-subst .
 
 publish:
 	docker push ${IMAGE}
@@ -76,4 +76,3 @@
           echo -e "\n${NAME} is *RUNNING*\n"
 
 .PHONY: clean image publish
-
diff --git a/jenkins-docker/master/config.xml b/jenkins-docker/master/config.xml
index da5e294..51ebc7a 100644
--- a/jenkins-docker/master/config.xml
+++ b/jenkins-docker/master/config.xml
@@ -74,14 +74,10 @@
           </retentionStrategy>
           <numExecutors>1</numExecutors>
           <dockerTemplateBase>
-            <image>gerritforge/gerrit-ci-slave-bazel-docker:debian-stretch-80.0.3987.149</image>
+            <image>gerritforge/gerrit-ci-slave-bazel-docker:debian-buster-80.0.3987.149</image>
             <dockerCommand></dockerCommand>
             <lxcConfString></lxcConfString>
             <hostname></hostname>
-            <dnsHosts>
-              <string>8.8.8.8</string>
-              <string>8.8.4.4</string>
-            </dnsHosts>
             <volumes>
               <string>/dev/urandom:/dev/random</string>
             </volumes>
@@ -115,14 +111,10 @@
           </retentionStrategy>
           <numExecutors>1</numExecutors>
           <dockerTemplateBase>
-            <image>gerritforge/gerrit-ci-slave-bazel-docker:debian-stretch-69.0.3497.92</image>
+            <image>gerritforge/gerrit-ci-slave-bazel-docker:debian-buster-69.0.3497.92</image>
             <dockerCommand></dockerCommand>
             <lxcConfString></lxcConfString>
             <hostname></hostname>
-            <dnsHosts>
-              <string>8.8.8.8</string>
-              <string>8.8.4.4</string>
-            </dnsHosts>
             <volumes>
               <string>/dev/urandom:/dev/random</string>
             </volumes>
@@ -236,10 +228,6 @@
             <dockerCommand></dockerCommand>
             <lxcConfString></lxcConfString>
             <hostname></hostname>
-            <dnsHosts>
-              <string>8.8.8.8</string>
-              <string>8.8.4.4</string>
-            </dnsHosts>
             <volumes>
               <string>/dev/urandom:/dev/random</string>
             </volumes>
@@ -283,10 +271,6 @@
             <dockerCommand></dockerCommand>
             <lxcConfString></lxcConfString>
             <hostname></hostname>
-            <dnsHosts>
-              <string>8.8.8.8</string>
-              <string>8.8.4.4</string>
-            </dnsHosts>
             <volumes>
               <string>/dev/urandom:/dev/random</string>
             </volumes>
diff --git a/jenkins-docker/slave-aws/Dockerfile b/jenkins-docker/slave-aws/Dockerfile
index 2a2c04d..b72e8dc 100644
--- a/jenkins-docker/slave-aws/Dockerfile
+++ b/jenkins-docker/slave-aws/Dockerfile
@@ -9,4 +9,4 @@
       $(lsb_release -cs) \
       stable" && \
     apt-get update && \
-    apt-get install -y docker-ce-cli
+    apt-get install -y docker-ce-cli jq
diff --git a/jenkins-docker/slave-aws/Makefile b/jenkins-docker/slave-aws/Makefile
index d3ddc63..3f4a84c 100644
--- a/jenkins-docker/slave-aws/Makefile
+++ b/jenkins-docker/slave-aws/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-aws
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-aws
 
 # Targets
 
diff --git a/jenkins-docker/slave-bazel-docker/Dockerfile b/jenkins-docker/slave-bazel-docker/Dockerfile
index 997fe2b..57c6e0c 100644
--- a/jenkins-docker/slave-bazel-docker/Dockerfile
+++ b/jenkins-docker/slave-bazel-docker/Dockerfile
@@ -7,3 +7,8 @@
       stable" && \
     apt-get update && \
     apt-get install -y docker-ce git-
+
+RUN curl -L \
+    "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
+    -o /usr/local/bin/docker-compose && \
+    chmod +x /usr/local/bin/docker-compose
diff --git a/jenkins-docker/slave-bazel-docker/Makefile b/jenkins-docker/slave-bazel-docker/Makefile
index e2ee20e..ab3bc4d 100644
--- a/jenkins-docker/slave-bazel-docker/Makefile
+++ b/jenkins-docker/slave-bazel-docker/Makefile
@@ -1,7 +1,8 @@
 include ../chrome-vers.mk
 
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-bazel-docker:debian-buster
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-bazel-docker:debian-buster
 
 # Targets
 
diff --git a/jenkins-docker/slave-bazel-nocache/Dockerfile b/jenkins-docker/slave-bazel-nocache/Dockerfile
index de5b558..99ee474 100644
--- a/jenkins-docker/slave-bazel-nocache/Dockerfile
+++ b/jenkins-docker/slave-bazel-nocache/Dockerfile
@@ -12,23 +12,16 @@
     bash -c 'bazel version'
 
 # Install Buildifier
-RUN cd /tmp && \
-    bash -c 'git clone https://github.com/bazelbuild/buildtools.git && \
-    cd buildtools && \
-    git checkout ${BUILDIFIER_VER} && \
-    bazel build --config=release //buildifier && \
-    cp bazel-bin/buildifier/linux_amd64_stripped/buildifier /usr/bin && \
-    rm -rf /tmp/buildtools && \
-    buildifier --version'
+RUN wget -O /tmp/buildifier-${BUILDIFIER_VER}-linux-amd64 https://github.com/bazelbuild/buildtools/releases/download/${BUILDIFIER_VER}/buildifier-linux-amd64 && \
+    chmod a+x /tmp/buildifier-${BUILDIFIER_VER}-linux-amd64 && \
+    cp /tmp/buildifier-${BUILDIFIER_VER}-linux-amd64 /usr/bin/buildifier && \
+    rm -rf /tmp/buildifier-${BUILDIFIER_VER}-linux-amd64 && \
+    buildifier --version
 
 # Install Bazelisk
-RUN cd /tmp && \
-    git clone https://github.com/bazelbuild/bazelisk.git && \
-    cd bazelisk && \
-    git checkout v${BAZELISK_VER} && \
-    rm -f .bazelversion && \
-    bazel build --stamp --workspace_status_command=`pwd`/stamp.sh --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 //:bazelisk && \
-    cp bazel-bin/linux_amd64_pure_stripped/bazelisk /usr/bin && \
-    rm -rf /tmp/bazelisk
+RUN wget -O /tmp/bazelisk-${BAZELISK_VER}-linux-amd64 https://github.com/bazelbuild/bazelisk/releases/download/v${BAZELISK_VER}/bazelisk-linux-amd64 && \
+    chmod a+x /tmp/bazelisk-${BAZELISK_VER}-linux-amd64 && \
+    cp /tmp/bazelisk-${BAZELISK_VER}-linux-amd64 /usr/bin/bazelisk && \
+    rm -rf /tmp/bazelisk-${BAZELISK_VER}-linux-amd64
 
 USER root
diff --git a/jenkins-docker/slave-bazel-nocache/Makefile b/jenkins-docker/slave-bazel-nocache/Makefile
index 30b09f3..5e37d47 100644
--- a/jenkins-docker/slave-bazel-nocache/Makefile
+++ b/jenkins-docker/slave-bazel-nocache/Makefile
@@ -1,9 +1,10 @@
 include ../chrome-vers.mk
 
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-bazel:debian-buster-nocache
-BAZEL_VER=3.7.0
-BUILDIFIER_VER=3.5.0
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-bazel:debian-buster-nocache
+BAZEL_VER=4.0.0
+BUILDIFIER_VER=4.0.0
 BAZELISK_VER=1.7.4
 NODE_VER=10
 WCT_VER=6.8.0
diff --git a/jenkins-docker/slave-bazel/Makefile b/jenkins-docker/slave-bazel/Makefile
index db0d52f..0da3add 100644
--- a/jenkins-docker/slave-bazel/Makefile
+++ b/jenkins-docker/slave-bazel/Makefile
@@ -1,7 +1,8 @@
 include ../chrome-vers.mk
 
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-bazel:debian-buster
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-bazel:debian-buster
 
 # Targets
 
diff --git a/jenkins-docker/slave-chrome/Makefile b/jenkins-docker/slave-chrome/Makefile
index 127fcb3..e31e9e4 100644
--- a/jenkins-docker/slave-chrome/Makefile
+++ b/jenkins-docker/slave-chrome/Makefile
@@ -2,7 +2,8 @@
 
 NO_CACHE ?= false
 DEBIAN_VER ?= buster
-IMAGE=gerritforge/gerrit-ci-slave-chrome:$(DEBIAN_VER)
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-chrome:$(DEBIAN_VER)
 
 build: Makefile Dockerfile
 	@for chrome_ver in $(CHROME_VERS); \
diff --git a/jenkins-docker/slave-debian/Dockerfile b/jenkins-docker/slave-debian/Dockerfile
index 51ac131..a85bb6e 100644
--- a/jenkins-docker/slave-debian/Dockerfile
+++ b/jenkins-docker/slave-debian/Dockerfile
@@ -17,6 +17,7 @@
     python-pip \
     python-yaml \
     python-jenkinsapi \
+    python3-distutils \
     ant \
     autoconf \
     automake \
@@ -71,10 +72,10 @@
 RUN apt-get update && apt-get install -y lib32stdc++6 lib32z1
 
 # Install OpenJDK 8 for legacy stable Gerrit versions builds, releases and E2E tests
-# TODO: to be removed when Gerrit v3.2 will be EOL
+# TODO: to be removed when Gerrit v3.4 will be EOL
 RUN wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add - && \
     add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ && \
-    apt-get update && apt-get install adoptopenjdk-8-hotspot && \
+    apt-get update && apt-get install -y adoptopenjdk-8-hotspot && \
     ln -sf /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64 /usr/lib/jvm/java-8-openjdk-amd64 && \
     ln -sf /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java /etc/alternatives/java
 
diff --git a/jenkins-docker/slave-debian/Makefile b/jenkins-docker/slave-debian/Makefile
index d89181d..3089f42 100644
--- a/jenkins-docker/slave-debian/Makefile
+++ b/jenkins-docker/slave-debian/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE ?= false
-IMAGE=gerritforge/gerrit-ci-slave-debian
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-debian
 MAVEN_VER=3.6.3
 GIT_VER=2.26.2
 DEBIAN_VER=buster
diff --git a/jenkins-docker/slave-jekyll/Makefile b/jenkins-docker/slave-jekyll/Makefile
index e1948e3..7089017 100644
--- a/jenkins-docker/slave-jekyll/Makefile
+++ b/jenkins-docker/slave-jekyll/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE ?= false
-IMAGE=gerritforge/gerrit-ci-slave-jekyll
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-jekyll
 
 build:  Dockerfile Makefile
 	docker build --no-cache=$(NO_CACHE) -f Dockerfile -t $(IMAGE) .
diff --git a/jenkins-docker/slave-mvn/Makefile b/jenkins-docker/slave-mvn/Makefile
index 03fc47b..217c2c3 100644
--- a/jenkins-docker/slave-mvn/Makefile
+++ b/jenkins-docker/slave-mvn/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-mvn
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-mvn
 
 # Targets
 
diff --git a/jenkins-docker/slave-node-wct/Dockerfile b/jenkins-docker/slave-node-wct/Dockerfile
index 4f755d8..b5274f9 100644
--- a/jenkins-docker/slave-node-wct/Dockerfile
+++ b/jenkins-docker/slave-node-wct/Dockerfile
@@ -18,5 +18,6 @@
       eslint-plugin-promise@"=4.0.1" \
       typescript \
       fried-twinkie@"^0.2.2" \
-      polylint polymer-cli
+      polylint polymer-cli \
+      @babel/runtime@"^7.13.9"
 RUN npm install --unsafe-perm -g 'web-component-tester@$WCT_VER'
diff --git a/jenkins-docker/slave-node-wct/Makefile b/jenkins-docker/slave-node-wct/Makefile
index 2fff934..46d3e91 100644
--- a/jenkins-docker/slave-node-wct/Makefile
+++ b/jenkins-docker/slave-node-wct/Makefile
@@ -3,7 +3,8 @@
 NO_CACHE ?= false
 NODE_VER ?= 10
 WCT_VER ?= 6.8.0
-IMAGE=gerritforge/gerrit-ci-slave-node-wct:$(NODE_VER)-$(WCT_VER)
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-node-wct:$(NODE_VER)-$(WCT_VER)
 
 build:  Dockerfile Makefile
 	@for chrome_ver in $(CHROME_VERS); \
diff --git a/jenkins-docker/slave-python3/Makefile b/jenkins-docker/slave-python3/Makefile
index 5a717ef..0bceabc 100644
--- a/jenkins-docker/slave-python3/Makefile
+++ b/jenkins-docker/slave-python3/Makefile
@@ -1,6 +1,7 @@
 NO_CACHE ?= false
 DEBIAN_VER ?= buster
-IMAGE=gerritforge/gerrit-ci-slave-python3:$(DEBIAN_VER)
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-python3:$(DEBIAN_VER)
 
 build:  Dockerfile Makefile
 	cat Dockerfile | DEBIAN_VER=$(DEBIAN_VER) envsubst > Dockerfile-$(DEBIAN_VER)
diff --git a/jenkins-docker/slave-release/Dockerfile b/jenkins-docker/slave-release/Dockerfile
index 2eb3e65..152e63e 100644
--- a/jenkins-docker/slave-release/Dockerfile
+++ b/jenkins-docker/slave-release/Dockerfile
@@ -10,6 +10,10 @@
 
 COPY gerrit-release.sh /usr/local/bin
 
-ENTRYPOINT /bin/bash
+ENTRYPOINT [ "/usr/local/bin/gerrit-release.sh" ]
+
+CMD [ "--help" ]
 
 USER jenkins
+
+WORKDIR /home/jenkins
diff --git a/jenkins-docker/slave-release/Makefile b/jenkins-docker/slave-release/Makefile
index 42dd7e4..2d0a20b 100644
--- a/jenkins-docker/slave-release/Makefile
+++ b/jenkins-docker/slave-release/Makefile
@@ -1,24 +1,53 @@
 NO_CACHE=true
-IMAGE=gerritforge/gerrit-ci-slave-bazel:debian-buster-nocache-80.0.3987.149
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-release-bazel:debian-buster
 CONTAINER=release
 
-build:
+######################################################
+# Customize the parameters below for running a release
+######################################################
+
+# Branch from where the release will be cut
+BRANCH=stable-3.3
+
+# Release number
+RELEASE=3.3.0
+
+# Next SNAPSHOT after the release
+SNAPSHOT=3.3.1-SNAPSHOT
+
+# Release manager's GNUPG keyring
+GNUPG=${HOME}/.gnupg
+
+# Release manager's local git config for authentication
+GIT_CONFIG=${HOME}/.gitconfig
+
+# Release manager's local git cookies file
+GIT_COOKIES=${HOME}/.gitcookies
+
+######################################################
+# Targets for building the image and making a release
+######################################################
+
+run:
+	docker run --rm -it --name ${CONTAINER} ${IMAGE} ${BRANCH} ${RELEASE} ${SNAPSHOT} \
+		-u jenkins \
+		-v `pwd`/.gerritcodereview:/home/jenkins/.gerritcodereview \
+		-v ${HOME}/.m2:/home/jenkins/.m2 \
+		-v ${GNUPG}:/home/jenkins/.gnupg \
+		-v ${GIT_CONFIG}:/home/jenkins/.gitconfig.template \
+		-v ${GIT_COOKIES}:/home/jenkins/.gitcookies
+
+pull:
+	docker pull gerritforge/gerrit-ci-slave-bazel:debian-buster-nocache-80.0.3987.149
+
+build: pull
 	docker build --no-cache=$(NO_CACHE) -t ${IMAGE} .
 
-# Dockerfile shows from where to manually execute the release script once in.
-# E.g.: /usr/local/bin/gerrit-release.sh stable-3.3 3.3.0-rc3 3.3.0-SNAPSHOT
-run:
-	docker run -it --name ${CONTAINER} ${IMAGE}
-
-rerun: clean-container run
-
-publish:
+publish: build
 	docker push ${IMAGE}
 
-clean-image:
+clean:
 	docker rmi -f ${IMAGE}
 
-clean-container:
-	docker rm -f ${CONTAINER}
-
-.PHONY: clean-image clean-container publish
+.PHONY: run pull build publish clean
diff --git a/jenkins-docker/slave-release/gerrit-release.sh b/jenkins-docker/slave-release/gerrit-release.sh
index 1a9fa7e..8c49e40 100755
--- a/jenkins-docker/slave-release/gerrit-release.sh
+++ b/jenkins-docker/slave-release/gerrit-release.sh
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 
-if [ "$1" == "" ] || [ "$2" == "" ]
+if [ "$1" == "--help" ] || [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ]
 then
   echo "Gerrit Code Review - release automation script"
   echo "----------------------------------------------"
@@ -23,7 +23,13 @@
   rm -Rf gerrit
 fi
 
+if [ -f $HOME/.gitconfig.template ]
+then
+  cp $HOME/.gitconfig.template $HOME/.gitconfig
+fi
+
 echo "Cloning and building Gerrit Code Review on branch $branch ..."
+git config --global credential.helper cache
 git clone https://gerrit.googlesource.com/gerrit && (cd gerrit && f=$(git rev-parse --git-dir)/hooks/commit-msg ; curl -Lo "$f" https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x "$f")
 
 pushd gerrit
@@ -85,7 +91,7 @@
 echo "Pushing gerrit documentation to gerrit-documentation ..."
 unzip searchfree.zip
 pushd Documentation
-version_no_rc=$(echo "%version" | cut -d '-' -f 1)
+version_no_rc=$(echo "$version" | cut -d '-' -f 1)
 gsutil cp -r . gs://gerrit-documentation/Documentation/"$version_no_rc"
 popd
 
diff --git a/jenkins-docker/slave-sbt/Makefile b/jenkins-docker/slave-sbt/Makefile
index ceb6637..d2a811e 100644
--- a/jenkins-docker/slave-sbt/Makefile
+++ b/jenkins-docker/slave-sbt/Makefile
@@ -1,5 +1,6 @@
 NO_CACHE=false
-IMAGE=gerritforge/gerrit-ci-slave-bazel-sbt
+PREFIX=gerritforge
+IMAGE=${PREFIX}/gerrit-ci-slave-bazel-sbt
 
 # Targets
 
diff --git a/jenkins/gatling-test-pipeline.groovy b/jenkins/gatling-test-pipeline.groovy
new file mode 100644
index 0000000..06876f8
--- /dev/null
+++ b/jenkins/gatling-test-pipeline.groovy
@@ -0,0 +1,221 @@
+def accountCookie = ''
+def xsrfToken = ''
+def epochTime = new Date().getTime()
+
+pipeline {
+        agent { label 'aws' }
+
+        parameters {
+            string(name: 'AWS_PREFIX', defaultValue:"jenkins", description: 'A string to prefix stacks and resources with')
+            string(name: 'AWS_REGION', defaultValue:"us-east-1", description: 'Which region to deploy to')
+
+            string(name: 'GERRIT_VERSION', defaultValue:"3.4", description: 'The gerrit version under test')
+            string(name: 'GERRIT_PATCH', defaultValue:"0-rc5", description: 'The gerrit version patch under test')
+            string(name: 'GERRIT_WAR_URL', defaultValue:"https://gerrit-ci.gerritforge.com/job/Gerrit-bazel-java11-stable-3.4/lastSuccessfulBuild/artifact/gerrit/bazel-bin/release.war", description: 'The gerrit.war URL to use as override of the gerrit version under test')
+
+            string(name: 'HOSTED_ZONE_NAME', defaultValue: "gerritforgeaws.com", description: 'Name of the hosted zone')
+            string(name: 'CLUSTER_INSTANCE_TYPE', defaultValue: 'm4.xlarge', description:'The EC2 instance Type used to run the cluster')
+
+            string(name: 'DOCKER_REGISTRY_URI', defaultValue: '117385740707.dkr.ecr.$(AWS_REGION).amazonaws.com', description: 'URI of the Docker registry')
+            string(name: 'SSL_CERTIFICATE_ARN', defaultValue: "arn:aws:acm:us-east-1:117385740707:certificate/33e2c235-a4d1-42b7-b866-18d8d744975c", description: 'ARN of the wildcard SSL Certificate')
+
+            string(name: 'GERRIT_VOLUME_SNAPSHOT_ID', defaultValue: "snap-01c12c75ead9e9cd4", description: 'Id of the EBS volume snapshot')
+
+            string(name: 'METRICS_CLOUDWATCH_NAMESPACE', defaultValue: 'jenkins', description: 'The CloudWatch namespace for Gerrit metrics')
+            string(name: 'BASE_SUBDOMAIN', defaultValue: 'gerrit-demo', description: 'Name of the master sub domain')
+            string(name: 'GERRIT_KEY_PREFIX', defaultValue: 'gerrit_secret', description: 'Secrets prefix')
+
+            string(name: 'GERRIT_SSH_USERNAME', defaultValue: 'gerritadmin', description: 'Gerrit SSH username')
+            string(name: 'GERRIT_SSH_PORT', defaultValue: '29418', description: 'Gerrit SSH port')
+
+            string(name: 'GERRIT_HTTP_SCHEMA', defaultValue: 'https', description: 'Gerrit HTTP schema')
+            string(name: 'GIT_HTTP_USERNAME', defaultValue: '', description: 'Username for Git/HTTP testing, use vault by default')
+            password(name: 'GIT_HTTP_PASSWORD', defaultValue: '', description: 'Password for Git/HTTP testing, use vault by default')
+
+            string(name: 'S3_EXPORT_LOGS_BUCKET_NAME', defaultValue: 'gerritforge-export-logs', description: 'S3 bucket to export logs to')
+
+            string(name: 'GERRIT_PROJECT', defaultValue: 'load-test', description: 'Gerrit project for load test')
+            string(name: 'NUM_USERS', defaultValue: '10', description: 'Number of concurrent user sessions')
+            string(name: 'DURATION', defaultValue: '2 minutes', description: 'Total duration of the test')
+        }
+
+       environment {
+            DOCKER_HOST = """${sh(
+                returnStdout: true,
+                script: '/sbin/ip route|awk \'/default/ {print "tcp://"\$3":2375"}\''
+            )}"""
+            SUBDOMAIN = String.format("%s-%s.%s", "jenkins", epochTime, "${params.BASE_SUBDOMAIN}")
+            BASE_URL = String.format("%s.%s", SUBDOMAIN, "${params.HOSTED_ZONE_NAME}")
+            GERRIT_HTTP_URL = String.format("%s://%s", "${params.GERRIT_HTTP_SCHEMA}", BASE_URL)
+            GERRIT_SSH_URL = String.format("ssh://%s@%s:%s", "${params.GERRIT_SSH_USERNAME}", BASE_URL, "${params.GERRIT_SSH_PORT}")
+         }
+
+        stages{
+            stage("Setup single-primary aws stack") {
+                steps {
+                    withCredentials([usernamePassword(usernameVariable: "GS_GIT_USER", passwordVariable: "GS_GIT_PASS", credentialsId: "gerrit.googlesource.com")]) {
+                        sh 'echo "machine gerrit.googlesource.com login $GS_GIT_USER password $GS_GIT_PASS">> ~/.netrc'
+                        sh 'chmod 600 ~/.netrc'
+                        sh 'rm -rf aws-gerrit'
+                        sh "git clone -b master https://gerrit.googlesource.com/aws-gerrit"
+                        sh "cd aws-gerrit && git fetch origin master && git config user.name jenkins && git config user.email jenkins@gerritforge.com && git merge FETCH_HEAD"
+                     }
+                    dir ('aws-gerrit/gerrit/etc') {
+                        script {
+                            def gerritConfig = readFile(file:"gerrit.config.template")
+                            gerritConfig = gerritConfig.replace("type = ldap","type = DEVELOPMENT_BECOME_ANY_ACCOUNT")
+                            gerritConfig = gerritConfig.replace("smtpUser = {{ SMTP_USER }}\n    enable = true","smtpUser = {{ SMTP_USER }}\n    enable = false")
+
+                            writeFile(file:"gerrit.config.template", text: gerritConfig)
+                        }
+                    }
+                    withCredentials([usernamePassword(usernameVariable: "AWS_ACCESS_KEY_ID",
+                    passwordVariable: "AWS_SECRET_ACCESS_KEY",
+                    credentialsId: "aws-credentials-id")]) {
+                        dir ('aws-gerrit/single-primary') {
+                            script {
+                                def setupData = readFile(file:"setup.env.template")
+                                setupData = resolveParameter(setupData, "HOSTED_ZONE_NAME", "${params.HOSTED_ZONE_NAME}")
+                                setupData = resolveParameter(setupData, "CLUSTER_INSTANCE_TYPE", "${params.CLUSTER_INSTANCE_TYPE}")
+                                setupData = resolveParameter(setupData, "DOCKER_REGISTRY_URI", "${params.DOCKER_REGISTRY_URI}")
+                                setupData = resolveParameter(setupData, "SSL_CERTIFICATE_ARN", "${params.SSL_CERTIFICATE_ARN}")
+
+                                setupData = resolveParameter(setupData, "METRICS_CLOUDWATCH_NAMESPACE", "${params.METRICS_CLOUDWATCH_NAMESPACE}")
+                                setupData = resolveParameter(setupData, 'SUBDOMAIN', "${env.SUBDOMAIN}")
+
+                                setupData = setupData + "\nGERRIT_KEY_PREFIX:= ${params.GERRIT_KEY_PREFIX}"
+                                setupData = setupData + "\nGERRIT_VOLUME_SNAPSHOT_ID:= ${params.GERRIT_VOLUME_SNAPSHOT_ID}"
+
+                                writeFile(file:"setup.env", text: setupData)
+                            }
+                            sh 'echo "*** Computed values:"'
+                            sh 'echo "* Subdomain: $SUBDOMAIN"'
+                            sh 'echo "* Base URL: $BASE_URL"'
+                            sh 'echo "* Gerrit HTTP URL: $GERRIT_HTTP_URL"'
+                            sh 'echo "* Gerrit SSH URL: $GERRIT_SSH_URL"'
+                            sh 'echo "Docker host: $DOCKER_HOST"'
+                            sh "make AWS_REGION=${params.AWS_REGION} AWS_PREFIX=${params.AWS_PREFIX} GERRIT_VERSION=${params.GERRIT_VERSION} GERRIT_WAR_URL=${params.GERRIT_WAR_URL} GERRIT_PATCH=${params.GERRIT_PATCH} create-all"
+                         }
+                     }
+                }
+            }
+            stage('Extract Gatling test user credentials from Gerrit') {
+                steps {
+                    retry(50) {
+                        sleep(10)
+                        sh "curl --fail -L -I '${env.GERRIT_HTTP_URL}/config/server/healthcheck~status' 2>/dev/null"
+                        sh "curl -L -c cookies -i -X POST '${env.GERRIT_HTTP_URL}/login/%2Fq%2Fstatus%3Aopen%2B-is%3Awip?account_id=1000000'"
+                    }
+                    script {
+                        def cookies = readFile(file:"cookies")
+                        def cookiesMap = cookies
+                            .split('\n')
+                            .findAll{it.contains('GerritAccount') || it.contains('XSRF_TOKEN')}
+                            .inject([:]) { map, token ->
+                                def tokens = token.split('\t')
+                                map[tokens[5].trim()] = tokens[6].trim()
+                                map
+                            }
+
+                        accountCookie = cookiesMap['GerritAccount']
+                        xsrfToken = cookiesMap['XSRF_TOKEN']
+                    }
+                }
+            }
+            stage('Pull newest Gatling tests docker image') {
+                steps {
+                    sh 'docker pull gerritforge/gatling-sbt-gerrit-test'
+                }
+            }
+
+            stage('Run Gatling tests') {
+                steps {
+                    withCredentials([usernamePassword(usernameVariable: "DEFAULT_GIT_HTTP_USERNAME",
+                            passwordVariable: "DEFAULT_GIT_HTTP_PASSWORD",
+                            credentialsId: "gatlingHttp")]) {
+                        script {
+
+                            def gitHttpUsername = ("${params.GIT_HTTP_USERNAME}"?.trim()) ?: "${env.DEFAULT_GIT_HTTP_USERNAME}"
+                            def gitHttpPassword = ("${params.GIT_HTTP_PASSWORD}"?.trim()) ?: "${env.DEFAULT_GIT_HTTP_PASSWORD}"
+
+                            writeFile(file: "simulation.env", text: """
+                                    GERRIT_HTTP_URL=${env.GERRIT_HTTP_URL}
+                                    GERRIT_SSH_URL=${env.GERRIT_SSH_URL}
+                                    ACCOUNT_COOKIE=${accountCookie}
+                                    GIT_HTTP_USERNAME=${gitHttpUsername}
+                                    GIT_HTTP_PASSWORD=${gitHttpPassword}
+                                    XSRF_TOKEN=${xsrfToken}
+                                    GERRIT_PROJECT=${params.GERRIT_PROJECT}
+                                    NUM_USERS=${params.NUM_USERS}
+                                    DURATION=${params.DURATION}
+                                    GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+                               """)
+                        }
+                        sh "mkdir -p ${WORKSPACE}/results"
+                        // If Jenkins agent uses Docker remote server mounting local directory will mount directory
+                        // from Docker server host not agent host. Gatling reports will not be visible in build workspace.
+                        // Use Docker volume to avoid this situation.
+                        sh "docker volume create gatling-results"
+                        script {
+                            for (simulation in ["GerritGitSimulation", "GerritRestSimulation"]) {
+                                sh """\
+                                    docker run --rm --env-file simulation.env -v gatling-results:/opt/gatling/results \
+                                    gerritforge/gatling-sbt-gerrit-test -s gerritforge.${simulation}
+                                   """
+                            }
+                        }
+                        //Copy data from Docker volume to Jenkins build workspace
+                        sh "docker create -v gatling-results:/data --name gatling-results-container busybox true"
+                        sh "docker cp gatling-results-container:/data/. ${WORKSPACE}/results/"
+                        // Clean up
+                        sh "docker rm gatling-results-container"
+                        sh "docker volume rm gatling-results"
+
+                        gatlingArchive()
+                    }
+                }
+            }
+            stage("Export Cloudwatch logs to S3") {
+                steps {
+                    withCredentials([usernamePassword(usernameVariable: "AWS_ACCESS_KEY_ID",
+                            passwordVariable: "AWS_SECRET_ACCESS_KEY",
+                            credentialsId: "aws-credentials-id")]) {
+                        dir ('aws-gerrit/single-primary') {
+                            sh "make AWS_REGION=${params.AWS_REGION} AWS_PREFIX=${params.AWS_PREFIX} EXPORT_FROM_MILLIS=${epochTime} S3_EXPORT_LOGS_BUCKET_NAME=${params.S3_EXPORT_LOGS_BUCKET_NAME} export-logs"
+                        }
+                    }
+                }
+            }
+            stage('Check tests results') {
+                steps {
+                    script {
+                        def failed_tests = sh(
+                                returnStdout: true,
+                                script: "for i in `find ${WORKSPACE} -name \"global_stats.json\"`; do cat \$i | jq '.numberOfRequests.ko'| grep -v '0' || true;  done;"
+                        )
+                        if (failed_tests.trim()) {
+                            error("Setting build as failed because some gatling tests were not OK")
+                        }
+                    }
+                }
+            }
+        }
+        post {
+            cleanup {
+                withCredentials([usernamePassword(usernameVariable: "AWS_ACCESS_KEY_ID", 
+                    passwordVariable: "AWS_SECRET_ACCESS_KEY",
+                    credentialsId: "aws-credentials-id")]) {
+                        dir ('aws-gerrit/single-primary') {
+                            sh "make AWS_REGION=${params.AWS_REGION} AWS_PREFIX=${params.AWS_PREFIX} delete-all"
+                        }
+                }
+            }
+        }
+}
+
+def resolveParameter(String text, String paramName, String paramValue) {
+    return text.split('\n').collect { l ->
+        def targetLine = l.trim().startsWith(paramName)
+        targetLine ? "${paramName}:=${paramValue}" : l
+    }.join('\n')
+}
\ No newline at end of file
diff --git a/jenkins/gatlingTestPipeline.yaml b/jenkins/gatling-test-pipeline.yaml
similarity index 84%
rename from jenkins/gatlingTestPipeline.yaml
rename to jenkins/gatling-test-pipeline.yaml
index 21fd1de..861ac31 100644
--- a/jenkins/gatlingTestPipeline.yaml
+++ b/jenkins/gatling-test-pipeline.yaml
@@ -7,6 +7,6 @@
           url: https://gerrit.googlesource.com/a/aws-gerrit
           branches:
             - master
-    dsl: !include-raw: gatlingTestPipeline.groovy
+    dsl: !include-raw: gatling-test-pipeline.groovy
     triggers:
       - timed: "@midnight"
diff --git a/jenkins/gatlingTestPipeline.groovy b/jenkins/gatlingTestPipeline.groovy
deleted file mode 100644
index a743281..0000000
--- a/jenkins/gatlingTestPipeline.groovy
+++ /dev/null
@@ -1,160 +0,0 @@
-def accountCookie = ''
-def xsrfToken = ''
-
-pipeline {
-        agent { label 'aws' }
-
-        parameters {
-            string(name: 'AWS_PREFIX', defaultValue:"jenkins", description: 'A string to prefix stacks and resources with')
-            string(name: 'AWS_REGION', defaultValue:"us-east-1", description: 'Which region to deploy to')
-
-            string(name: 'HOSTED_ZONE_NAME', description: 'Name of the hosted zone')
-            string(name: 'CLUSTER_INSTANCE_TYPE', defaultValue: 'm4.xlarge', description:'The EC2 instance Type used to run the cluster')
-
-            string(name: 'DOCKER_REGISTRY_URI', description: 'URI of the Docker registry')
-            string(name: 'SSL_CERTIFICATE_ARN', description: 'ARN of the wildcard SSL Certificate')
-
-            string(name: 'GERRIT_VOLUME_SHAPSHOT_ID', description: 'Id of the EBS volume snapshot')
-
-            string(name: 'METRICS_CLOUDWATCH_NAMESPACE', defaultValue: 'jenkins', description: 'The CloudWatch namespace for Gerrit metrics')
-            string(name: 'SUBDOMAIN', defaultValue: '$(AWS_PREFIX)-master-demo', description: 'Name of the master sub domain')
-            string(name: 'GERRIT_KEY_PREFIX', defaultValue: 'gerrit_secret', description: 'Secrets prefix')
-
-            string(name: 'GERRIT_HTTP_URL', description: 'Gerrit GUI URL')
-            string(name: 'GERRIT_SSH_URL', description: 'Gerrit SSH URL')
-            string(name: 'GIT_HTTP_USERNAME', description: 'Username for Git/HTTP testing')
-            string(name: 'GIT_HTTP_PASSWORD', description: 'Password for Git/HTTP testing')
-            string(name: 'GERRIT_PROJECT', defaultValue: 'load-test', description: 'Gerrit project for load test')
-            string(name: 'NUM_USERS', defaultValue: '10', description: 'Number of concurrent user sessions')
-            string(name: 'DURATION', defaultValue: '2 minutes', description: 'Total duration of the test')
-        }
-        stages{
-            stage("Setup single-master aws stack") {
-                steps {
-                    withCredentials([usernamePassword(usernameVariable: "GS_GIT_USER", passwordVariable: "GS_GIT_PASS", credentialsId: env.GERRIT_CREDENTIALS_ID)]) {
-                        sh 'echo "machine gerrit.googlesource.com login $GS_GIT_USER password $GS_GIT_PASS">> ~/.netrc'
-                        sh 'chmod 600 ~/.netrc'
-                        sh 'rm -rf aws-gerrit'
-                        sh "git clone -b master https://gerrit.googlesource.com/aws-gerrit"
-                        sh "cd aws-gerrit && git fetch origin master && git config user.name jenkins && git config user.email jenkins@gerritforge.com && git merge FETCH_HEAD"
-                     }
-                    dir ('aws-gerrit/gerrit/etc') {
-                        script {
-                            def gerritConfig = readFile(file:"gerrit.config.template")
-                            gerritConfig = gerritConfig.replace("type = ldap","type = DEVELOPMENT_BECOME_ANY_ACCOUNT")
-                            gerritConfig = gerritConfig.replace("smtpUser = {{ SMTP_USER }}\n    enable = true","smtpUser = {{ SMTP_USER }}\n    enable = false")
-
-                            writeFile(file:"gerrit.config.template", text: gerritConfig)
-                        }
-                    }
-                    withCredentials([usernamePassword(usernameVariable: "AWS_ACCESS_KEY_ID",
-                    passwordVariable: "AWS_SECRET_ACCESS_KEY",
-                    credentialsId: "aws-credentials-id")]) {
-                        dir ('aws-gerrit/single-master') {
-                            script {
-                                def setupData = readFile(file:"setup.env.template")
-                                setupData = resolveParameter(setupData, "HOSTED_ZONE_NAME", HOSTED_ZONE_NAME)
-                                setupData = resolveParameter(setupData, "CLUSTER_INSTANCE_TYPE", CLUSTER_INSTANCE_TYPE)
-                                setupData = resolveParameter(setupData, "DOCKER_REGISTRY_URI", DOCKER_REGISTRY_URI)
-                                setupData = resolveParameter(setupData, "SSL_CERTIFICATE_ARN", SSL_CERTIFICATE_ARN)
-
-                                setupData = resolveParameter(setupData, "METRICS_CLOUDWATCH_NAMESPACE",METRICS_CLOUDWATCH_NAMESPACE)
-                                setupData = resolveParameter(setupData, 'SUBDOMAIN', SUBDOMAIN)
-
-                                setupData = setupData + "\nGERRIT_KEY_PREFIX:= ${GERRIT_KEY_PREFIX}"
-                                setupData = setupData + "\nGERRIT_VOLUME_SNAPSHOT_ID:= ${GERRIT_VOLUME_SHAPSHOT_ID}"
-
-                                writeFile(file:"setup.env", text: setupData)
-                            }
-                            sh "make AWS_REGION=${AWS_REGION} AWS_PREFIX=${AWS_PREFIX} create-all"
-                         }
-                     }
-                }
-            }
-            stage('Extract Gatling test user credentials from Gerrit') {
-                steps {
-                    retry(50) {
-                        sleep(10)
-                        sh "curl --fail -L -I '${GERRIT_HTTP_URL}' 2>/dev/null"
-                    }
-                    sh "curl -L -c cookies -i -X POST '${GERRIT_HTTP_URL}/login/%2Fq%2Fstatus%3Aopen%2B-is%3Awip?account_id=1000000'"
-                    script {
-                        def cookies = readFile(file:"cookies")
-                        def cookiesMap = cookies
-                            .split('\n')
-                            .findAll{it.contains('GerritAccount') || it.contains('XSRF_TOKEN')}
-                            .inject([:]) { map, token ->
-                                def tokens = token.split('\t')
-                                map[tokens[5].trim()] = tokens[6].trim()
-                                map
-                            }
-
-                        accountCookie = cookiesMap['GerritAccount']
-                        xsrfToken = cookiesMap['XSRF_TOKEN']
-                    }
-                }
-            }
-            stage('Pull newest Gatling tests docker image') {
-                steps {
-                    sh 'docker pull gerritforge/gatling-sbt-gerrit-test'
-                }
-            }
-
-            stage('Run Gatling tests') {
-                steps {
-                    script {
-                        writeFile(file:"simulation.env", text: """
-                                GERRIT_HTTP_URL=${GERRIT_HTTP_URL}
-                                GERRIT_SSH_URL=${GERRIT_SSH_URL}
-                                ACCOUNT_COOKIE=${accountCookie}
-                                GIT_HTTP_USERNAME=${GIT_HTTP_USERNAME}
-                                GIT_HTTP_PASSWORD=${GIT_HTTP_PASSWORD}
-                                XSRF_TOKEN=${xsrfToken}
-                                GERRIT_PROJECT=${GERRIT_PROJECT}
-                                GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-                           """)
-                    }
-                    sh "mkdir -p ${WORKSPACE}/results"
-                    // If Jenkins agent uses Docker remote server mounting local directory will mount directory
-                    // from Docker server host not agent host. Gatling reports will not be visible in build workspace.
-                    // Use Docker volume to avoid this situation.
-                    sh "docker volume create gatling-results"
-                    script {
-                        for (simulation in ["GerritGitSimulation", "GerritRestSimulation"]) {
-                            sh """\
-                                docker run --rm --env-file simulation.env -v gatling-results:/opt/gatling/results \
-                                gerritforge/gatling-sbt-gerrit-test -s gerritforge.${simulation}
-                               """
-                        }
-                    }
-                    //Copy data from Docker volume to Jenkins build workspace
-                    sh "docker create -v gatling-results:/data --name gatling-results-container busybox true"
-                    sh "docker cp gatling-results-container:/data/. ${WORKSPACE}/results/"
-                    // Clean up
-                    sh "docker rm gatling-results-container"
-                    sh "docker volume rm gatling-results"
-
-                    gatlingArchive()
-                }
-            }
-
-        }
-        post {
-            cleanup {
-                withCredentials([usernamePassword(usernameVariable: "AWS_ACCESS_KEY_ID", 
-                    passwordVariable: "AWS_SECRET_ACCESS_KEY",
-                    credentialsId: "aws-credentials-id")]) {
-                        dir ('aws-gerrit/single-master') {
-                            sh "make AWS_REGION=${AWS_REGION} AWS_PREFIX=${AWS_PREFIX} delete-all"
-                        }
-                }
-            }
-        }
-}
-
-def resolveParameter(String text, String paramName, String paramValue) {
-    return text.split('\n').collect { l ->
-        def targetLine = l.trim().startsWith(paramName)
-        targetLine ? "${paramName}:=${paramValue}" : l
-    }.join('\n')
-}
\ No newline at end of file
diff --git a/jenkins/gerrit-bazel-build.sh b/jenkins/gerrit-bazel-build.sh
index 3a2ef97..d02c40b 100644
--- a/jenkins/gerrit-bazel-build.sh
+++ b/jenkins/gerrit-bazel-build.sh
@@ -4,15 +4,24 @@
 
 cd gerrit
 
-if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+echo "Build with mode=$MODE"
+echo '----------------------------------------------'
+
+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
 bazelisk version
-bazelisk build $BAZEL_OPTS plugins:core release api
-tools/maven/api.sh install
-tools/eclipse/project.py --bazel bazelisk
+
+if [[ "$MODE" == *"rbe"* ]]
+then
+    # TODO(davido): Figure out why javadoc part of api-rule doesn't work on RBE.
+    # See: https://github.com/bazelbuild/bazel/issues/12765 for more background.
+  bazelisk build --config=remote --remote_instance_name=projects/api-project-164060093628/instances/default_instance plugins:core release api-skip-javadoc
+else
+  bazelisk build $BAZEL_OPTS plugins:core release api
+  tools/maven/api.sh install
+  tools/eclipse/project.py --bazel bazelisk
+fi
diff --git a/jenkins/gerrit-bazel-cleancache.sh b/jenkins/gerrit-bazel-cleancache.sh
index 59d8fb6..0f9f651 100644
--- a/jenkins/gerrit-bazel-cleancache.sh
+++ b/jenkins/gerrit-bazel-cleancache.sh
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 
-if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+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
diff --git a/jenkins/gerrit-bazel-verifier-test.sh b/jenkins/gerrit-bazel-verifier-test.sh
index 60eb70c..673cc78 100644
--- a/jenkins/gerrit-bazel-verifier-test.sh
+++ b/jenkins/gerrit-bazel-verifier-test.sh
@@ -7,18 +7,25 @@
 echo "Test with mode=$MODE"
 echo '----------------------------------------------'
 
-TEST_TAG_FILTERS="-flaky"
-if [[ "$TARGET_BRANCH" = stable-2.1* ]]
-then
-  TEST_TAG_FILTERS="$TEST_TAG_FILTERS,-elastic"
-fi
+case $TARGET_BRANCH$MODE in
+  masterrbe|stable-3.4rbe|stable-3.4-2021-07.sticky-approvalsrbe)
+    TEST_TAG_FILTER="-flaky,-elastic,-git-protocol-v2"
+    BAZEL_OPTS="--config=remote --remote_instance_name=projects/api-project-164060093628/instances/default_instance"
+    ;;
+  masternotedb|stable-3.4notedb)
+    TEST_TAG_FILTER="-flaky,elastic,git-protocol-v2"
+    ;;
+  stable-2.*)
+    TEST_TAG_FILTER="-flaky,-elastic"
+    ;;
+  *)
+    TEST_TAG_FILTER="-flaky"
+esac
 
-export BAZEL_OPTS="$BAZEL_OPTS --spawn_strategy=standalone --genrule_strategy=standalone \
-                 --test_output errors \
-                 --test_summary detailed --flaky_test_attempts 3 \
-                 --test_verbose_timeout_warnings --build_tests_only \
+export BAZEL_OPTS="$BAZEL_OPTS \
+                 --flaky_test_attempts 3 \
                  --test_timeout 3600 \
-                 --test_tag_filters=$TEST_TAG_FILTERS \
+                 --test_tag_filters=$TEST_TAG_FILTER \
                  --test_env DOCKER_HOST=$DOCKER_HOST"
 export WCT_HEADLESS_MODE=1
 
@@ -28,7 +35,7 @@
 if [[ "$MODE" == *"reviewdb"* ]]
 then
   GERRIT_NOTEDB="--test_env=GERRIT_NOTEDB=OFF"
-  bazelisk test $BAZEL_OPTS //...
+  bazelisk test $GERRIT_NOTEDB $BAZEL_OPTS //...
 fi
 
 if [[ "$MODE" == *"notedb"* ]]
@@ -37,13 +44,18 @@
   bazelisk test $GERRIT_NOTEDB $BAZEL_OPTS //...
 fi
 
+if [[ "$MODE" == *"rbe"* ]]
+then
+  bazelisk test $BAZEL_OPTS //...
+fi
+
 if [[ "$MODE" == *"polygerrit"* ]]
 then
 
   echo 'Running Documentation tests...'
   bazelisk test $BAZEL_OPTS //tools/bzl:always_pass_test Documentation/...
 
-  echo 'Running local tests...'
+  echo "Running local tests in $(google-chrome --version)"
   bash ./polygerrit-ui/app/run_test.sh || touch ~/polygerrit-failed
 
   if [ -z "$SAUCE_USERNAME" ] || [ -z "$SAUCE_ACCESS_KEY" ]
diff --git a/jenkins/gerrit-codestyle-polygerrit-lint.sh b/jenkins/gerrit-codestyle-polygerrit-lint.sh
index 377682e..ebd5e2d 100644
--- a/jenkins/gerrit-codestyle-polygerrit-lint.sh
+++ b/jenkins/gerrit-codestyle-polygerrit-lint.sh
@@ -2,7 +2,7 @@
 
 . set-java.sh 8
 
-if [git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion]
+if git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q .bazelversion
 then
   export BAZEL_OPTS=""
 fi
@@ -10,6 +10,7 @@
 cd gerrit
 bazelisk version
 if ([ "$TARGET_BRANCH" == "master" ] || \
+    [ "$TARGET_BRANCH" == "stable-3.4" ] || \
     [ "$TARGET_BRANCH" == "stable-3.3" ] || \
     [ "$TARGET_BRANCH" == "stable-3.2" ]) && \
    ((git show --diff-filter=AM --name-only --pretty="" HEAD | grep -q polygerrit-ui) || \
@@ -18,6 +19,6 @@
 then
   echo 'Running PolyGerrit lint check...'
   java -fullversion
-  bazelisk test //polygerrit-ui/app:lint_test --test_output errors
-  bazelisk test //polygerrit-ui/app:polylint_test --test_output errors
+  bazelisk test //polygerrit-ui/app:lint_test
+  bazelisk test //polygerrit-ui/app:polylint_test
 fi
diff --git a/jenkins/gerrit-verifier.yaml b/jenkins/gerrit-verifier.yaml
index 6ccd209..ecb07ab 100644
--- a/jenkins/gerrit-verifier.yaml
+++ b/jenkins/gerrit-verifier.yaml
@@ -64,6 +64,7 @@
             - reviewdb
             - notedb
             - polygerrit
+            - rbe
           description: 'Type of verification to execute'
     properties:
       - authorization:
diff --git a/vars/gerritPipeline.groovy b/vars/gerritPipeline.groovy
index 7aef6e8..a30c24b 100644
--- a/vars/gerritPipeline.groovy
+++ b/vars/gerritPipeline.groovy
@@ -45,6 +45,9 @@
             }
 
             stage('Report to Gerrit'){
+                resCodeStyle = getLabelValue(1, Builds.codeStyle.result)
+                gerritReview labels: ['Code-Style': resCodeStyle]
+
                 def verificationResults = Builds.verification.collect { k, v -> v }
                 def resVerify = verificationResults.inject(1) {
                     acc, build -> getLabelValue(acc, build.result)
@@ -87,7 +90,8 @@
     String consoleUrl
 
     GerritCheck(name, build) {
-        this.uuid = "gerritforge:${env.GERRIT_PROJECT}-${name}"
+        this.uuid = "gerritforge:" + name.replaceAll("(bazel/)", "") +
+            Globals.gerritRepositoryNameSha1Suffix
         this.build = build
         this.consoleUrl = "${build.url}console"
     }
@@ -126,11 +130,13 @@
 
 def collectBuildModes() {
     Builds.modes = []
-    if (env.GERRIT_BRANCH ==~ /stable-3.*/ || env.GERRIT_BRANCH == "master" || env.GERRIT_BRANCH == "stable-3.4-2021-07.sticky-approvals") {
+    if (env.GERRIT_BRANCH == "master" || env.GERRIT_BRANCH == "stable-3.4" || env.GERRIT_BRANCH == "stable-3.4-2021-07.sticky-approvals") {
+        Builds.modes = ["notedb", "rbe"]
+    } else if (env.GERRIT_BRANCH ==~ /stable-3.[0-3]/) {
         Builds.modes = ["notedb"]
-    } else if (env.GERRIT_BRANCH ==~ /stable-2.16.*/) {
+    } else if (env.GERRIT_BRANCH == "stable-2.16") {
         Builds.modes = ["notedb", "reviewdb"]
-    } else if (env.GERRIT_BRANCH ==~ /stable-2.1[0-5].*/) {
+    } else if (env.GERRIT_BRANCH ==~ /stable-2.1[0-5]/) {
         Builds.modes = ["reviewdb"]
     } else {
         throw new Exception("Unsupported branch ${env.GERRIT_BRANCH}")
diff --git a/vars/pluginPipeline.groovy b/vars/pluginPipeline.groovy
index 4d36f6a..c168cc0 100644
--- a/vars/pluginPipeline.groovy
+++ b/vars/pluginPipeline.groovy
@@ -37,7 +37,7 @@
     def pluginScmUrl = "https://gerrit.googlesource.com/a/${env.GERRIT_PROJECT}"
     def gjfVersion = '1.7'
     def javaVersion = 11
-    if (["stable-2.16", "stable-3.0", "stable-3.1", "stable-3.2"].contains("${env.GERRIT_BRANCH}")) {
+    if (env.GERRIT_BRANCH in ["stable-2.16", "stable-3.2"]) {
         javaVersion = 8
     }
     def bazeliskCmd = "#!/bin/bash\n" + ". set-java.sh ${javaVersion} && bazelisk"
