30b7c31547
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>
61 lines
2.4 KiB
Docker
61 lines
2.4 KiB
Docker
# This dockerfile is not meant to be used directly by docker. The
|
|
# {{}} varibles are replaced with values by the makefile. Please generate
|
|
# the docker image for this file by running:
|
|
#
|
|
# make coreboot-jenkins-node
|
|
#
|
|
# Variables can be updated on the make command line or left blank to use
|
|
# the default values set by the makefile.
|
|
#
|
|
# SDK_VERSION is used to name the version of the coreboot sdk to use.
|
|
# Typically, this corresponds to the toolchain version.
|
|
# SSH_KEY is the contents of the file coreboot-jenkins-node/authorized_keys
|
|
# Because we're piping the contents of the dockerfile into the
|
|
# docker build command, the 'COPY' keyword isn't valid.
|
|
|
|
FROM coreboot/coreboot-sdk:{{SDK_VERSION}}
|
|
MAINTAINER Martin Roth <martin@coreboot.org>
|
|
USER root
|
|
|
|
RUN apt-get -y update && \
|
|
apt-get -y install \
|
|
lua5.3 liblua5.3-dev openjdk-8-jre-headless openssh-server && \
|
|
apt-get clean
|
|
|
|
# Because of the way that the variables are being replaced, docker's 'COPY'
|
|
# command does not work
|
|
RUN mkdir -p /home/coreboot/.ssh && \
|
|
echo "{{SSH_KEY}}" > /home/coreboot/.ssh/authorized_keys && \
|
|
chown -R coreboot:coreboot /home/coreboot/.ssh && \
|
|
chmod 0700 /home/coreboot/.ssh && \
|
|
chmod 0600 /home/coreboot/.ssh/authorized_keys
|
|
|
|
RUN mkdir /var/run/sshd && \
|
|
chmod 0755 /var/run/sshd && \
|
|
/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
|
|
ADD https://raw.githubusercontent.com/pgeorgi/encapsulate/master/encapsulate.c /tmp/encapsulate.c
|
|
RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
|
|
chown root /usr/sbin/encapsulate && \
|
|
chmod +s /usr/sbin/encapsulate
|
|
|
|
VOLUME /data/cache
|
|
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
|
|
ENV PATH $PATH:/usr/sbin
|