jenkins: Integration of Jenkins build requirements for building disk images

This allows us to build disk images from Jenkins, using the GKE-based apt
repository. This is only half of the solution -- the other half is in the board/
repository.

Change-Id: I320953211a81ba43a4d3be51d56f58c95ac6ec4d
diff --git a/docker.mk b/docker.mk
index 6cf6620..a0bc50c 100644
--- a/docker.mk
+++ b/docker.mk
@@ -42,6 +42,7 @@
 DOCKER_ENV := \
   -e "FETCH_PACKAGES=$(FETCH_PACKAGES)" \
   -e "HEADLESS_BUILD=$(HEADLESS_BUILD)" \
+  -e "IS_JENKINS=$(IS_JENKINS)" \
   -e "IS_EXTERNAL=$(IS_EXTERNAL)" \
   -e "http_proxy=$(http_proxy)" \
   -e "USERSPACE_ARCH=$(USERSPACE_ARCH)" \
diff --git a/multistrap.mk b/multistrap.mk
index 614299a..fd35fbd 100644
--- a/multistrap.mk
+++ b/multistrap.mk
@@ -39,7 +39,12 @@
 	sudo mkdir -p $(MULTISTRAP_WORK_DIR)/boot $(MULTISTRAP_WORK_DIR)/dev
 	sudo mount -o loop $(PRODUCT_OUT)/multistrap/boot_$(USERSPACE_ARCH).img $(MULTISTRAP_WORK_DIR)/boot
 
+ifeq ($(IS_JENKINS),)
 	cp $(ROOTDIR)/board/multistrap.conf $(PRODUCT_OUT)/multistrap
+else
+	cp $(ROOTDIR)/board/multistrap-jenkins.conf $(PRODUCT_OUT)/multistrap/multistrap.conf
+endif
+
 	sed -i -e 's/USERSPACE_ARCH/$(USERSPACE_ARCH)/g' $(PRODUCT_OUT)/multistrap/multistrap.conf
 	sed -i -e 's/MAIN_PACKAGES/$(PACKAGES_EXTRA) $(BOARD_NAME)-core/g' $(PRODUCT_OUT)/multistrap/multistrap.conf
 
diff --git a/pbuilder-hooks/D05deps b/pbuilder-hooks/D05deps
index b9cf71d..a8a672a 100755
--- a/pbuilder-hooks/D05deps
+++ b/pbuilder-hooks/D05deps
@@ -1,7 +1,13 @@
 #!/bin/bash -xe
 sed -i '/^deb http:/ s/$/ contrib non-free/' /etc/apt/sources.list
 echo "deb [trusted=yes] file://$DEPSBASE ./" >> /etc/apt/sources.list
-echo "deb [trusted=yes] http://packages.cloud.google.com/apt mendel-bsp-$BOARD_NAME-day main" >> /etc/apt/sources.list
+
+if [[ -z "${IS_JENKINS}" ]]; then
+    echo "deb [trusted=yes] http://packages.cloud.google.com/apt mendel-bsp-$BOARD_NAME-day main" >> /etc/apt/sources.list
+else
+    echo "deb [arch=arm64] https://mendel-linux.org/apt unstable-bsp-$BOARD_NAME unstable" >> /etc/apt/sources.list
+fi
+
 echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" >> /etc/apt/sources.list
 
 echo 'Debug::pkgProblemResolver true;' > /etc/apt/apt.conf
@@ -15,6 +21,7 @@
 
 cat ${ROOTDIR}/build/bazel-release.pub.gpg | apt-key add -
 cat ${ROOTDIR}/packages/mendel-keyring/cloud-key.gpg | apt-key add -
+cat ${ROOTDIR}/packages/mendel-keyring/gke_signing_key.gpg | apt-key add -
 cat ${ROOTDIR}/packages/mendel-keyring/linux_signing_key.pub |apt-key add -
 dpkg --add-architecture arm64
 dpkg --add-architecture amd64
diff --git a/preamble.mk b/preamble.mk
index a909fe3..763264f 100644
--- a/preamble.mk
+++ b/preamble.mk
@@ -17,6 +17,11 @@
 
 LOG := @$(ROOTDIR)/build/log.sh
 
+ifneq ($(IS_JENKINS),)
+  IS_EXTERNAL = true
+  FETCH_PACKAGES = true
+endif
+
 ifeq (,$(wildcard /etc/dpkg/origins/glinux))
 ifeq (,$(wildcard /google))
   IS_EXTERNAL ?= true
diff --git a/rootfs.mk b/rootfs.mk
index 558c0c0..342532a 100644
--- a/rootfs.mk
+++ b/rootfs.mk
@@ -76,7 +76,13 @@
 	-sudo umount $(ROOTFS_DIR)/dev
 	-sudo umount $(ROOTFS_DIR)
 	sudo mount -o loop $(ROOTFS_RAW_IMG) $(ROOTFS_DIR)
+
+ifeq ($(IS_JENKINS),)
 	cp $(ROOTDIR)/board/multistrap.conf $(PRODUCT_OUT)
+else
+	cp $(ROOTDIR)/board/multistrap-jenkins.conf $(PRODUCT_OUT)/multistrap.conf
+endif
+
 	sed -i -e 's/MAIN_PACKAGES/$(PACKAGES_EXTRA)/g' $(PRODUCT_OUT)/multistrap.conf
 	sed -i -e 's/USERSPACE_ARCH/$(USERSPACE_ARCH)/g' $(PRODUCT_OUT)/multistrap.conf