WIP add a Docker-based test env
[plcapi.git] / tests / ci / docker / entrypoint.sh
1 #!/bin/sh
2
3 # @todo make username flexible
4
5 USERNAME=test
6
7 echo "[$(date)] Bootstrapping the Test container..."
8
9 clean_up() {
10     # Perform program exit housekeeping
11
12     echo "[$(date)] Stopping the Web server"
13     service apache2 stop
14
15     echo "[$(date)] Stopping Privoxy"
16     service privoxy stop
17
18     echo "[$(date)] Stopping FPM"
19     service php-fpm stop
20
21     echo "[$(date)] Exiting"
22     exit
23 }
24
25 # Fix UID & GID for user
26
27 echo "[$(date)] Fixing filesystem permissions..."
28
29 ORIGPASSWD=$(cat /etc/passwd | grep "^${USERNAME}:")
30 ORIG_UID=$(echo "$ORIGPASSWD" | cut -f3 -d:)
31 ORIG_GID=$(echo "$ORIGPASSWD" | cut -f4 -d:)
32 CONTAINER_USER_HOME=$(echo "$ORIGPASSWD" | cut -f6 -d:)
33 CONTAINER_USER_UID=${CONTAINER_USER_UID:=$ORIG_UID}
34 CONTAINER_USER_GID=${CONTAINER_USER_GID:=$ORIG_GID}
35
36 if [ "$CONTAINER_USER_UID" != "$ORIG_UID" -o "$CONTAINER_USER_GID" != "$ORIG_GID" ]; then
37     groupmod -g "$CONTAINER_USER_GID" "${USERNAME}"
38     usermod -u "$CONTAINER_USER_UID" -g "$CONTAINER_USER_GID" "${USERNAME}"
39 fi
40 if [ $(stat -c '%u' "${CONTAINER_USER_HOME}") != "${CONTAINER_USER_UID}" -o $(stat -c '%g' "${CONTAINER_USER_HOME}") != "${CONTAINER_USER_GID}" ]; then
41     chown "${CONTAINER_USER_UID}":"${CONTAINER_USER_GID}" "${CONTAINER_USER_HOME}"
42     chown -R "${CONTAINER_USER_UID}":"${CONTAINER_USER_GID}" "${CONTAINER_USER_HOME}"/.*
43 fi
44
45 echo "[$(date)] Fixing apache configuration..."
46
47 # @todo set as well APACHE_RUN_USER and/or APACHE_RUN_GROUP ?
48 sed -e "s?^export TESTS_ROOT_DIR=.*?export TESTS_ROOT_DIR=${TESTS_ROOT_DIR}?g" --in-place /etc/apache2/envvars
49
50 echo "[$(date)] Running Composer..."
51
52 sudo test -c "cd /home/test && composer install"
53
54 trap clean_up TERM
55
56 echo "[$(date)] Starting FPM..."
57 service php-fpm start
58
59 echo "[$(date)] Starting the Web server..."
60 service apache2 start
61
62 echo "[$(date)] Starting Privoxy..."
63 service privoxy start
64
65 tail -f /dev/null &
66 child=$!
67 wait "$child"