furaolink/autotest.sh
2022-06-16 17:00:01 +02:00

78 lines
2.5 KiB
Bash

#!/bin/sh
# Exit on non defined variables and on non zero exit codes
set -eu
echo 'Building the container'
docker build ./ -t alpine-apache-php-ci:latest
NET="${DOCKER_NETWORK:-alpine-apache-php-autotest}"
# use failure to switch on create
docker network inspect ${NET} 1>/dev/null 2> /dev/null || docker network create ${NET}
echo 'Preparing test folder'
TMP_DIR="$(mktemp -d --suffix alpine-apache-php)"
printf "<?php \n\
echo 'PHP: ' . PHP_MAJOR_VERSION . PHP_EOL;\n\
echo 'Admin: ' . \$_SERVER['SERVER_ADMIN'] . PHP_EOL;\n\
echo 'Host: ' . \$_SERVER['SERVER_NAME'] . PHP_EOL;\n\
echo 'Memory-limit: ' . ini_get('memory_limit') . PHP_EOL;\n\
echo 'Timezone: ' . ini_get('date.timezone') . PHP_EOL;\n\
" > "${TMP_DIR}/index.php"
chmod 777 "${TMP_DIR}"
chmod 666 "${TMP_DIR}/index.php"
echo 'Running test containers'
# stop if exists or silently exit
docker stop alpine-apache-php-test 1>/dev/null 2> /dev/null || echo '' >/dev/null
docker run --rm --detach \
--name alpine-apache-php-test \
--network ${NET} \
--volume ${TMP_DIR}:/htdocs \
--env HTTP_SERVER_NAME="www.example.xyz" \
--env HTTPS_SERVER_NAME="www.example.xyz" \
--env SERVER_ADMIN="admin@example.xyz" \
--env TZ="Europe/Paris" \
--env PHP_MEMORY_LIMIT="512M" \
alpine-apache-php-ci:latest 1>/dev/null
# stop if exists or silently exit
docker stop alpine-apache-php-test-normal 1>/dev/null 2> /dev/null || echo '' >/dev/null
docker run --rm --detach \
--name alpine-apache-php-test-normal \
--network ${NET} \
--volume ${TMP_DIR}:/htdocs \
alpine-apache-php-ci:latest 1>/dev/null
echo ''
echo 'Running custom tests'
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test -H 'Host: www.example.xyz'
docker run --rm --network ${NET} curlimages/curl:latest -s http://alpine-apache-php-test
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test
echo ''
echo 'Running normal tests'
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test-normal -H 'Host: www.example.xyz'
docker run --rm --network ${NET} curlimages/curl:latest -s http://alpine-apache-php-test-normal
docker run --rm --network ${NET} curlimages/curl:latest -s -k https://alpine-apache-php-test-normal
echo ''
echo 'Cleaning up'
docker stop alpine-apache-php-test 1>/dev/null
docker stop alpine-apache-php-test-normal 1>/dev/null
docker network rm ${NET} 1>/dev/null
rm "${TMP_DIR}/index.php"
rmdir "${TMP_DIR}"