mirror of
https://github.com/cytopia/devilbox.git
synced 2025-02-20 17:33:05 +00:00
Add extensive travis checks
This commit is contained in:
parent
442a098690
commit
a161e536a7
265
.tests/.lib.sh
Normal file
265
.tests/.lib.sh
Normal file
@ -0,0 +1,265 @@
|
||||
#!/bin/sh -eu
|
||||
|
||||
|
||||
if [ "${#}" != "1" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "${1}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEVILBOX_PATH="${1}"
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# G E T D E F A U L T S
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Default enabled Docker Versions
|
||||
###
|
||||
get_default_version_httpd() {
|
||||
_default="$( grep -E '^HTTPD_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
get_default_version_mysql() {
|
||||
_default="$( grep -E '^MYSQL_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
get_default_version_postgres() {
|
||||
_default="$( grep -E '^POSTGRES_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
get_default_version_php() {
|
||||
_default="$( grep -E '^PHP_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
|
||||
###
|
||||
### Default enabled Host Ports
|
||||
###
|
||||
get_default_port_httpd() {
|
||||
_default="$( grep -E '^HOST_PORT_HTTPD=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
get_default_port_mysql() {
|
||||
_default="$( grep -E '^HOST_PORT_MYSQL=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
get_default_port_postgres() {
|
||||
_default="$( grep -E '^HOST_PORT_POSTGRES=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
echo "${_default}"
|
||||
}
|
||||
|
||||
###
|
||||
### Default enabled Host Mounts
|
||||
###
|
||||
get_default_mount_httpd() {
|
||||
_default="$( grep -E '^HOST_PATH_TO_WWW_DOCROOTS=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
_prefix="$( echo "${_default}" | cut -c-1 )"
|
||||
|
||||
# Relative path?
|
||||
if [ "${_prefix}" = "." ]; then
|
||||
_default="$( echo "${_default}" | sed 's/^\.//g' )" # Remove leading dot: .
|
||||
_default="$( echo "${_default}" | sed 's/^\///' )" # Remove leading slash: /
|
||||
echo "${DEVILBOX_PATH}/${_default}"
|
||||
else
|
||||
echo "${_default}"
|
||||
fi
|
||||
}
|
||||
get_default_mount_mysql() {
|
||||
_default="$( grep -E '^HOST_PATH_TO_MYSQL_DATADIR=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
_prefix="$( echo "${_default}" | cut -c-1 )"
|
||||
|
||||
# Relative path?
|
||||
if [ "${_prefix}" = "." ]; then
|
||||
_default="$( echo "${_default}" | sed 's/^\.//g' )" # Remove leading dot: .
|
||||
_default="$( echo "${_default}" | sed 's/^\///' )" # Remove leading slash: /
|
||||
echo "${DEVILBOX_PATH}/${_default}"
|
||||
else
|
||||
echo "${_default}"
|
||||
fi
|
||||
}
|
||||
get_default_mount_postgres() {
|
||||
_default="$( grep -E '^HOST_PATH_TO_POSTGRES_DATADIR=' "${DEVILBOX_PATH}/env-example" | sed 's/^.*=//g' )"
|
||||
_prefix="$( echo "${_default}" | cut -c-1 )"
|
||||
|
||||
# Relative path?
|
||||
if [ "${_prefix}" = "." ]; then
|
||||
_default="$( echo "${_default}" | sed 's/^\.//g' )" # Remove leading dot: .
|
||||
_default="$( echo "${_default}" | sed 's/^\///' )" # Remove leading slash: /
|
||||
echo "${DEVILBOX_PATH}/${_default}"
|
||||
else
|
||||
echo "${_default}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# G E T A L L D O C K E R V E R S I O N S
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### All Docker Versions
|
||||
###
|
||||
get_all_docker_httpd() {
|
||||
_all="$( grep -E '^#?HTTPD_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/.*=//g' )"
|
||||
echo "${_all}"
|
||||
}
|
||||
get_all_docker_mysql() {
|
||||
_all="$( grep -E '^#?MYSQL_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/.*=//g' )"
|
||||
echo "${_all}"
|
||||
}
|
||||
get_all_docker_postgres() {
|
||||
_all="$( grep -E '^#?POSTGRES_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/.*=//g' )"
|
||||
echo "${_all}"
|
||||
}
|
||||
get_all_docker_php() {
|
||||
_all="$( grep -E '^#?PHP_SERVER=' "${DEVILBOX_PATH}/env-example" | sed 's/.*=//g' )"
|
||||
echo "${_all}"
|
||||
}
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# S E T / R E S E T F U N C T I O N S
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Recreate .env file from env-example
|
||||
###
|
||||
reset_env_file() {
|
||||
|
||||
# Re-create .env file
|
||||
if [ -f "${DEVILBOX_PATH}/.env" ]; then
|
||||
rm -f "${DEVILBOX_PATH}/.env"
|
||||
fi
|
||||
cp "${DEVILBOX_PATH}/env-example" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
|
||||
###
|
||||
### Comment out all docker versions
|
||||
###
|
||||
comment_all_dockers() {
|
||||
_httpd="$( get_default_version_httpd )"
|
||||
_mysql="$( get_default_version_mysql )"
|
||||
_postgres="$( get_default_version_postgres )"
|
||||
_php="$( get_default_version_php )"
|
||||
|
||||
|
||||
# Comment out all enabled docker versions
|
||||
sed -i'' "s/HTTPD_SERVER=${_httpd}/#HTTPD_SERVER=${_httpd}/g" "${DEVILBOX_PATH}/.env"
|
||||
sed -i'' "s/MYSQL_SERVER=${_mysql}/#MYSQL_SERVER=${_mysql}/g" "${DEVILBOX_PATH}/.env"
|
||||
sed -i'' "s/POSTGRES_SERVER=${_postgres}/#POSTGRES_SERVER=${_postgres}/g" "${DEVILBOX_PATH}/.env"
|
||||
sed -i'' "s/PHP_SERVER=${_php}/#PHP_SERVER=${_php}/g" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
|
||||
###
|
||||
### Eenable desired docker version
|
||||
###
|
||||
enable_docker_httpd() {
|
||||
_docker_version="${1}"
|
||||
sed -i'' "s/#HTTPD_SERVER=${_docker_version}/HTTPD_SERVER=${_docker_version}/g" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
enable_docker_mysql() {
|
||||
_docker_version="${1}"
|
||||
sed -i'' "s/#MYSQL_SERVER=${_docker_version}/MYSQL_SERVER=${_docker_version}/g" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
enable_docker_postgres() {
|
||||
_docker_version="${1}"
|
||||
sed -i'' "s/#POSTGRES_SERVER=${_docker_version}/POSTGRES_SERVER=${_docker_version}/g" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
enable_docker_php() {
|
||||
_docker_version="${1}"
|
||||
sed -i'' "s/#PHP_SERVER=${_docker_version}/PHP_SERVER=${_docker_version}/g" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
|
||||
|
||||
set_host_port_httpd() {
|
||||
_port="${1}"
|
||||
sed -i'' "s/^HOST_PORT_HTTPD=.*/HOST_PORT_HTTPD=${_port}/" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
set_host_port_mysql() {
|
||||
_port="${1}"
|
||||
sed -i'' "s/^HOST_PORT_MYSQL=.*/HOST_PORT_MYSQL=${_port}/" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
set_host_port_pgsql() {
|
||||
_port="${1}"
|
||||
sed -i'' "s/^HOST_PORT_POSTGRES=.*/HOST_PORT_POSTGRES=${_port}/" "${DEVILBOX_PATH}/.env"
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# S T A R T / S T O P T H E D E V I L B O X
|
||||
#
|
||||
################################################################################
|
||||
|
||||
devilbox_start() {
|
||||
_httpd="$1"
|
||||
_mysql="$2"
|
||||
_pysql="$3"
|
||||
_php="$4"
|
||||
_head="$5"
|
||||
|
||||
echo "################################################################################"
|
||||
echo "#"
|
||||
echo "# ${_head}: [HTTPD: ${_httpd} | MYSQL: ${_mysql} | PGSQL: ${_pysql} | PHP: ${_php}] "
|
||||
echo "#"
|
||||
echo "################################################################################"
|
||||
|
||||
# Adjust .env
|
||||
comment_all_dockers
|
||||
enable_docker_httpd "${_httpd}"
|
||||
enable_docker_mysql "${_mysql}"
|
||||
enable_docker_postgres "${_pysql}"
|
||||
enable_docker_php "${_php}"
|
||||
|
||||
# Stop existing dockers
|
||||
cd "${DEVILBOX_PATH}" || exit 1
|
||||
docker-compose down || true
|
||||
docker-compose stop || true
|
||||
docker-compose kill || true
|
||||
docker-compose rm -f || true
|
||||
|
||||
# Delete existing data dirs
|
||||
rm -rf "$( get_default_mount_httpd )"
|
||||
rm -rf "$( get_default_mount_mysql )"
|
||||
rm -rf "$( get_default_mount_postgres )"
|
||||
|
||||
# Run
|
||||
docker-compose up -d
|
||||
|
||||
# Wait for it to come up
|
||||
sleep 20
|
||||
}
|
||||
|
||||
debilbox_test() {
|
||||
count="$( curl -q localhost 2>/dev/null | grep -c OK )"
|
||||
echo "${count}"
|
||||
if [ "${count}" = "0" ]; then
|
||||
curl localhost
|
||||
return false
|
||||
fi
|
||||
}
|
||||
|
||||
devilbox_stop() {
|
||||
# Stop existing dockers
|
||||
cd "${DEVILBOX_PATH}" || exit 1
|
||||
docker-compose down || true
|
||||
docker-compose stop || true
|
||||
docker-compose kill || true
|
||||
docker-compose rm -f || true
|
||||
|
||||
# Delete existing data dirs
|
||||
rm -rf "$( get_default_mount_httpd )"
|
||||
rm -rf "$( get_default_mount_mysql )"
|
||||
rm -rf "$( get_default_mount_postgres )"
|
||||
}
|
127
.tests/test.sh
Executable file
127
.tests/test.sh
Executable file
@ -0,0 +1,127 @@
|
||||
#!/bin/sh -eu
|
||||
|
||||
if [ "${#}" != "1" ]; then
|
||||
echo "Error: Invalid number of arguments"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "${1}" ]; then
|
||||
echo "Error: Not a directory: ${1}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
###
|
||||
### Get devilbox path and source libs file
|
||||
###
|
||||
DEVILBOX_PATH="$( echo "${1}"| sed 's/\/*$//' )" # remove last slash(es): /
|
||||
. "${DEVILBOX_PATH}/.tests/.lib.sh" "${DEVILBOX_PATH}"
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# B O O T S T R A P
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Reset .env file
|
||||
###
|
||||
reset_env_file
|
||||
|
||||
###
|
||||
### Alter host ports
|
||||
###
|
||||
set_host_port_httpd "80"
|
||||
set_host_port_mysql "33060"
|
||||
set_host_port_pgsql "54320"
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# T E S T 0 1
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Docker versions to use
|
||||
###
|
||||
_httpd="apache-2.2"
|
||||
_mysql="mariadb-10.2"
|
||||
_pysql="9.6"
|
||||
_php="php-fpm-7.0"
|
||||
|
||||
###
|
||||
### Go
|
||||
###
|
||||
devilbox_start "${_httpd}" "${_mysql}" "${_pysql}" "${_php}" "1/5"
|
||||
debilbox_test
|
||||
devilbox_stop
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# T E S T 0 2
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Docker versions to use
|
||||
###
|
||||
_httpd="apache-2.4"
|
||||
_mysql="mariadb-10.2"
|
||||
_pysql="9.6"
|
||||
_php="php-fpm-7.0"
|
||||
|
||||
###
|
||||
### Go
|
||||
###
|
||||
devilbox_start "${_httpd}" "${_mysql}" "${_pysql}" "${_php}" "2/5"
|
||||
debilbox_test
|
||||
devilbox_stop
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# T E S T 0 3
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Docker versions to use
|
||||
###
|
||||
_httpd="nginx-stable"
|
||||
_mysql="mariadb-10.2"
|
||||
_pysql="9.6"
|
||||
_php="php-fpm-7.0"
|
||||
|
||||
###
|
||||
### Go
|
||||
###
|
||||
devilbox_start "${_httpd}" "${_mysql}" "${_pysql}" "${_php}" "3/5"
|
||||
debilbox_test
|
||||
devilbox_stop
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# T E S T 0 4
|
||||
#
|
||||
################################################################################
|
||||
|
||||
###
|
||||
### Docker versions to use
|
||||
###
|
||||
_httpd="nginx-mainline"
|
||||
_mysql="mariadb-10.2"
|
||||
_pysql="9.6"
|
||||
_php="php-fpm-7.0"
|
||||
|
||||
###
|
||||
### Go
|
||||
###
|
||||
devilbox_start "${_httpd}" "${_mysql}" "${_pysql}" "${_php}" "4/5"
|
||||
debilbox_test
|
||||
devilbox_stop
|
59
.travis.yml
59
.travis.yml
@ -14,10 +14,8 @@ services:
|
||||
###
|
||||
env:
|
||||
global:
|
||||
- DEVILBOX_PHP_VERSION="$( grep -Eo 'image:.*PHP.*:.*' docker-compose.yml | sed 's/.*:.*://g' )"
|
||||
- DEVILBOX_HTTPD_VERSION="$( grep -Eo 'image:.*HTTPD.*:.*' docker-compose.yml | sed 's/.*:.*://g' )"
|
||||
- DEVILBOX_MYSQL_VERSION="$( grep -Eo 'image:.*MYSQL.*:.*' docker-compose.yml | sed 's/.*:.*://g' )"
|
||||
|
||||
# Get .env default versions
|
||||
- VAR=VAL
|
||||
|
||||
###
|
||||
### Berfore Install
|
||||
@ -31,31 +29,7 @@ before_install:
|
||||
### Install
|
||||
###
|
||||
install:
|
||||
# php
|
||||
#- docker pull cytopia/php-fpm-5.4:${DEVILBOX_PHP_VERSION}
|
||||
#- docker pull cytopia/php-fpm-5.5:${DEVILBOX_PHP_VERSION}
|
||||
#- docker pull cytopia/php-fpm-5.6:${DEVILBOX_PHP_VERSION}
|
||||
#- docker pull cytopia/php-fpm-7.0:${DEVILBOX_PHP_VERSION}
|
||||
#- docker pull cytopia/php-fpm-7.1:${DEVILBOX_PHP_VERSION}
|
||||
## web
|
||||
#- docker pull cytopia/apache-2.2:${DEVILBOX_HTTPD_VERSION}
|
||||
#- docker pull cytopia/apache-2.4:${DEVILBOX_HTTPD_VERSION}
|
||||
#- docker pull cytopia/nginx-stable:${DEVILBOX_HTTPD_VERSION}
|
||||
#- docker pull cytopia/nginx-mainline:${DEVILBOX_HTTPD_VERSION}
|
||||
## mysql/mariadb
|
||||
#- docker pull cytopia/mysql-5.5:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mysql-5.6:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mysql-5.7:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mariadb-5.5:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mariadb-10.0:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mariadb-10.1:${DEVILBOX_MYSQL_VERSION}
|
||||
#- docker pull cytopia/mariadb-10.2:${DEVILBOX_MYSQL_VERSION}
|
||||
## postgresql (official images)
|
||||
#- docker pull postgres:9.2
|
||||
#- docker pull postgres:9.3
|
||||
#- docker pull postgres:9.4
|
||||
#- docker pull postgres:9.5
|
||||
#- docker pull postgres:9.6
|
||||
- true
|
||||
|
||||
|
||||
|
||||
@ -63,29 +37,4 @@ install:
|
||||
### Test
|
||||
###
|
||||
script:
|
||||
- cp env-example .env
|
||||
|
||||
# PostgreSQL port seems already been taken
|
||||
- sed -i'' 's/127.0.0.1:5432/127.0.0.1:54320/g' docker-compose.yml
|
||||
- sed -i'' 's/127.0.0.1:3306/127.0.0.1:33060/g' docker-compose.yml
|
||||
|
||||
- mkdir -p ~/data/mysql57
|
||||
- mkdir -p ~/data/postgres96
|
||||
- mkdir -p ~/Sites
|
||||
- chmod 777 ~/data/mysql57
|
||||
- chmod 777 ~/data/postgres96
|
||||
- chmod 777 ~/Sites
|
||||
|
||||
# Start
|
||||
- docker-compose up -d
|
||||
- sleep 30
|
||||
|
||||
# Show info
|
||||
- docker-compose logs
|
||||
- docker-compose ps
|
||||
|
||||
# Check running containers
|
||||
- if [ "$( docker-compose ps | grep -c 'Up' )" != "4" ]; then false; fi
|
||||
|
||||
# Crawl page
|
||||
- wget http://localhost
|
||||
- .tests/test.sh .
|
||||
|
Loading…
x
Reference in New Issue
Block a user