add docker definitions
authorKonrad Rosenbaum <konrad@silmor.de>
Wed, 11 Jan 2017 06:41:05 +0000 (07:41 +0100)
committerKonrad Rosenbaum <konrad@silmor.de>
Wed, 11 Jan 2017 06:41:05 +0000 (07:41 +0100)
Change-Id: I31d7ecca42065b8a6d8a042fc06645ffd6b5680e

tests/docker/README [new file with mode: 0644]
tests/docker/php5/Dockerfile [new file with mode: 0644]
tests/docker/php5/start.sh [new file with mode: 0755]
tests/docker/php7/Dockerfile [new file with mode: 0644]
tests/docker/php7/start.sh [new file with mode: 0755]
tests/docker/qtenv/Dockerfile [new file with mode: 0644]
tests/docker/qtenv/start.sh [new file with mode: 0755]
tests/docker/rebuild.sh [new file with mode: 0755]

diff --git a/tests/docker/README b/tests/docker/README
new file mode 100644 (file)
index 0000000..3fab669
--- /dev/null
@@ -0,0 +1,47 @@
+README for Docker-Test Setups
+===============================
+
+This directory contains docker configurations that are used with Jenkins to
+build and test MagicSmoke.
+
+There are currently these images:
+
+ * qtenv: for building and testing the client
+ * php5: for building and testing the server on PHP5
+ * php7: for building and testing the server on PHP7
+
+All images contain a jenkins user with UID 12001 and a /jenkins home directory.
+In this directory is a start.sh script that downloads
+
+Building the Client and Server
+-------------------------------
+
+Node Setup:
+ This needs a node based on the qtenv image that receives its Qt from an
+ outside volume.
+
+ Assuming you have Qt 5.7 installed from the standard binary installer for Qt
+ for Linux, then you should have a full installation in /home/me/Qt/5.7/gcc_64.
+
+ Setup your node like this:
+  # of executors: 1
+  Remote root directory: /jenkins/jobs
+  Launch Method: Launch agent via execution of a command on master
+  Launch command: docker run --rm -v /home/me:/home/me -i magicsmoke-qtenv /jenkins/start.sh http://192.168.0.1:8080
+  => replace /home/me with your correct home directory
+  => replace 192.168.0.1:8080 with the base URL of the jenkins server (the
+     script will add /jnlpJars/slave.jar to download slave.jar)
+  Availability: Take this agent online when in demand, and offline when idle
+
+Build Job:
+ Setup the job for an appropriate trigger and source repository. Usually
+ you will use some kind of GIT trigger. Make sure the repository is checked
+ out recursively, including all submodules.
+
+ Make sure you have qmake in your path. Build one of the packaging targets.
+
+ E.g.:
+  PATH=/home/me/Qt/5.7/gcc_64/bin:$PATH
+  git clean -dfx
+  git submodules foreach 'git clean -dfx'
+  make tgz
diff --git a/tests/docker/php5/Dockerfile b/tests/docker/php5/Dockerfile
new file mode 100644 (file)
index 0000000..2ed7d5c
--- /dev/null
@@ -0,0 +1,8 @@
+FROM debian:jessie
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update
+RUN apt-get install -y openjdk-7-jre-headless wget git
+RUN useradd -d /jenkins -m -s /bin/bash -u 12001 -U jenkins
+COPY start.sh /jenkins
+RUN apt-get install -y mysql-server mysql-client postgresql-9.4 postgresql-client-9.4 apache2 libapache2-mod-php5 php5-mcrypt php5-mysql php5-pgsql phpunit
+CMD /bin/bash
diff --git a/tests/docker/php5/start.sh b/tests/docker/php5/start.sh
new file mode 100755 (executable)
index 0000000..f4c9cd5
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#This script runs inside the container to start the Jenkins Slave.
+
+### start Apache
+apachectl start
+
+### start MySQL
+/etc/init.d/mysql start
+#craete smoke user and give it full admin rights
+mysql -e "CREATE USER smoke@localhost"
+mysql -e 'GRANT ALL PRIVILEGES ON *.* TO smoke'
+
+### start Postgres
+# make sure PG allows use without password/auth
+cat >/etc/postgresql/*/main/pg_hba.conf <<EOF
+local all all trust
+host all all 127.0.0.1/32 trust
+host all all ::1/128 trust
+EOF
+#start server
+/etc/init.d/postgresql start
+#create smoke admin user
+createuser -U postgres -dl smoke
+
+### start Jenkins
+cd /jenkins
+rm -f slave.jar
+wget $1/jnlpJars/slave.jar
+chmod 644 slave.jar
+
+su jenkins -c "nice java -jar slave.jar"
diff --git a/tests/docker/php7/Dockerfile b/tests/docker/php7/Dockerfile
new file mode 100644 (file)
index 0000000..68f2b1a
--- /dev/null
@@ -0,0 +1,8 @@
+FROM debian:stretch
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update
+RUN apt-get install -y openjdk-8-jre-headless wget git
+RUN useradd -d /jenkins -m -s /bin/bash -u 12001 -U jenkins
+COPY start.sh /jenkins
+RUN apt-get install -y mysql-server mysql-client postgresql-9.6 postgresql-client-9.6 apache2 libapache2-mod-php7.0 php7.0-mcrypt php7.0-mysql php7.0-pgsql phpunit
+CMD /bin/bash
diff --git a/tests/docker/php7/start.sh b/tests/docker/php7/start.sh
new file mode 100755 (executable)
index 0000000..f4c9cd5
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#This script runs inside the container to start the Jenkins Slave.
+
+### start Apache
+apachectl start
+
+### start MySQL
+/etc/init.d/mysql start
+#craete smoke user and give it full admin rights
+mysql -e "CREATE USER smoke@localhost"
+mysql -e 'GRANT ALL PRIVILEGES ON *.* TO smoke'
+
+### start Postgres
+# make sure PG allows use without password/auth
+cat >/etc/postgresql/*/main/pg_hba.conf <<EOF
+local all all trust
+host all all 127.0.0.1/32 trust
+host all all ::1/128 trust
+EOF
+#start server
+/etc/init.d/postgresql start
+#create smoke admin user
+createuser -U postgres -dl smoke
+
+### start Jenkins
+cd /jenkins
+rm -f slave.jar
+wget $1/jnlpJars/slave.jar
+chmod 644 slave.jar
+
+su jenkins -c "nice java -jar slave.jar"
diff --git a/tests/docker/qtenv/Dockerfile b/tests/docker/qtenv/Dockerfile
new file mode 100644 (file)
index 0000000..8e785ea
--- /dev/null
@@ -0,0 +1,8 @@
+FROM debian:jessie
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update
+RUN apt-get install -y openjdk-7-jre-headless wget git
+RUN useradd -d /jenkins -m -s /bin/bash -u 12001 -U jenkins
+COPY start.sh /jenkins
+RUN apt-get install -y libfontconfig1 libfreetype6 libx11-6 libxext6 libxfixes3 libxi6 libsm6 libice6 libdbus-1-3 libxrender1 libxcb1 libx11-xcb1 libxcb-glx0 libglib2.0-0 libstdc++6 zlib1g-dev libgcc1 libpcre3 libegl1-mesa libgl1-mesa-glx libgl1-mesa-dev libuuid1 libxau6 libxdmcp6 libexpat1 libpng12-0 libgbm1 libdrm2 libglapi-mesa libffi6 libudev-dev g++ gcc make doxygen qtchooser chrpath patchelf zip
+CMD /bin/bash
diff --git a/tests/docker/qtenv/start.sh b/tests/docker/qtenv/start.sh
new file mode 100755 (executable)
index 0000000..ec43b5b
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+#This script runs inside the container to start the Jenkins Slave.
+
+cd /jenkins
+rm -f slave.jar
+wget $1/jnlpJars/slave.jar
+chmod 644 slave.jar
+
+su jenkins -c "nice java -jar slave.jar"
diff --git a/tests/docker/rebuild.sh b/tests/docker/rebuild.sh
new file mode 100755 (executable)
index 0000000..006f22d
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+
+cd "`dirname $0`"
+BASE="`pwd`"
+
+echo "Getting base images..."
+docker pull debian:jessie
+docker pull debian:stretch
+
+for img in qtenv php5 php7 ; do
+  echo
+  echo "Re-building $img image! This may take a while..."
+  cd $BASE/$img
+  docker build -t magicsmoke-$img -f ./Dockerfile .
+  echo "Done with $img."
+done
+
+echo Done.