Add Dockerfile for Isar image builder

Isar requires a number of extra packages compared to a Yocto build. It
also needs a newer e2fsprogs version which can be taken from backports.
Last but not least, its keystone multistrap contains a nasty bug [1]
under in jessie so that we need to pull the updated version from
stretch.

The value of having this image still based on jessie is that it can be
used for both purposes: Yocto (2.1/2.2) and Isar builds. We push it
along the kas core image as kas-isar during the CI run.

Isar still requires some raised privileges. Therefore, the image has to
be started with the additional switches "--cap-add=SYS_ADMIN
--cap-add=MKNOD --device $(/sbin/losetup -f)".

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=774698

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Jan Kiszka 2017-06-28 19:25:58 +02:00 committed by Daniel Wagner
parent b1f343a3fd
commit 1e405f155d
2 changed files with 31 additions and 6 deletions

View File

@ -19,14 +19,17 @@ install:
script:
- scripts/checkcode.sh .
- docker build -t kasproject/kas .
- docker build -t kasproject/kas-isar -f Dockerfile.isar .
after_success:
- if [ "$TRAVIS_BRANCH" == "master" ] || [ "$TRAVIS_BRANCH" == "next" ]; then
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
docker push kasproject/kas;
if [ "$TRAVIS_BRANCH" == "master" ] && git describe --exact-match 2>/dev/null >/dev/null; then
VERSION="$(/usr/bin/python3 -c 'from kas.__version__ import __version__; print(__version__)')";
docker tag kasproject/kas kasproject/kas:$VERSION;
docker push kasproject/kas:$VERSION;
fi
for IMAGE in kasproject/kas kasproject/kas-isar; do
docker push $IMAGE;
if [ "$TRAVIS_BRANCH" == "master" ] && git describe --exact-match 2>/dev/null >/dev/null; then
VERSION="$(/usr/bin/python3 -c 'from kas import __version__; print(__version__)')";
docker tag $IMAGE $IMAGE:$VERSION;
docker push $IMAGE:$VERSION;
fi
done
fi

22
Dockerfile.isar Normal file
View File

@ -0,0 +1,22 @@
FROM kasproject/kas:latest
ENV DEBIAN_FRONTEND noninteractive
RUN echo 'deb http://deb.debian.org/debian jessie-backports main' >> /etc/apt/sources.list.d/backports.list && \
echo 'deb http://deb.debian.org/debian stretch main' >> /etc/apt/sources.list.d/backports.list
ENV LC_ALL=en_US.UTF-8
RUN apt-get update && \
apt-get install -y -f --no-install-recommends --target-release jessie \
autoconf automake gdisk libtool bash-completion \
sudo grub2 grub-efi-amd64-bin grub-efi-ia32-bin qemu-user-static \
reprepro python3 && \
apt-get install -y -f --no-install-recommends --target-release jessie-backports \
e2fsprogs && \
apt-get install -y -f --no-install-recommends --target-release stretch \
multistrap && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp*
RUN echo "builder ALL=NOPASSWD: ALL" > /etc/sudoers.d/builder-nopasswd && \
chmod 660 /etc/sudoers.d/builder-nopasswd