aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common/linux
diff options
context:
space:
mode:
authorRyan Chu <ryan.chu@qt.io>2018-10-01 10:38:39 +0200
committerLiang Qi <liang.qi@qt.io>2018-10-30 08:15:43 +0000
commitea76ace8257d98a8c6d72fca39b1f7f559f084cb (patch)
tree443a6b56de42052ecca1c3c87c31bfefd53fb3fb /coin/provisioning/common/linux
parenta76e315034d12f85a7a5281f1384375d2fb4ae3b (diff)
Docker Provisioning: Install Docker-based test servers on macOS
Build and cache docker images based on the configurations in testserver. 1. Move the shared Docker files to common/shared/testserver 2. Deploy boot2docker image into VirtualBox via docker-machine commands. 3. Build and tag the docker images by the SHA-1 of server context. Change-Id: Ic5a588e5cc5e753ec4c4e2e1bc79917bbd03f95d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'coin/provisioning/common/linux')
-rwxr-xr-xcoin/provisioning/common/linux/docker.sh4
-rwxr-xr-xcoin/provisioning/common/linux/docker_testserver.sh (renamed from coin/provisioning/common/linux/testserver/docker_testserver.sh)23
-rw-r--r--coin/provisioning/common/linux/testserver/apache2/Dockerfile6
-rw-r--r--coin/provisioning/common/linux/testserver/danted/Dockerfile9
-rwxr-xr-xcoin/provisioning/common/linux/testserver/danted/danted93
-rwxr-xr-xcoin/provisioning/common/linux/testserver/danted/danted-authenticating97
-rw-r--r--coin/provisioning/common/linux/testserver/ftp-proxy/Dockerfile3
-rw-r--r--coin/provisioning/common/linux/testserver/squid/Dockerfile3
-rw-r--r--coin/provisioning/common/linux/testserver/vsftpd/Dockerfile6
9 files changed, 18 insertions, 226 deletions
diff --git a/coin/provisioning/common/linux/docker.sh b/coin/provisioning/common/linux/docker.sh
index 16af0a0a..07cedba9 100755
--- a/coin/provisioning/common/linux/docker.sh
+++ b/coin/provisioning/common/linux/docker.sh
@@ -2,7 +2,7 @@
#############################################################################
##
-## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2018 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -49,4 +49,4 @@ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-c
sudo chmod +x /usr/local/bin/docker-compose
# Start testserver provisioning
-source "${BASH_SOURCE%/*}/testserver/docker_testserver.sh"
+source "${BASH_SOURCE%/*}/docker_testserver.sh"
diff --git a/coin/provisioning/common/linux/testserver/docker_testserver.sh b/coin/provisioning/common/linux/docker_testserver.sh
index a88e89b9..a272d706 100755
--- a/coin/provisioning/common/linux/testserver/docker_testserver.sh
+++ b/coin/provisioning/common/linux/docker_testserver.sh
@@ -2,7 +2,7 @@
#############################################################################
##
-## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2018 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -35,24 +35,33 @@
set -ex
+case ${BASH_SOURCE[0]} in
+ */linux/*) SERVER_PATH="${BASH_SOURCE[0]%/linux/*}/shared/testserver" ;;
+ */*) SERVER_PATH="${BASH_SOURCE[0]%/*}/../shared/testserver" ;;
+ *) SERVER_PATH="../shared/testserver" ;;
+esac
+
+# testserver shared scripts
+source "$SERVER_PATH/testserver_util.sh"
+
# Using SHA-1 of each server context as the tag of docker images. A tag labels a
# specific image version. It is used by docker compose file (docker-compose.yml)
# to launch the corresponding docker containers. If one of the server contexts
# (./apache2, ./danted, ...) gets changes, all the related compose files in
# qtbase should be updated as well.
-#
-# For example, here's how to get the SHA-1 of apache test server.
-# find ./apache2 -type f -print0 | sort -z | xargs -r0 sha1sum | \
-# awk '{ print $1 }' | sha1sum | awk '{ print $1 }'
-testserver='apache2 squid vsftpd ftp-proxy danted'
+source "$SERVER_PATH/settings.sh"
for server in $testserver
do
- context="${BASH_SOURCE%/*}/$server"
+ context="$SERVER_PATH/$server"
+ # obsolete - This one is still needed for CI. It will be removed later.
sha1=$(find $context -type f -print0 | sort -z | xargs -r0 sha1sum | awk '{ print $1 }' | \
sha1sum | awk '{ print $1 }')
sudo docker build -t qt-test-server-$server:$sha1 $context
+
+ # Sort files by their SHA-1 and use the accumulated result as the TAG
+ sudo docker build -t qt-test-server-$server:$(sha1tree $context) $context
done
sudo docker images
diff --git a/coin/provisioning/common/linux/testserver/apache2/Dockerfile b/coin/provisioning/common/linux/testserver/apache2/Dockerfile
deleted file mode 100644
index bb2dc850..00000000
--- a/coin/provisioning/common/linux/testserver/apache2/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM ubuntu:16.04
-RUN apt-get update && apt-get install -y apache2 libcgi-session-perl wget avahi-daemon
-EXPOSE 80 443
-
-# install configurations and test data
-RUN wget https://tools.ietf.org/rfc/rfc3252.txt
diff --git a/coin/provisioning/common/linux/testserver/danted/Dockerfile b/coin/provisioning/common/linux/testserver/danted/Dockerfile
deleted file mode 100644
index eb2ac6ff..00000000
--- a/coin/provisioning/common/linux/testserver/danted/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM ubuntu:16.04
-RUN apt-get update && apt-get install -y gdebi-core=0.9.5.7ubuntu1 wget avahi-daemon
-RUN wget http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/dante-server_1.4.1-1_amd64.deb
-RUN gdebi -n dante-server_1.4.1-1_amd64.deb
-EXPOSE 1080-1081
-
-# install configurations and test data
-COPY danted /etc/init.d/
-COPY danted-authenticating /etc/init.d/
diff --git a/coin/provisioning/common/linux/testserver/danted/danted b/coin/provisioning/common/linux/testserver/danted/danted
deleted file mode 100755
index 1da8203e..00000000
--- a/coin/provisioning/common/linux/testserver/danted/danted
+++ /dev/null
@@ -1,93 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: danted
-# Required-Start: $remote_fs $syslog
-# Required-Stop: $remote_fs $syslog
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: SOCKS (v4 and v5) proxy daemon (danted)
-### END INIT INFO
-#
-# dante SOCKS server init.d file. Based on /etc/init.d/skeleton:
-# Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/sbin/danted
-NAME=danted
-DESC="Dante SOCKS daemon"
-PIDFILE=/var/run/$NAME.pid
-CONFFILE=/etc/$NAME.conf
-
-test -f $DAEMON || exit 0
-
-set -e
-
-# This function makes sure that the Dante server can write to the pid-file.
-touch_pidfile ()
-{
- if [ -r $CONFFILE ]; then
- uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' \
- $CONFFILE`"
- if [ -n "$uid" ]; then
- touch $PIDFILE
- chown $uid $PIDFILE
- fi
- fi
-}
-
-. /lib/lsb/init-functions
-
-case "$1" in
- start)
- if ! egrep -cve '^ *(#|$)' \
- -e '^(logoutput|user\.((not)?privileged|libwrap)):' $CONFFILE > /dev/null
- then
- echo "Not starting $DESC: not configured."
- exit 0
- fi
- echo -n "Starting $DESC: "
- touch_pidfile
- start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON -- -D
- echo "$NAME."
- ;;
- stop)
- echo -n "Stopping $DESC: "
- start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
- echo "$NAME."
- ;;
- reload|force-reload)
- #
- # If the daemon can reload its config files on the fly
- # for example by sending it SIGHUP, do it here.
- #
- # If the daemon responds to changes in its config file
- # directly anyway, make this a do-nothing entry.
- #
- echo "Reloading $DESC configuration files."
- start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --exec $DAEMON -- -D
- ;;
- restart)
- #
- # If the "reload" option is implemented, move the "force-reload"
- # option to the "reload" entry above. If not, "force-reload" is
- # just the same as "restart".
- #
- echo -n "Restarting $DESC: "
- start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
- sleep 1
- touch_pidfile
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- -D
- echo "$NAME."
- ;;
- status)
- status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
- ;;
- *)
- N=/etc/init.d/$NAME
- # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/coin/provisioning/common/linux/testserver/danted/danted-authenticating b/coin/provisioning/common/linux/testserver/danted/danted-authenticating
deleted file mode 100755
index 7aa35db6..00000000
--- a/coin/provisioning/common/linux/testserver/danted/danted-authenticating
+++ /dev/null
@@ -1,97 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: danted-authenticating
-# Required-Start: $remote_fs $syslog
-# Required-Stop: $remote_fs $syslog
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: SOCKS (v4 and v5) proxy daemon (danted)
-### END INIT INFO
-#
-# dante SOCKS server init.d file. Based on /etc/init.d/skeleton:
-# Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/sbin/danted
-NAME=danted-authenticating
-DESC="Dante SOCKS daemon"
-PIDFILE=/var/run/$NAME.pid
-CONFFILE=/etc/$NAME.conf
-DANTED_ARGS="-D -f $CONFFILE"
-
-test -f $DAEMON || exit 0
-
-set -e
-
-# This function makes sure that the Dante server can write to the pid-file.
-touch_pidfile ()
-{
- if [ -r $CONFFILE ]; then
- uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' \
- $CONFFILE`"
- if [ -n "$uid" ]; then
- touch $PIDFILE
- chown $uid $PIDFILE
- fi
- fi
-}
-
-. /lib/lsb/init-functions
-
-case "$1" in
- start)
- if ! egrep -cve '^ *(#|$)' \
- -e '^(logoutput|user\.((not)?privileged|libwrap)):' $CONFFILE > /dev/null
- then
- echo "Not starting $DESC: not configured."
- exit 0
- fi
- echo -n "Starting $DESC: "
- touch_pidfile
- start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE \
- --exec $DAEMON -- $DANTED_ARGS
- echo "$NAME."
- ;;
- stop)
- echo -n "Stopping $DESC: "
- start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
- echo "$NAME."
- ;;
- reload|force-reload)
- #
- # If the daemon can reload its config files on the fly
- # for example by sending it SIGHUP, do it here.
- #
- # If the daemon responds to changes in its config file
- # directly anyway, make this a do-nothing entry.
- #
- echo "Reloading $DESC configuration files."
- start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE \
- --exec $DAEMON -- $DANTED_ARGS
- ;;
- restart)
- #
- # If the "reload" option is implemented, move the "force-reload"
- # option to the "reload" entry above. If not, "force-reload" is
- # just the same as "restart".
- #
- echo -n "Restarting $DESC: "
- start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
- sleep 1
- touch_pidfile
- start-stop-daemon --start --quiet --pidfile $PIDFILE \
- --exec $DAEMON -- $DANTED_ARGS
- echo "$NAME."
- ;;
- status)
- status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
- ;;
- *)
- N=/etc/init.d/$NAME
- # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/coin/provisioning/common/linux/testserver/ftp-proxy/Dockerfile b/coin/provisioning/common/linux/testserver/ftp-proxy/Dockerfile
deleted file mode 100644
index cecb2dca..00000000
--- a/coin/provisioning/common/linux/testserver/ftp-proxy/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM ubuntu:16.04
-RUN apt-get update && apt-get install -y ftp-proxy=1.9.2.4-10 avahi-daemon
-EXPOSE 2121
diff --git a/coin/provisioning/common/linux/testserver/squid/Dockerfile b/coin/provisioning/common/linux/testserver/squid/Dockerfile
deleted file mode 100644
index 0b930bca..00000000
--- a/coin/provisioning/common/linux/testserver/squid/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM ubuntu:16.04
-RUN apt-get update && apt-get install -y squid=3.5.12-1ubuntu7.5 avahi-daemon
-EXPOSE 3128-3130
diff --git a/coin/provisioning/common/linux/testserver/vsftpd/Dockerfile b/coin/provisioning/common/linux/testserver/vsftpd/Dockerfile
deleted file mode 100644
index f8e32d40..00000000
--- a/coin/provisioning/common/linux/testserver/vsftpd/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM ubuntu:16.04
-RUN apt-get update && apt-get install -y vsftpd=3.0.3-3ubuntu2 ftp=0.17-33 wget avahi-daemon
-EXPOSE 20-21
-
-# install configurations and test data
-RUN wget https://tools.ietf.org/rfc/rfc3252.txt