diff options
author | Riku Voipio <riku.voipio@linaro.org> | 2017-04-07 10:24:30 +0300 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2017-04-07 08:28:47 +0000 |
commit | ccf0784bfcff79d63513785f9dd7152995a8d10f (patch) | |
tree | 78a6e8fb7aee69bb0b6d049c388c30efead76ce5 /xenial-arm64-tcwg-base | |
parent | 8297f29b57d1237f782ab3f81206f9c57dd87d9a (diff) |
dockerfiles: reorganize for recursive rebuilds
prerequisite for recursive rebuilds of images on changes.
Use the command "tree" to make sense of the new layout:
|-- ./trusty-amd64-tcwg-base
| |-- ./trusty-amd64-tcwg-base/trusty-amd64-tcwg-build
| `-- ./trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev
|-- ./trusty-arm64-tcwg-base
| |-- ./trusty-arm64-tcwg-base/trusty-arm64-tcwg-build
| | `-- ./trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test
| `-- ./trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev
|-- ./trusty-armhf-tcwg-base
| `-- ./trusty-armhf-tcwg-base/trusty-armhf-tcwg-build
| `-- ./trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test
|-- ./trusty-i386-tcwg-base
| `-- ./trusty-i386-tcwg-base/trusty-i386-tcwg-build
|-- ./xenial-amd64-tcwg-base
| |-- ./xenial-amd64-tcwg-base/xenial-amd64-tcwg-build
| `-- ./xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev
| `-- ./xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go
|-- ./xenial-arm64-tcwg-base
| |-- ./xenial-arm64-tcwg-base/xenial-arm64-tcwg-build
| | `-- ./xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test
| `-- ./xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev
|-- ./xenial-armhf-tcwg-base
| `-- ./xenial-armhf-tcwg-base/xenial-armhf-tcwg-build
| `-- ./xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test
`-- ./xenial-i386-tcwg-base
`-- ./xenial-i386-tcwg-base/xenial-i386-tcwg-build
Notes:
- ci-base- images are not handled here
- relative paths in tcwg builds have been adjusted
- tcwg jobs also build their parents recursively. This hasn't been
touched in this commit, but we'll probably want to optimize the CI
Change-Id: I3281c5c37d695040c4e0d7a1c13790a90f3ef3c2
Diffstat (limited to 'xenial-arm64-tcwg-base')
8 files changed, 147 insertions, 3 deletions
diff --git a/xenial-arm64-tcwg-base/build-depends.list b/xenial-arm64-tcwg-base/build-depends.list deleted file mode 100644 index ec5f23d7..00000000 --- a/xenial-arm64-tcwg-base/build-depends.list +++ /dev/null @@ -1,2 +0,0 @@ -xenial-arm64-tcwg-build -xenial-arm64-tcwg-dev diff --git a/xenial-arm64-tcwg-base/build-depends.sh b/xenial-arm64-tcwg-base/build-depends.sh deleted file mode 120000 index ba9a1f9c..00000000 --- a/xenial-arm64-tcwg-base/build-depends.sh +++ /dev/null @@ -1 +0,0 @@ -../xenial-amd64-tcwg-base/build-depends.sh
\ No newline at end of file diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile new file mode 100644 index 00000000..c0ac5e70 --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile @@ -0,0 +1,24 @@ +FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial + +RUN groupadd -g 9000 tcwg-infra \ + && useradd -m -g tcwg-infra -u 11827 tcwg-buildslave \ + && echo 'tcwg-buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ + && chmod 0440 /etc/sudoers.d/jenkins \ + && mkdir -p /home/tcwg-buildslave/workspace + +COPY tcwg-buildslave /home/tcwg-buildslave +RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \ + && chmod 0700 /home/tcwg-buildslave/.ssh/ + +# Unfortunately, VOLUME doesn't support bind-mounts for portability reasons. +# Therefore, the bind-mounts for the following paths are configured in +# the ci.linaro.org's docker plugin. +# Sources caches (read-only): +# /home/tcwg-buildslave/snapshots-ref:/home/tcwg-buildslave/snapshots-ref:ro +# Jenkins .jar cache (read-write): +# /home/tcwg-buildslave/.jenkins:/home/tcwg-buildslave/.jenkins:rw + +# We write most of the data inside workspace, so make it a scratch mount. +# Note that bind-mounting workspace from host will make jobs with parallel +# builds fail. +VOLUME /home/tcwg-buildslave/workspace diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/build.sh b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/build.sh new file mode 100755 index 00000000..8926d874 --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/build.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -rf tcwg-buildslave +} + +export LANG=C +distro=$(basename ${PWD} | cut -f1 -d '-') +arch=$(basename ${PWD} | cut -f2 -d '-') +name=$(basename ${PWD} | cut -f3- -d '-') +image=linaro/ci-${arch}-${name}-ubuntu:${distro} + +rsync -a ../../tcwg-buildslave/ ./tcwg-buildslave/ + +(cd ..; ./build.sh) +docker pull $image 2>/dev/null || true +docker build --tag=$image . diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile new file mode 100644 index 00000000..76dcac7f --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile @@ -0,0 +1,7 @@ +FROM linaro/ci-arm64-tcwg-build-ubuntu:xenial + +COPY tcwg-buildslave/.ssh /root/.ssh + +RUN chmod 0700 /root/.ssh/ \ + && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ + && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh new file mode 100755 index 00000000..275a50eb --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -rf tcwg-buildslave +} + +export LANG=C +distro=$(basename ${PWD} | cut -f1 -d '-') +arch=$(basename ${PWD} | cut -f2 -d '-') +name=$(basename ${PWD} | cut -f3- -d '-') +image=linaro/ci-${arch}-${name}-ubuntu:${distro} + +rsync -a ../../../tcwg-buildslave/ ./tcwg-buildslave/ + +(cd ..; ./build.sh) +docker pull $image 2>/dev/null || true +docker build --tag=$image . diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile new file mode 100644 index 00000000..d59a3b71 --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile @@ -0,0 +1,46 @@ +FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial + +COPY run.sh . +COPY start.sh . + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + software-properties-common \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + apt-file \ + git-gui \ + git-review \ + git-svn \ + gnat-5 \ + less \ + libgmp-dev \ + libmpc-dev \ + libmpfr-dev \ + mc \ + screen \ + stgit \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \ + && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && apt-file update + +# Create directories required for X11. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix + +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/build.sh b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/build.sh new file mode 100755 index 00000000..8d81f854 --- /dev/null +++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/build.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f start.sh run.sh +} + +export LANG=C +distro=$(basename ${PWD} | cut -f1 -d '-') +arch=$(basename ${PWD} | cut -f2 -d '-') +name=$(basename ${PWD} | cut -f3- -d '-') +image=linaro/ci-${arch}-${name}-ubuntu:${distro} + +cat ../../xenial-amd64-tcwg-dev/start.sh.tmpl \ + | sed -e "s#@IMAGE@#$image#g" \ + -e "s#@DISTRO@#$distro#g" > start.sh +chmod +x start.sh +cp ../../xenial-amd64-tcwg-dev/run.sh.tmpl run.sh + +(cd ..; ./build.sh) +docker pull $image 2>/dev/null || true +docker build --tag=$image . |