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