From b3771ebfafc1b377a1d8ccea576a38526f923b9c Mon Sep 17 00:00:00 2001 From: Loic Dachary Date: Wed, 11 Feb 2015 12:15:02 +0100 Subject: [PATCH] tests: one Dockerfile per repository:tag There cannot be a common Dockerfile for all repository:tag combination of a given operating system. The only way to customize a Dockerfile is via variable substitution and it cannot conveniently address all differences between versions. Create one Dockerfile per operating system version instead. I.e. one dockerfile for centos:7, one for centos:6 etc. Signed-off-by: Loic Dachary --- src/test/Makefile.am | 15 +++++---- src/test/{centos => centos-7}/Dockerfile.in | 0 src/test/{centos => centos-7}/ceph.spec.in | 0 src/test/{centos => centos-7}/install-deps.sh | 0 src/test/docker-test-helper.sh | 4 +-- .../{ubuntu => ubuntu-12.04}/Dockerfile.in | 0 src/test/{ubuntu => ubuntu-12.04}/debian | 0 .../{ubuntu => ubuntu-12.04}/install-deps.sh | 0 src/test/ubuntu-14.04/Dockerfile.in | 31 +++++++++++++++++++ src/test/ubuntu-14.04/debian | 1 + src/test/ubuntu-14.04/install-deps.sh | 1 + 11 files changed, 44 insertions(+), 8 deletions(-) rename src/test/{centos => centos-7}/Dockerfile.in (100%) rename src/test/{centos => centos-7}/ceph.spec.in (100%) rename src/test/{centos => centos-7}/install-deps.sh (100%) rename src/test/{ubuntu => ubuntu-12.04}/Dockerfile.in (100%) rename src/test/{ubuntu => ubuntu-12.04}/debian (100%) rename src/test/{ubuntu => ubuntu-12.04}/install-deps.sh (100%) create mode 100644 src/test/ubuntu-14.04/Dockerfile.in create mode 120000 src/test/ubuntu-14.04/debian create mode 120000 src/test/ubuntu-14.04/install-deps.sh diff --git a/src/test/Makefile.am b/src/test/Makefile.am index f0d06e22b712e..049adb8af9d55 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -264,12 +264,15 @@ check_SCRIPTS += test/ceph-disk.sh endif EXTRA_DIST += \ - $(srcdir)/test/ubuntu/Dockerfile.in \ - $(srcdir)/test/ubuntu/install-deps.sh \ - $(srcdir)/test/ubuntu/debian \ - $(srcdir)/test/centos/Dockerfile.in \ - $(srcdir)/test/centos/install-deps.sh \ - $(srcdir)/test/centos/ceph.spec.in \ + $(srcdir)/test/ubuntu-12.04/Dockerfile.in \ + $(srcdir)/test/ubuntu-12.04/install-deps.sh \ + $(srcdir)/test/ubuntu-12.04/debian \ + $(srcdir)/test/ubuntu-14.04/Dockerfile.in \ + $(srcdir)/test/ubuntu-14.04/install-deps.sh \ + $(srcdir)/test/ubuntu-14.04/debian \ + $(srcdir)/test/centos-7/Dockerfile.in \ + $(srcdir)/test/centos-7/install-deps.sh \ + $(srcdir)/test/centos-7/ceph.spec.in \ $(srcdir)/test/mon/mon-test-helpers.sh \ $(srcdir)/test/osd/osd-test-helpers.sh \ $(srcdir)/test/coverage.sh \ diff --git a/src/test/centos/Dockerfile.in b/src/test/centos-7/Dockerfile.in similarity index 100% rename from src/test/centos/Dockerfile.in rename to src/test/centos-7/Dockerfile.in diff --git a/src/test/centos/ceph.spec.in b/src/test/centos-7/ceph.spec.in similarity index 100% rename from src/test/centos/ceph.spec.in rename to src/test/centos-7/ceph.spec.in diff --git a/src/test/centos/install-deps.sh b/src/test/centos-7/install-deps.sh similarity index 100% rename from src/test/centos/install-deps.sh rename to src/test/centos-7/install-deps.sh diff --git a/src/test/docker-test-helper.sh b/src/test/docker-test-helper.sh index 1f543f4201401..2dac4e2075976 100755 --- a/src/test/docker-test-helper.sh +++ b/src/test/docker-test-helper.sh @@ -30,7 +30,7 @@ function setup_container() { local build=true if docker images $image | grep --quiet "^$image " ; then eval touch --date=$(docker inspect $image | jq '.[0].Created') $image - found=$(find -L test/$os_type/* -newer $image) + found=$(find -L test/$os_type-$os_version/* -newer $image) rm $image if test -n "$found" ; then docker rmi $image @@ -44,7 +44,7 @@ function setup_container() { # replace environment variables %%FOO%% with their content # rm -fr dockerfile - cp --dereference --recursive test/$os_type dockerfile + cp --dereference --recursive test/$os_type-$os_version dockerfile os_version=$os_version user_id=$(id -u) \ perl -p -e 's/%%(\w+)%%/$ENV{$1}/g' \ dockerfile/Dockerfile.in > dockerfile/Dockerfile diff --git a/src/test/ubuntu/Dockerfile.in b/src/test/ubuntu-12.04/Dockerfile.in similarity index 100% rename from src/test/ubuntu/Dockerfile.in rename to src/test/ubuntu-12.04/Dockerfile.in diff --git a/src/test/ubuntu/debian b/src/test/ubuntu-12.04/debian similarity index 100% rename from src/test/ubuntu/debian rename to src/test/ubuntu-12.04/debian diff --git a/src/test/ubuntu/install-deps.sh b/src/test/ubuntu-12.04/install-deps.sh similarity index 100% rename from src/test/ubuntu/install-deps.sh rename to src/test/ubuntu-12.04/install-deps.sh diff --git a/src/test/ubuntu-14.04/Dockerfile.in b/src/test/ubuntu-14.04/Dockerfile.in new file mode 100644 index 0000000000000..3cf842ebee8eb --- /dev/null +++ b/src/test/ubuntu-14.04/Dockerfile.in @@ -0,0 +1,31 @@ +# +# Copyright (C) 2014 Red Hat +# +# Author: Loic Dachary +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library Public License for more details. +# +# Environment variables are substituted via envsubst(1) +# +# user_id=$(id -u) +# os_version= the desired REPOSITORY TAG +# +FROM ubuntu:%%os_version%% + +COPY install-deps.sh /root/ +RUN mkdir /root/debian +COPY debian /root/debian/ +RUN apt-get update +# build dependencies +RUN cd /root ; ./install-deps.sh +# development tools +RUN apt-get install -y ccache valgrind gdb python-virtualenv gdisk kpartx hdparm jq xmlstarlet +RUN useradd -M --uid %%user_id%% %%USER%% && echo '%%USER%% ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers diff --git a/src/test/ubuntu-14.04/debian b/src/test/ubuntu-14.04/debian new file mode 120000 index 0000000000000..dfdd39e6b2ba2 --- /dev/null +++ b/src/test/ubuntu-14.04/debian @@ -0,0 +1 @@ +../../../debian \ No newline at end of file diff --git a/src/test/ubuntu-14.04/install-deps.sh b/src/test/ubuntu-14.04/install-deps.sh new file mode 120000 index 0000000000000..fc9c78b27ff6f --- /dev/null +++ b/src/test/ubuntu-14.04/install-deps.sh @@ -0,0 +1 @@ +../../../install-deps.sh \ No newline at end of file -- 2.39.5