Build Chrome into a different layer

Decouple Chrome setup from the Basic OS layer
so that it can be easier in the future upgrading
the browser without having to rebuild the basic
operating system.

Change-Id: I911898ce020d250c524f56da75a97577a3a57310
diff --git a/jenkins-docker/Makefile b/jenkins-docker/Makefile
index 51611cb..e8c24e3 100644
--- a/jenkins-docker/Makefile
+++ b/jenkins-docker/Makefile
@@ -1,9 +1,13 @@
-DIRS=master slave-debian slave-buck slave-mvn slave-bazel slave-sbt
+SLAVE_DIRS ?= slave-debian slave-chrome slave-buck slave-mvn slave-bazel slave-sbt
+ALL_DIRS ?= master $(SLAVE_DIRS)
 
-default: start
+default: build
 
 build clean publish:
-	for dir in ${DIRS}; do make -C $$dir $@; done
+	for dir in $(ALL_DIRS); do (make -C $$dir $@) || exit 1; done
+
+build_slave:
+	for dir in $(SLAVE_DIRS); do (make -C $$dir build) || exit 1; done
 
 start stop restart:
 	make -C master $@
diff --git a/jenkins-docker/slave-buck/Dockerfile b/jenkins-docker/slave-buck/Dockerfile
index db49a4a..74ce7e7 100644
--- a/jenkins-docker/slave-buck/Dockerfile
+++ b/jenkins-docker/slave-buck/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritforge/gerrit-ci-slave-debian:jessie
+FROM gerritforge/gerrit-ci-slave-chrome:jessie-$CHROME_VER
 
 # Buck build
 
diff --git a/jenkins-docker/slave-buck/Makefile b/jenkins-docker/slave-buck/Makefile
index aa87d88..490e419 100644
--- a/jenkins-docker/slave-buck/Makefile
+++ b/jenkins-docker/slave-buck/Makefile
@@ -1,10 +1,12 @@
 NO_CACHE=false
 IMAGE=gerritforge/gerrit-ci-slave-buck:debian-jessie
+CHROME_VER ?= 66.0.3359.181
 
 # Targets
 
 build:
-	docker build --no-cache=$(NO_CACHE) -t ${IMAGE} .
+	cat Dockerfile | CHROME_VER=$(CHROME_VER) envsubst > Dockerfile-$(CHROME_VER)
+	docker build -f Dockerfile-$(CHROME_VER) --no-cache=$(NO_CACHE) -t ${IMAGE} .
 
 publish:
 	docker push ${IMAGE}
diff --git a/jenkins-docker/slave-chrome/Dockerfile b/jenkins-docker/slave-chrome/Dockerfile
new file mode 100644
index 0000000..28fa7c5
--- /dev/null
+++ b/jenkins-docker/slave-chrome/Dockerfile
@@ -0,0 +1,9 @@
+FROM gerritforge/gerrit-ci-slave-debian:$DEBIAN_VER
+
+RUN sed -i -e 's/archive/old-releases/g' /etc/apt/sources.list && \
+    apt-get update && \
+    apt-get install -y wget curl zip fonts-liberation && \
+    wget -O /tmp/chrome.deb https://www.slimjet.com/chrome/download-chrome.php?file=lnx%2Fchrome64_$CHROME_VER.deb && \
+    (dpkg -i /tmp/chrome.deb; apt-get install -f -y) && \
+    rm /tmp/chrome.deb
+
diff --git a/jenkins-docker/slave-chrome/Makefile b/jenkins-docker/slave-chrome/Makefile
new file mode 100644
index 0000000..f7c6db9
--- /dev/null
+++ b/jenkins-docker/slave-chrome/Makefile
@@ -0,0 +1,34 @@
+NO_CACHE ?= false
+DEBIAN_VER ?= jessie
+CHROME_VER ?= 66.0.3359.181
+IMAGE=gerritforge/gerrit-ci-slave-chrome:$(DEBIAN_VER)-$(CHROME_VER)
+
+build: build_jessie build_stretch
+
+publish: publish_jessie publish_stretch
+
+build_jessie: jessie docker_build
+
+build_stretch: stretch docker_build
+
+publish_jessie: jessie docker_publish
+
+publish_stretch: stretch docker_publish
+
+docker_build: 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) .
+
+docker_publish: build
+	docker push $(IMAGE)
+
+clean:
+	docker rmi -f $(IMAGE)
+
+jessie stretch:
+	$(eval DEBIAN_VER := $@)
+
+.PHONY: clean jessie stretch
+
diff --git a/jenkins-docker/slave-debian/Dockerfile b/jenkins-docker/slave-debian/Dockerfile
index 09650c7..819b76b 100644
--- a/jenkins-docker/slave-debian/Dockerfile
+++ b/jenkins-docker/slave-debian/Dockerfile
@@ -64,14 +64,6 @@
 
 # PolyGerrit tests
 
-# pin Chrome version to 66.0.3359.181
-RUN sed -i -e 's/archive/old-releases/g' /etc/apt/sources.list && \
-    apt-get update && \
-    apt-get install -y wget curl zip fonts-liberation && \
-    wget -O /tmp/chrome.deb https://www.slimjet.com/chrome/download-chrome.php?file=lnx%2Fchrome64_66.0.3359.181.deb && \
-    (dpkg -i /tmp/chrome.deb; apt-get install -f -y) && \
-    rm /tmp/chrome.deb
-
 COPY wct.conf.json /home/jenkins/
 RUN chown jenkins:jenkins /home/jenkins/wct.conf.json