util/docker: Update coreboot-jenkins-node dockerfile
Because earlier versions of debian set /dev as a standard tmpfs filesystem, that was a simple place to build. Now, this has been changed and /dev isn't a standard tmpfs that will grow to 50% of memory. It's a fixed, very small size, and can no longer even be resized. Because of this, create a new directory to build in and add it to /etc/fstab. Mount it when the container is started. As long as we're at it, make the other build directories (ccache and slave-root/workspace) tmpfs as well. The builders we're using now have plenty of memory, so don't write any of the files to disk. Update the Makefile to get rid of all references to ccache directory. Change-Id: I21fd2c4395d7ffb9428172f035991338658cd907 Signed-off-by: Martin Roth <gaumless@gmail.com> Reviewed-on: https://review.coreboot.org/27470 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
125506e6fb
commit
30b7c31547
|
@ -22,9 +22,6 @@ export COREBOOT_JENKINS_PORT?=49151
|
||||||
# Local cache directory - for storing files shared with the docker image
|
# Local cache directory - for storing files shared with the docker image
|
||||||
export COREBOOT_JENKINS_CACHE_DIR?=/srv/docker/coreboot-builder/cache
|
export COREBOOT_JENKINS_CACHE_DIR?=/srv/docker/coreboot-builder/cache
|
||||||
|
|
||||||
# Local ccache directory
|
|
||||||
export COREBOOT_JENKINS_CCACHE_DIR?=/srv/docker/coreboot-builder/ccache
|
|
||||||
|
|
||||||
# Name of the jenkins container
|
# Name of the jenkins container
|
||||||
export COREBOOT_JENKINS_CONTAINER?=coreboot_jenkins
|
export COREBOOT_JENKINS_CONTAINER?=coreboot_jenkins
|
||||||
|
|
||||||
|
@ -134,33 +131,19 @@ docker-jenkins-server: test-docker
|
||||||
else \
|
else \
|
||||||
rm -f "$(COREBOOT_JENKINS_CACHE_DIR)/testfile"; \
|
rm -f "$(COREBOOT_JENKINS_CACHE_DIR)/testfile"; \
|
||||||
fi
|
fi
|
||||||
@if [ ! -d "$(COREBOOT_JENKINS_CCACHE_DIR)" ]; then \
|
|
||||||
printf "\nError: %s does not exist.\n" "$(COREBOOT_JENKINS_CCACHE_DIR)"; \
|
|
||||||
printf "Please run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CCACHE_DIR)"; \
|
|
||||||
false; \
|
|
||||||
fi
|
|
||||||
@if ! touch "$(COREBOOT_JENKINS_CCACHE_DIR)/testfile" 2>/dev/null; then \
|
|
||||||
printf "\nError: Cannot create file in %s." "$(COREBOOT_JENKINS_CCACHE_DIR)"; \
|
|
||||||
printf 'Please run:\nsudo chown -R $$(whoami):$$(whoami) %s\n\n' "$(COREBOOT_JENKINS_CCACHE_DIR)"; \
|
|
||||||
else \
|
|
||||||
rm -f "$(COREBOOT_JENKINS_CCACHE_DIR)/testfile"; \
|
|
||||||
fi
|
|
||||||
$(DOCKER) run -d --privileged --restart=always \
|
$(DOCKER) run -d --privileged --restart=always \
|
||||||
-p $(COREBOOT_JENKINS_PORT):49151 \
|
-p $(COREBOOT_JENKINS_PORT):49151 \
|
||||||
-v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \
|
-v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \
|
||||||
-v $(COREBOOT_JENKINS_CCACHE_DIR):/home/coreboot/.ccache \
|
|
||||||
--name=$(COREBOOT_JENKINS_CONTAINER) \
|
--name=$(COREBOOT_JENKINS_CONTAINER) \
|
||||||
coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION)
|
coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION)
|
||||||
|
|
||||||
docker-jenkins-shell: test-docker
|
docker-jenkins-shell: test-docker
|
||||||
@if [ ! -d $(COREBOOT_JENKINS_CACHE_DIR) ]; then printf "\nError: %s does not exist.\nPlease run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CACHE_DIR)" "$(COREBOOT_JENKINS_CACHE_DIR)"; false; fi
|
@if [ ! -d $(COREBOOT_JENKINS_CACHE_DIR) ]; then printf "\nError: %s does not exist.\nPlease run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CACHE_DIR)" "$(COREBOOT_JENKINS_CACHE_DIR)"; false; fi
|
||||||
@if [ ! -d $(COREBOOT_JENKINS_CCACHE_DIR) ]; then printf "\nError: %s does not exist.\nPlease run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CCACHE_DIR)" "$(COREBOOT_JENKINS_CCACHE_DIR)"; false; fi
|
|
||||||
$(DOCKER) run -u root -it --privileged \
|
$(DOCKER) run -u root -it --privileged \
|
||||||
--entrypoint="/bin/bash" \
|
--entrypoint="/bin/bash" \
|
||||||
-p $(COREBOOT_JENKINS_PORT):49151 \
|
-p $(COREBOOT_JENKINS_PORT):49151 \
|
||||||
-v $(top):/home/coreboot/coreboot \
|
-v $(top):/home/coreboot/coreboot \
|
||||||
-v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \
|
-v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \
|
||||||
-v $(COREBOOT_JENKINS_CCACHE_DIR):/home/coreboot/.ccache \
|
|
||||||
--name=$(COREBOOT_JENKINS_CONTAINER) \
|
--name=$(COREBOOT_JENKINS_CONTAINER) \
|
||||||
--rm coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION)
|
--rm coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION)
|
||||||
|
|
||||||
|
@ -195,7 +178,6 @@ help:
|
||||||
@echo "Variables:"
|
@echo "Variables:"
|
||||||
@echo " COREBOOT_JENKINS_PORT=$(COREBOOT_JENKINS_PORT)"
|
@echo " COREBOOT_JENKINS_PORT=$(COREBOOT_JENKINS_PORT)"
|
||||||
@echo " COREBOOT_JENKINS_CACHE_DIR=$(COREBOOT_JENKINS_CACHE_DIR)"
|
@echo " COREBOOT_JENKINS_CACHE_DIR=$(COREBOOT_JENKINS_CACHE_DIR)"
|
||||||
@echo " COREBOOT_JENKINS_CCACHE_DIR=$(COREBOOT_JENKINS_CCACHE_DIR)"
|
|
||||||
@echo " COREBOOT_JENKINS_CONTAINER=$(COREBOOT_JENKINS_CONTAINER)"
|
@echo " COREBOOT_JENKINS_CONTAINER=$(COREBOOT_JENKINS_CONTAINER)"
|
||||||
@echo " COREBOOT_CONTAINER_VERSION=$(COREBOOT_CONTAINER_VERSION)"
|
@echo " COREBOOT_CONTAINER_VERSION=$(COREBOOT_CONTAINER_VERSION)"
|
||||||
@echo " DOCKER_COMMIT=$(DOCKER_COMMIT)"
|
@echo " DOCKER_COMMIT=$(DOCKER_COMMIT)"
|
||||||
|
|
|
@ -17,9 +17,6 @@ FROM coreboot/coreboot-sdk:{{SDK_VERSION}}
|
||||||
MAINTAINER Martin Roth <martin@coreboot.org>
|
MAINTAINER Martin Roth <martin@coreboot.org>
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
# Check to make sure /dev is a tmpfs file system
|
|
||||||
RUN mount | grep "on /dev type tmpfs" > /dev/null || exit 1
|
|
||||||
|
|
||||||
RUN apt-get -y update && \
|
RUN apt-get -y update && \
|
||||||
apt-get -y install \
|
apt-get -y install \
|
||||||
lua5.3 liblua5.3-dev openjdk-8-jre-headless openssh-server && \
|
lua5.3 liblua5.3-dev openjdk-8-jre-headless openssh-server && \
|
||||||
|
@ -37,6 +34,16 @@ RUN mkdir /var/run/sshd && \
|
||||||
chmod 0755 /var/run/sshd && \
|
chmod 0755 /var/run/sshd && \
|
||||||
/usr/bin/ssh-keygen -A
|
/usr/bin/ssh-keygen -A
|
||||||
|
|
||||||
|
# Create /cb-build as a tmpfs directory to build in
|
||||||
|
RUN mkdir /cb-build && \
|
||||||
|
chown coreboot:coreboot /cb-build && \
|
||||||
|
echo "tmpfs /cb-build tmpfs rw,mode=1777 0 0" > /etc/fstab && \
|
||||||
|
mkdir -p /home/coreboot/slave-root/workspace && \
|
||||||
|
chown -R coreboot:coreboot /home/coreboot/slave-root && \
|
||||||
|
echo "tmpfs /home/coreboot/slave-root/workspace tmpfs rw,mode=1777 0 0" >> /etc/fstab && \
|
||||||
|
chown coreboot:coreboot /home/coreboot/.ccache && \
|
||||||
|
echo "tmpfs /home/coreboot/.ccache tmpfs rw,mode=1777 0 0" >> /etc/fstab
|
||||||
|
|
||||||
# Build encapsulate tool
|
# Build encapsulate tool
|
||||||
ADD https://raw.githubusercontent.com/pgeorgi/encapsulate/master/encapsulate.c /tmp/encapsulate.c
|
ADD https://raw.githubusercontent.com/pgeorgi/encapsulate/master/encapsulate.c /tmp/encapsulate.c
|
||||||
RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
|
RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
|
||||||
|
@ -44,6 +51,11 @@ RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
|
||||||
chmod +s /usr/sbin/encapsulate
|
chmod +s /usr/sbin/encapsulate
|
||||||
|
|
||||||
VOLUME /data/cache
|
VOLUME /data/cache
|
||||||
ENTRYPOINT mkdir /dev/cb-build && chown coreboot /dev/cb-build && /usr/sbin/sshd -p 49151 -D
|
ENTRYPOINT mount /cb-build && \
|
||||||
|
mount /home/coreboot/slave-root/workspace && \
|
||||||
|
chown -R coreboot:coreboot /home/coreboot/slave-root && \
|
||||||
|
mount /home/coreboot/.ccache && \
|
||||||
|
chown coreboot:coreboot /home/coreboot/.ccache && \
|
||||||
|
/usr/sbin/sshd -p 49151 -D
|
||||||
EXPOSE 49151
|
EXPOSE 49151
|
||||||
ENV PATH $PATH:/usr/sbin
|
ENV PATH $PATH:/usr/sbin
|
||||||
|
|
Loading…
Reference in New Issue