Switch up testing to allow separation of image creation and building
authorJonathan Dieter <jdieter@gmail.com>
Wed, 14 Nov 2018 22:16:33 +0000 (22:16 +0000)
committerJonathan Dieter <jdieter@gmail.com>
Wed, 14 Nov 2018 22:16:33 +0000 (22:16 +0000)
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>:
37 files changed:
.gitignore
DOCKER_TESTING.md
autotest/centos-latest/Dockerfile [deleted file]
autotest/centos-latest/build.sh [new file with mode: 0755]
autotest/centos-latest/build/Dockerfile [new file with mode: 0644]
autotest/centos-latest/docker-compose.yml [deleted file]
autotest/centos-latest/prep.sh [new file with mode: 0755]
autotest/centos-latest/prep/Dockerfile [new file with mode: 0644]
autotest/centos-latest/test.sh [new file with mode: 0755]
autotest/debian-latest/Dockerfile [deleted file]
autotest/debian-latest/build.sh [new file with mode: 0755]
autotest/debian-latest/build/Dockerfile [new file with mode: 0644]
autotest/debian-latest/docker-compose.yml [deleted file]
autotest/debian-latest/prep.sh [new file with mode: 0755]
autotest/debian-latest/prep/Dockerfile [new file with mode: 0644]
autotest/debian-latest/test.sh [new file with mode: 0755]
autotest/fedora-latest/Dockerfile [deleted file]
autotest/fedora-latest/build.sh [new file with mode: 0755]
autotest/fedora-latest/build/Dockerfile [new file with mode: 0644]
autotest/fedora-latest/docker-compose.yml [deleted file]
autotest/fedora-latest/prep.sh [new file with mode: 0755]
autotest/fedora-latest/prep/Dockerfile [new file with mode: 0644]
autotest/fedora-latest/test.sh [new file with mode: 0755]
autotest/opensuse-leap/Dockerfile [deleted file]
autotest/opensuse-leap/build.sh [new file with mode: 0755]
autotest/opensuse-leap/build/Dockerfile [new file with mode: 0644]
autotest/opensuse-leap/docker-compose.yml [deleted file]
autotest/opensuse-leap/prep.sh [new file with mode: 0755]
autotest/opensuse-leap/prep/Dockerfile [new file with mode: 0644]
autotest/opensuse-leap/test.sh [new file with mode: 0755]
autotest/ubuntu-rolling/Dockerfile [deleted file]
autotest/ubuntu-rolling/build.sh [new file with mode: 0755]
autotest/ubuntu-rolling/build/Dockerfile [new file with mode: 0644]
autotest/ubuntu-rolling/docker-compose.yml [deleted file]
autotest/ubuntu-rolling/prep.sh [new file with mode: 0755]
autotest/ubuntu-rolling/prep/Dockerfile [new file with mode: 0644]
autotest/ubuntu-rolling/test.sh [new file with mode: 0755]

index 18d405fabb575ca5dbd5c4935916e29323c5821d..726557440e5031e2e71849e6253826945aa98fc5 100644 (file)
@@ -1,4 +1,4 @@
 cov-int
-build
+/build
 test/abi/new
 test/abi/stable/ABI.dump
index ec2a6a4a318a9024a0b598baf3916e24f6322b8f..51b00fcd1bd66df1c6bd38ffa3816e188f3f12f1 100644 (file)
@@ -7,4 +7,4 @@ Dockerfiles are available to test the latest build on different platforms:
  * debian:latest - autotest/debian-latest
 
 To test, in the project root directory, run:<br>
-```docker-compose --file autotest/<platform directory>/docker-compose.yml build```
\ No newline at end of file
+```./autotest/<platform directory>/test.sh```
diff --git a/autotest/centos-latest/Dockerfile b/autotest/centos-latest/Dockerfile
deleted file mode 100644 (file)
index 037e2ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-FROM centos:latest
-ADD ./ /code
-WORKDIR /code
-RUN yum -y install epel-release
-RUN yum -y update epel-release
-RUN yum -y install meson gcc "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)"
-RUN meson build --auto-features=enabled
-RUN ninja-build -C build test
diff --git a/autotest/centos-latest/build.sh b/autotest/centos-latest/build.sh
new file mode 100755 (executable)
index 0000000..02aef2c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Build zchunk-centos:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-centos:latest)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/centos-latest/prep.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker image rm zchunk-centos:test -f 2>/dev/null 1>/dev/null
+docker image build -t zchunk-centos:test --file autotest/centos-latest/build/Dockerfile ./
+
diff --git a/autotest/centos-latest/build/Dockerfile b/autotest/centos-latest/build/Dockerfile
new file mode 100644 (file)
index 0000000..96a6ccd
--- /dev/null
@@ -0,0 +1,6 @@
+FROM zchunk-centos:latest
+ADD ./ /code
+WORKDIR /code
+RUN meson build --auto-features=enabled && cd build && ninja-build
+WORKDIR /code/build
+CMD ninja-build test
diff --git a/autotest/centos-latest/docker-compose.yml b/autotest/centos-latest/docker-compose.yml
deleted file mode 100644 (file)
index 712ca1d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-version: '3'
-services:
-  test:
-    build:
-      context: ../../
-      dockerfile: ./autotest/centos-latest/Dockerfile
diff --git a/autotest/centos-latest/prep.sh b/autotest/centos-latest/prep.sh
new file mode 100755 (executable)
index 0000000..a565d3d
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+docker pull centos:latest
+if [ "$?" -ne 0 ]; then
+        exit 1
+fi
+docker image rm -f zchunk-centos:latest 2>/dev/null 1>/dev/null
+docker image build -t zchunk-centos:latest --file autotest/centos-latest/prep/Dockerfile ./
diff --git a/autotest/centos-latest/prep/Dockerfile b/autotest/centos-latest/prep/Dockerfile
new file mode 100644 (file)
index 0000000..7dd2377
--- /dev/null
@@ -0,0 +1,2 @@
+FROM centos:latest
+RUN yum -y install epel-release && yum -y update epel-release && yum -y install meson gcc "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)" && rm -rf /var/cache/yum
diff --git a/autotest/centos-latest/test.sh b/autotest/centos-latest/test.sh
new file mode 100755 (executable)
index 0000000..dd547c4
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Build zchunk-centos:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-centos:test)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/centos-latest/build.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker rm zchunk-centos-test -f 2>/dev/null 1>/dev/null
+docker run --name zchunk-centos-test zchunk-centos:test
+RETVAL=$?
+docker rm zchunk-centos-test -f 2>/dev/null 1>/dev/null
+docker image rm zchunk-centos:test -f 2>/dev/null 1>/dev/null
+exit $RETVAL
diff --git a/autotest/debian-latest/Dockerfile b/autotest/debian-latest/Dockerfile
deleted file mode 100644 (file)
index 149a9d9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM debian:latest
-ADD ./ /code
-WORKDIR /code
-RUN /bin/bash -c 'echo deb http://ftp.debian.org/debian stretch-backports main >> /etc/apt/sources.list'
-RUN apt-get update
-RUN cat /etc/apt/sources.list
-RUN /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -yqt stretch-backports install meson libzstd-dev'
-RUN /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -yq install gcc pkg-config libcurl4-openssl-dev libssl-dev'
-RUN meson build
-RUN ninja -C build test
diff --git a/autotest/debian-latest/build.sh b/autotest/debian-latest/build.sh
new file mode 100755 (executable)
index 0000000..c2c21b4
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Build zchunk-debian:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-debian:latest)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/debian-latest/prep.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker image rm zchunk-debian:test -f 2>/dev/null 1>/dev/null
+docker image build -t zchunk-debian:test --file autotest/debian-latest/build/Dockerfile ./
+
diff --git a/autotest/debian-latest/build/Dockerfile b/autotest/debian-latest/build/Dockerfile
new file mode 100644 (file)
index 0000000..73dac8d
--- /dev/null
@@ -0,0 +1,6 @@
+FROM zchunk-debian:latest
+ADD ./ /code
+WORKDIR /code
+RUN meson build && cd build && ninja
+WORKDIR /code/build
+CMD ninja test
diff --git a/autotest/debian-latest/docker-compose.yml b/autotest/debian-latest/docker-compose.yml
deleted file mode 100644 (file)
index d43de16..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-version: '3'
-services:
-  test:
-    build:
-      context: ../../
-      dockerfile: ./autotest/debian-latest/Dockerfile
diff --git a/autotest/debian-latest/prep.sh b/autotest/debian-latest/prep.sh
new file mode 100755 (executable)
index 0000000..b0a0ec8
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+docker pull debian:latest
+if [ "$?" -ne 0 ]; then
+        exit 1
+fi
+docker image rm -f zchunk-debian:latest 2>/dev/null 1>/dev/null
+docker image build -t zchunk-debian:latest --file autotest/debian-latest/prep/Dockerfile ./
diff --git a/autotest/debian-latest/prep/Dockerfile b/autotest/debian-latest/prep/Dockerfile
new file mode 100644 (file)
index 0000000..86bf1e0
--- /dev/null
@@ -0,0 +1,2 @@
+FROM debian:latest
+RUN /bin/bash -c 'echo deb http://ftp.debian.org/debian stretch-backports main >> /etc/apt/sources.list && apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get -yqt stretch-backports install meson libzstd-dev && apt-get -yq install gcc pkg-config libcurl4-openssl-dev libssl-dev'
diff --git a/autotest/debian-latest/test.sh b/autotest/debian-latest/test.sh
new file mode 100755 (executable)
index 0000000..4bc1ab4
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Build zchunk-debian:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-debian:test)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/debian-latest/build.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker rm zchunk-debian-test -f 2>/dev/null 1>/dev/null
+docker run --name zchunk-debian-test zchunk-debian:test
+RETVAL=$?
+docker rm zchunk-debian-test -f 2>/dev/null 1>/dev/null
+docker image rm zchunk-debian:test -f 2>/dev/null 1>/dev/null
+exit $RETVAL
diff --git a/autotest/fedora-latest/Dockerfile b/autotest/fedora-latest/Dockerfile
deleted file mode 100644 (file)
index 435113e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM fedora:latest
-ADD ./ /code
-WORKDIR /code
-RUN dnf -y install meson gcc "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)"
-RUN meson build --auto-features=enabled
-RUN ninja -C build test
diff --git a/autotest/fedora-latest/build.sh b/autotest/fedora-latest/build.sh
new file mode 100755 (executable)
index 0000000..d988967
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Build zchunk-fedora:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-fedora:latest)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/fedora-latest/prep.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker image rm zchunk-fedora:test -f 2>/dev/null 1>/dev/null
+docker image build -t zchunk-fedora:test --file autotest/fedora-latest/build/Dockerfile ./
+
diff --git a/autotest/fedora-latest/build/Dockerfile b/autotest/fedora-latest/build/Dockerfile
new file mode 100644 (file)
index 0000000..902f3ad
--- /dev/null
@@ -0,0 +1,6 @@
+FROM zchunk-fedora:latest
+ADD ./ /code
+WORKDIR /code
+RUN meson build && cd build && ninja
+WORKDIR /code/build
+CMD ninja test
diff --git a/autotest/fedora-latest/docker-compose.yml b/autotest/fedora-latest/docker-compose.yml
deleted file mode 100644 (file)
index 7069e3d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-version: '3'
-services:
-  test:
-    build:
-      context: ../../
-      dockerfile: ./autotest/fedora-latest/Dockerfile
diff --git a/autotest/fedora-latest/prep.sh b/autotest/fedora-latest/prep.sh
new file mode 100755 (executable)
index 0000000..9095923
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+docker pull fedora:latest
+if [ "$?" -ne 0 ]; then
+        exit 1
+fi
+docker image rm -f zchunk-fedora:latest 2>/dev/null 1>/dev/null
+docker image build -t zchunk-fedora:latest --file autotest/fedora-latest/prep/Dockerfile ./
diff --git a/autotest/fedora-latest/prep/Dockerfile b/autotest/fedora-latest/prep/Dockerfile
new file mode 100644 (file)
index 0000000..4e7944d
--- /dev/null
@@ -0,0 +1,2 @@
+FROM fedora:latest
+RUN dnf -y install meson gcc "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)" && rm -rf /var/cache/dnf
diff --git a/autotest/fedora-latest/test.sh b/autotest/fedora-latest/test.sh
new file mode 100755 (executable)
index 0000000..3673dcf
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Build zchunk-fedora:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-fedora:test)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/fedora-latest/build.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker rm zchunk-fedora-test -f 2>/dev/null 1>/dev/null
+docker run --name zchunk-fedora-test zchunk-fedora:test
+RETVAL=$?
+docker rm zchunk-fedora-test -f 2>/dev/null 1>/dev/null
+docker image rm zchunk-fedora:test -f 2>/dev/null 1>/dev/null
+exit $RETVAL
diff --git a/autotest/opensuse-leap/Dockerfile b/autotest/opensuse-leap/Dockerfile
deleted file mode 100644 (file)
index aae3866..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM opensuse/leap
-ADD ./ /code
-WORKDIR /code
-RUN zypper --non-interactive install meson gcc pkgconfig "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)"
-RUN meson build
-RUN ninja -C build test
diff --git a/autotest/opensuse-leap/build.sh b/autotest/opensuse-leap/build.sh
new file mode 100755 (executable)
index 0000000..c1bf612
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Build zchunk-opensuse:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-opensuse:latest)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/opensuse-leap/prep.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker image rm zchunk-opensuse:test -f 2>/dev/null 1>/dev/null
+docker image build -t zchunk-opensuse:test --file autotest/opensuse-leap/build/Dockerfile ./
+
diff --git a/autotest/opensuse-leap/build/Dockerfile b/autotest/opensuse-leap/build/Dockerfile
new file mode 100644 (file)
index 0000000..157b2c5
--- /dev/null
@@ -0,0 +1,6 @@
+FROM zchunk-opensuse:latest
+ADD ./ /code
+WORKDIR /code
+RUN meson build && cd build && ninja
+WORKDIR /code/build
+CMD ninja test
diff --git a/autotest/opensuse-leap/docker-compose.yml b/autotest/opensuse-leap/docker-compose.yml
deleted file mode 100644 (file)
index f305465..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-version: '3'
-services:
-  test:
-    build:
-      context: ../../
-      dockerfile: ./autotest/opensuse-leap/Dockerfile
diff --git a/autotest/opensuse-leap/prep.sh b/autotest/opensuse-leap/prep.sh
new file mode 100755 (executable)
index 0000000..f1a0c89
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+docker pull opensuse/leap
+if [ "$?" -ne 0 ]; then
+        exit 1
+fi
+docker image rm -f zchunk-opensuse:latest 2>/dev/null 1>/dev/null
+docker image build -t zchunk-opensuse:latest --file autotest/opensuse-leap/prep/Dockerfile ./
diff --git a/autotest/opensuse-leap/prep/Dockerfile b/autotest/opensuse-leap/prep/Dockerfile
new file mode 100644 (file)
index 0000000..9b66e9a
--- /dev/null
@@ -0,0 +1,2 @@
+FROM opensuse/leap
+RUN zypper --non-interactive install meson gcc pkgconfig "pkgconfig(libzstd)" "pkgconfig(libcurl)" "pkgconfig(openssl)" && rm -rf /var/cache/zypp
diff --git a/autotest/opensuse-leap/test.sh b/autotest/opensuse-leap/test.sh
new file mode 100755 (executable)
index 0000000..93fdb4f
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Build zchunk-opensuse:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-opensuse:test)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/opensuse-leap/build.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker rm zchunk-opensuse-test -f 2>/dev/null 1>/dev/null
+docker run --name zchunk-opensuse-test zchunk-opensuse:test
+RETVAL=$?
+docker rm zchunk-opensuse-test -f 2>/dev/null 1>/dev/null
+docker image rm zchunk-opensuse:test -f 2>/dev/null 1>/dev/null
+exit $RETVAL
diff --git a/autotest/ubuntu-rolling/Dockerfile b/autotest/ubuntu-rolling/Dockerfile
deleted file mode 100644 (file)
index f811377..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM ubuntu:rolling
-ADD ./ /code
-WORKDIR /code
-RUN apt-get update
-RUN /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -yq install meson gcc pkg-config libzstd-dev libcurl4-openssl-dev libssl-dev'
-RUN meson build
-RUN ninja -C build test
diff --git a/autotest/ubuntu-rolling/build.sh b/autotest/ubuntu-rolling/build.sh
new file mode 100755 (executable)
index 0000000..a484200
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Build zchunk-ubuntu:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-ubuntu:latest)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/ubuntu-rolling/prep.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker image rm zchunk-ubuntu:test -f 2>/dev/null 1>/dev/null
+docker image build -t zchunk-ubuntu:test --file autotest/ubuntu-rolling/build/Dockerfile ./
+
diff --git a/autotest/ubuntu-rolling/build/Dockerfile b/autotest/ubuntu-rolling/build/Dockerfile
new file mode 100644 (file)
index 0000000..f460fe9
--- /dev/null
@@ -0,0 +1,6 @@
+FROM zchunk-ubuntu:latest
+ADD ./ /code
+WORKDIR /code
+RUN meson build && cd build && ninja
+WORKDIR /code/build
+CMD ninja test
diff --git a/autotest/ubuntu-rolling/docker-compose.yml b/autotest/ubuntu-rolling/docker-compose.yml
deleted file mode 100644 (file)
index a35dd2d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-version: '3'
-services:
-  test:
-    build:
-      context: ../../
-      dockerfile: ./autotest/ubuntu-rolling/Dockerfile
diff --git a/autotest/ubuntu-rolling/prep.sh b/autotest/ubuntu-rolling/prep.sh
new file mode 100755 (executable)
index 0000000..79ae5bb
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+docker pull ubuntu:rolling
+if [ "$?" -ne 0 ]; then
+        exit 1
+fi
+docker image rm -f zchunk-ubuntu:latest 2>/dev/null 1>/dev/null
+docker image build -t zchunk-ubuntu:latest --file autotest/ubuntu-rolling/prep/Dockerfile ./
diff --git a/autotest/ubuntu-rolling/prep/Dockerfile b/autotest/ubuntu-rolling/prep/Dockerfile
new file mode 100644 (file)
index 0000000..aab1775
--- /dev/null
@@ -0,0 +1,2 @@
+FROM ubuntu:rolling
+RUN /bin/bash -c 'apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get -yq install meson gcc pkg-config libzstd-dev libcurl4-openssl-dev libssl-dev'
diff --git a/autotest/ubuntu-rolling/test.sh b/autotest/ubuntu-rolling/test.sh
new file mode 100755 (executable)
index 0000000..b2345b3
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Build zchunk-ubuntu:latest if it doesn't exist
+HAVE_IMAGE=$(docker image ls -q zchunk-ubuntu:test)
+if [ "$HAVE_IMAGE" == "" ]; then
+       autotest/ubuntu-rolling/build.sh
+       if [ "$?" -ne 0 ]; then
+               exit 1
+       fi
+fi
+docker rm zchunk-ubuntu-test -f 2>/dev/null 1>/dev/null
+docker run --name zchunk-ubuntu-test zchunk-ubuntu:test
+RETVAL=$?
+docker rm zchunk-ubuntu-test -f 2>/dev/null 1>/dev/null
+docker image rm zchunk-ubuntu:test -f 2>/dev/null 1>/dev/null
+exit $RETVAL