Add support for Chome 80.0.3987.149 and 69.0.3497.92

Different versions of Gerrit are compatible with different versions
of Chrome. E.g. v3.2 and master are compatible with Chrome 80 and 69
but older branches only with Chrome 69.

Build multiple versions of the Docker images so that can be used
for validating front-end changes on different branches.

Also, bring the possibility to validate the latest v3.2 and master
on the latest version of Chrome without breaking existing stable branches
and tests.

Co-Authored-By: Luca Milanesio <luca.milanesio@gmail.com>
Change-Id: I1566d2691b269fe15015fb3360e0d6c5a6493656
diff --git a/jenkins-docker/chrome-vers.mk b/jenkins-docker/chrome-vers.mk
new file mode 100644
index 0000000..a4c7e3a
--- /dev/null
+++ b/jenkins-docker/chrome-vers.mk
@@ -0,0 +1 @@
+CHROME_VERS ?= 80.0.3987.149 69.0.3497.92
diff --git a/jenkins-docker/slave-bazel-docker/Dockerfile b/jenkins-docker/slave-bazel-docker/Dockerfile
index 0bc9601..1088d13 100644
--- a/jenkins-docker/slave-bazel-docker/Dockerfile
+++ b/jenkins-docker/slave-bazel-docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch
+FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-$CHROME_VER
 
 RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \
     add-apt-repository \
diff --git a/jenkins-docker/slave-bazel-docker/Makefile b/jenkins-docker/slave-bazel-docker/Makefile
index 91ebb17..f414061 100644
--- a/jenkins-docker/slave-bazel-docker/Makefile
+++ b/jenkins-docker/slave-bazel-docker/Makefile
@@ -1,16 +1,28 @@
+include ../chrome-vers.mk
+
 NO_CACHE=false
 IMAGE=gerritforge/gerrit-ci-slave-bazel-docker:debian-stretch
 
 # Targets
 
 build:
-	docker build --no-cache=$(NO_CACHE) -t ${IMAGE} .
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		cat Dockerfile | CHROME_VER=$$chrome_ver envsubst > Dockerfile-subst ; \
+		docker build -f Dockerfile-subst --no-cache=$(NO_CACHE) -t ${IMAGE}-$$chrome_ver . ; \
+	done
 
 publish:
-	docker push ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker push ${IMAGE}-$$chrome_ver ; \
+	done
 
 clean:
-	docker rmi -f ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker rmi -f ${IMAGE}-$$chrome_ver ; \
+	done
 
 .PHONY: clean image publish
 
diff --git a/jenkins-docker/slave-bazel-nocache/Dockerfile b/jenkins-docker/slave-bazel-nocache/Dockerfile
index f8946a2..ef7c88d 100644
--- a/jenkins-docker/slave-bazel-nocache/Dockerfile
+++ b/jenkins-docker/slave-bazel-nocache/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-node-wct:$NODE_VER-$WCT_VER
+FROM gerritforge/gerrit-ci-slave-node-wct:$NODE_VER-$WCT_VER-$CHROME_VER
 
 ARG BAZEL_VER
 ARG BUILDIFIER_VER
diff --git a/jenkins-docker/slave-bazel-nocache/Makefile b/jenkins-docker/slave-bazel-nocache/Makefile
index 45d96b5..6d973c2 100644
--- a/jenkins-docker/slave-bazel-nocache/Makefile
+++ b/jenkins-docker/slave-bazel-nocache/Makefile
@@ -1,3 +1,5 @@
+include ../chrome-vers.mk
+
 NO_CACHE=false
 IMAGE=gerritforge/gerrit-ci-slave-bazel:debian-stretch-nocache
 BAZEL_VER=3.1.0
@@ -9,21 +11,31 @@
 # Targets
 
 build:
-	cat Dockerfile | \
-        BAZEL_VER=${BAZEL_VER} \
-        BUILDIFIER_VER=${BUILDIFIER_VER} \
-        BAZELISK_VER=${BAZELISK_VER} \
-        NODE_VER=${NODE_VER} \
-        WCT_VER=${WCT_VER} envsubst > Dockerfile-subst
-	docker build --no-cache=$(NO_CACHE) \
-        -f Dockerfile-subst \
-        -t ${IMAGE} .
+	@for chrome_ver in $(CHROME_VERS); \
+	do \
+		cat Dockerfile | \
+		BAZEL_VER=${BAZEL_VER} \
+		BUILDIFIER_VER=${BUILDIFIER_VER} \
+		BAZELISK_VER=${BAZELISK_VER} \
+		NODE_VER=${NODE_VER} \
+		WCT_VER=${WCT_VER} \
+		CHROME_VER=$$chrome_ver envsubst > Dockerfile-subst; \
+		docker build --no-cache=$(NO_CACHE) \
+		-f Dockerfile-subst \
+		-t ${IMAGE}-$$chrome_ver . ; \
+	done
 
 publish:
-	docker push ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+	do \
+		docker push ${IMAGE}-$$chrome_ver; \
+	done
 
 clean:
-	docker rmi -f ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker rmi -f ${IMAGE}-$$chrome_ver; \
+	done
 
 .PHONY: clean image publish
 
diff --git a/jenkins-docker/slave-bazel/Dockerfile b/jenkins-docker/slave-bazel/Dockerfile
index 17580a3..65816b2 100644
--- a/jenkins-docker/slave-bazel/Dockerfile
+++ b/jenkins-docker/slave-bazel/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-nocache
+FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-nocache-$CHROME_VER
 
 # Bazel cache warm-up with Gerrit master and latest stable branch.
 # Set-up google-java-format utility to ~/format/google-java-format.
diff --git a/jenkins-docker/slave-bazel/Makefile b/jenkins-docker/slave-bazel/Makefile
index 631f6a8..f400204 100644
--- a/jenkins-docker/slave-bazel/Makefile
+++ b/jenkins-docker/slave-bazel/Makefile
@@ -1,16 +1,28 @@
+include ../chrome-vers.mk
+
 NO_CACHE=false
 IMAGE=gerritforge/gerrit-ci-slave-bazel:debian-stretch
 
 # Targets
 
 build:
-	docker build --no-cache=$(NO_CACHE) -t ${IMAGE} .
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		cat Dockerfile | CHROME_VER=$$chrome_ver envsubst > Dockerfile-subst ; \
+		docker build --no-cache=$(NO_CACHE) -f Dockerfile-subst -t ${IMAGE}-$$chrome_ver . ; \
+	done
 
 publish:
-	docker push ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker push ${IMAGE}-$$chrome_ver ; \
+	done
 
 clean:
-	docker rmi -f ${IMAGE}
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker rmi -f ${IMAGE}-$$chrome_ver ; \
+	done
 
 .PHONY: clean image publish
 
diff --git a/jenkins-docker/slave-chrome/Makefile b/jenkins-docker/slave-chrome/Makefile
index 2861732..bdecd46 100644
--- a/jenkins-docker/slave-chrome/Makefile
+++ b/jenkins-docker/slave-chrome/Makefile
@@ -1,29 +1,29 @@
+include ../chrome-vers.mk
+
 NO_CACHE ?= false
 DEBIAN_VER ?= stretch
-CHROME_VER ?= 69.0.3497.92
-IMAGE=gerritforge/gerrit-ci-slave-chrome:$(DEBIAN_VER)-$(CHROME_VER)
+IMAGE=gerritforge/gerrit-ci-slave-chrome:$(DEBIAN_VER)
 
-build: build_stretch
+build: Makefile Dockerfile
+	@for chrome_ver in $(CHROME_VERS); \
+	do \
+		echo "Building Docker for $(DEBIAN_VER) / Chrome v$$chrome_ver"; \
+		echo "========================================================"; \
+		cat Dockerfile | DEBIAN_VER=$(DEBIAN_VER) CHROME_VER=$$chrome_ver envsubst > Dockerfile-$(DEBIAN_VER)-$$chrome_ver; \
+		docker build --no-cache=$(NO_CACHE) -f Dockerfile-$(DEBIAN_VER)-$$chrome_ver -t "$(IMAGE)-$$chrome_ver" .;  \
+	done
 
-publish: publish_stretch
+publish:
+	for chrome_ver in $(CHROME_VERS); \
+	do \
+		docker push $(IMAGE)-$$chrome_ver; \
+	done
 
-clean: clean_stretch
+clean:
+	for chrome_ver in $(CHROME_VERS); \
+	do \
+		docker rmi -f $(IMAGE)-$$chrome_ver; \
+	done
 
-build_stretch publish_stretch clean_stretch: DEBIAN_VER=stretch
-
-publish_stretch: build_stretch
-
-build_stretch: Makefile Dockerfile
-	@echo "Building Docker for $(DEBIAN_VER) / Chrome v$(CHROME_VER)"
-	@echo "==================================================="
-	cat Dockerfile | DEBIAN_VER=$(DEBIAN_VER) CHROME_VER=$(CHROME_VER) envsubst > Dockerfile-$(DEBIAN_VER)-$(CHROME_VER)
-	docker build --no-cache=$(NO_CACHE) -f Dockerfile-$(DEBIAN_VER)-$(CHROME_VER) -t $(IMAGE) .
-
-publish_stretch:
-	docker push $(IMAGE)
-
-clean_stretch:
-	docker rmi -f $(IMAGE)
-
-.PHONY: clean stretch
+.PHONY: build publish clean
 
diff --git a/jenkins-docker/slave-mvn/Dockerfile b/jenkins-docker/slave-mvn/Dockerfile
index 6d1562b..c675e52 100644
--- a/jenkins-docker/slave-mvn/Dockerfile
+++ b/jenkins-docker/slave-mvn/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch
+FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-80.0.3987.149
 
 USER jenkins
 
diff --git a/jenkins-docker/slave-node-wct/Dockerfile b/jenkins-docker/slave-node-wct/Dockerfile
index 9643914..ef776b4 100644
--- a/jenkins-docker/slave-node-wct/Dockerfile
+++ b/jenkins-docker/slave-node-wct/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-chrome:stretch-69.0.3497.92
+FROM gerritforge/gerrit-ci-slave-chrome:stretch-80.0.3987.149
 
 # Node JS for PolyGerrit build
 
diff --git a/jenkins-docker/slave-node-wct/Makefile b/jenkins-docker/slave-node-wct/Makefile
index b16d0a9..2fff934 100644
--- a/jenkins-docker/slave-node-wct/Makefile
+++ b/jenkins-docker/slave-node-wct/Makefile
@@ -1,17 +1,28 @@
+include ../chrome-vers.mk
+
 NO_CACHE ?= false
 NODE_VER ?= 10
 WCT_VER ?= 6.8.0
 IMAGE=gerritforge/gerrit-ci-slave-node-wct:$(NODE_VER)-$(WCT_VER)
 
 build:  Dockerfile Makefile
-	cat Dockerfile | NODE_VER=$(NODE_VER) WCT_VER=$(WCT_VER) envsubst > Dockerfile-$(NODE_VER)-$(WCT_VER)
-	docker build --no-cache=$(NO_CACHE) -f Dockerfile-$(NODE_VER)-$(WCT_VER) -t $(IMAGE) .
+	@for chrome_ver in $(CHROME_VERS); \
+	do \
+		cat Dockerfile | NODE_VER=$(NODE_VER) WCT_VER=$(WCT_VER) CHROME_VER=$$chrome_ver envsubst > Dockerfile-$(NODE_VER)-$(WCT_VER)-$$chrome_ver ; \
+		docker build --no-cache=$(NO_CACHE) -f Dockerfile-$(NODE_VER)-$(WCT_VER)-$$chrome_ver -t $(IMAGE)-$$chrome_ver . ; \
+	done
 
 publish: build
-	docker push $(IMAGE)
+	@for chrome_ver in $(CHROME_VERS); \
+	do \
+		docker push $(IMAGE)-$$chrome_ver; \
+	done
 
 clean:
-	docker rmi -f $(IMAGE)
+	@for chrome_ver in $(CHROME_VERS); \
+        do \
+		docker rmi -f $(IMAGE); \
+	done
 	-rm -f id_rsa*
 
 .PHONY: clean
diff --git a/jenkins-docker/slave-release/Dockerfile b/jenkins-docker/slave-release/Dockerfile
index cbb7874..12bf688 100644
--- a/jenkins-docker/slave-release/Dockerfile
+++ b/jenkins-docker/slave-release/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-nocache
+FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-nocache-80.0.3987.149
 
 RUN apt-get update && \
     apt-get install -y gnupg2 && \
diff --git a/jenkins-docker/slave-sbt/Dockerfile b/jenkins-docker/slave-sbt/Dockerfile
index d301736..95374e0 100644
--- a/jenkins-docker/slave-sbt/Dockerfile
+++ b/jenkins-docker/slave-sbt/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch
+FROM gerritforge/gerrit-ci-slave-bazel:debian-stretch-80.0.3987.149
 
 # SBT Setup
 RUN apt-get update && \