mirror of
https://github.com/cytopia/devilbox.git
synced 2024-12-23 14:42:25 +00:00
400 lines
12 KiB
YAML
400 lines
12 KiB
YAML
---
|
|
|
|
###
|
|
### Enable Python support
|
|
###
|
|
language: python
|
|
|
|
###
|
|
### Enable sudo (required for docker service)
|
|
###
|
|
sudo: required
|
|
|
|
|
|
###
|
|
### Attach services
|
|
###
|
|
services:
|
|
- docker
|
|
|
|
|
|
###
|
|
### Specify combinations
|
|
###
|
|
env:
|
|
###
|
|
### Check PHP Modules
|
|
###
|
|
- S1=MODULES
|
|
|
|
###
|
|
### Check Documentation
|
|
###
|
|
- S1=DOCUMENTATION V1=Build
|
|
- S1=DOCUMENTATION V1=linkcheck
|
|
- S1=DOCUMENTATION V1=linkcheck2
|
|
|
|
###
|
|
### Check Update script
|
|
###
|
|
- S1=UPDATE V1=php
|
|
- S1=UPDATE V1=httpd
|
|
- S1=UPDATE V1=mysql
|
|
- S1=UPDATE V1=rest
|
|
|
|
###
|
|
### Test various Docker/DockerCompose versions
|
|
###
|
|
### Docker versions: https://github.com/docker/docker-ce/releases
|
|
### Compose versions: https://github.com/docker/compose/releases
|
|
###
|
|
# Latest Docker version against various DockerCompose versions
|
|
- S1=DOCKER V1=1 S2=COMPOSE V2=1
|
|
- S1=DOCKER V1=1 S2=COMPOSE V2=2
|
|
- S1=DOCKER V1=1 S2=COMPOSE V2=3
|
|
- S1=DOCKER V1=1 S2=COMPOSE V2=4
|
|
- S1=DOCKER V1=1 S2=COMPOSE V2=5
|
|
# 2nd Latest Docker version against various DockerCompose versions
|
|
- S1=DOCKER V1=2 S2=COMPOSE V2=1
|
|
- S1=DOCKER V1=2 S2=COMPOSE V2=2
|
|
- S1=DOCKER V1=2 S2=COMPOSE V2=3
|
|
- S1=DOCKER V1=2 S2=COMPOSE V2=4
|
|
- S1=DOCKER V1=2 S2=COMPOSE V2=5
|
|
# 3rd Latest Docker version against various DockerCompose versions
|
|
- S1=DOCKER V1=3 S2=COMPOSE V2=1
|
|
- S1=DOCKER V1=3 S2=COMPOSE V2=2
|
|
- S1=DOCKER V1=3 S2=COMPOSE V2=3
|
|
- S1=DOCKER V1=3 S2=COMPOSE V2=4
|
|
- S1=DOCKER V1=3 S2=COMPOSE V2=5
|
|
# 4th Latest Docker version against various DockerCompose versions
|
|
- S1=DOCKER V1=4 S2=COMPOSE V2=1
|
|
- S1=DOCKER V1=4 S2=COMPOSE V2=2
|
|
- S1=DOCKER V1=4 S2=COMPOSE V2=3
|
|
- S1=DOCKER V1=4 S2=COMPOSE V2=4
|
|
- S1=DOCKER V1=4 S2=COMPOSE V2=5
|
|
# 5th Latest Docker version against various DockerCompose versions
|
|
- S1=DOCKER V1=5 S2=COMPOSE V2=1
|
|
- S1=DOCKER V1=5 S2=COMPOSE V2=2
|
|
- S1=DOCKER V1=5 S2=COMPOSE V2=3
|
|
- S1=DOCKER V1=5 S2=COMPOSE V2=4
|
|
- S1=DOCKER V1=5 S2=COMPOSE V2=5
|
|
|
|
###
|
|
### The matrix specifies 2 versions to compare against each other.
|
|
### As PHP (any version) needs to be able to run with everything,
|
|
### I am going to test any PHP version against any other service.
|
|
###
|
|
###
|
|
### PHP vs WWW
|
|
###
|
|
# PHP vs Apache 2.2
|
|
- S1=PHP V1=5.3 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=5.4 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=5.5 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=5.6 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=7.0 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=7.1 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=7.2 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=7.3 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=7.4 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=8.0 S2=HTTPD V2=apache-2.2
|
|
- S1=PHP V1=8.1 S2=HTTPD V2=apache-2.2
|
|
# PHP vs Apache 2.4
|
|
- S1=PHP V1=5.3 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=5.4 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=5.5 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=5.6 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=7.0 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=7.1 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=7.2 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=7.3 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=7.4 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=8.0 S2=HTTPD V2=apache-2.4
|
|
- S1=PHP V1=8.1 S2=HTTPD V2=apache-2.4
|
|
# PHP vs Nginx stable
|
|
- S1=PHP V1=5.3 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=5.4 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=5.5 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=5.6 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=7.0 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=7.1 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=7.2 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=7.3 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=7.4 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=8.0 S2=HTTPD V2=nginx-stable
|
|
- S1=PHP V1=8.1 S2=HTTPD V2=nginx-stable
|
|
# PHP vs Nginx mainline
|
|
- S1=PHP V1=5.3 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=5.4 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=5.5 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=5.6 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=7.0 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=7.1 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=7.2 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=7.3 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=7.4 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=8.0 S2=HTTPD V2=nginx-mainline
|
|
- S1=PHP V1=8.1 S2=HTTPD V2=nginx-mainline
|
|
|
|
###
|
|
### Test all other bundled services
|
|
###
|
|
### PHP 7.4 vs XYZ
|
|
###
|
|
# PHP 7.4 vs MySQL
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mysql-5.5
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mysql-5.6
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mysql-5.7
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mysql-8.0
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-5.5
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.0
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.1
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.2
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.3
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.4
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=mariadb-10.5
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=percona-5.5
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=percona-5.6
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=percona-5.7
|
|
- S1=PHP V1=7.4 S2=MYSQL V2=percona-8.0
|
|
# PHP 7.4 vs PgSQL
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.0
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.1
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.2
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.2-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.3
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.3-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.4
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.4-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.5
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.5-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.6
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=9.6-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.0
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.0-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.1
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.1-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.2
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.2-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.3
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.3-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.4
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.4-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.5
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.5-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.6
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=10.6-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.0
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.0-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.1
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.1-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.2
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.2-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.3
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.3-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.4
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.4-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.5
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.5-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.6
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.6-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.7
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.7-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.8
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.8-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.9
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=11.9-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.0
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.0-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.1
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.1-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.2
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.2-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.3
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.3-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.4
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=12.4-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=13.0
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=13.0-alpine
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=latest
|
|
- S1=PHP V1=7.4 S2=PGSQL V2=alpine
|
|
# PHP 7.4 vs Redis
|
|
- S1=PHP V1=7.4 S2=REDIS V2=2.8
|
|
- S1=PHP V1=7.4 S2=REDIS V2=3.0
|
|
- S1=PHP V1=7.4 S2=REDIS V2=3.0-alpine
|
|
- S1=PHP V1=7.4 S2=REDIS V2=3.2
|
|
- S1=PHP V1=7.4 S2=REDIS V2=3.2-alpine
|
|
- S1=PHP V1=7.4 S2=REDIS V2=4.0
|
|
- S1=PHP V1=7.4 S2=REDIS V2=4.0-alpine
|
|
- S1=PHP V1=7.4 S2=REDIS V2=5.0
|
|
- S1=PHP V1=7.4 S2=REDIS V2=5.0-alpine
|
|
- S1=PHP V1=7.4 S2=REDIS V2=6.0
|
|
- S1=PHP V1=7.4 S2=REDIS V2=6.0-alpine
|
|
- S1=PHP V1=7.4 S2=REDIS V2=latest
|
|
- S1=PHP V1=7.4 S2=REDIS V2=alpine
|
|
# PHP 7.4 vs Memcached
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.4
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.4-alpine
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.5
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.5-alpine
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.6
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=1.6-alpine
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=latest
|
|
- S1=PHP V1=7.4 S2=MEMCD V2=alpine
|
|
# PHP 7.4 vs MongoDB
|
|
- S1=PHP V1=7.4 S2=MONGO V2=2.8
|
|
- S1=PHP V1=7.4 S2=MONGO V2=3.0
|
|
- S1=PHP V1=7.4 S2=MONGO V2=3.2
|
|
- S1=PHP V1=7.4 S2=MONGO V2=3.4
|
|
- S1=PHP V1=7.4 S2=MONGO V2=3.6
|
|
- S1=PHP V1=7.4 S2=MONGO V2=4.0
|
|
- S1=PHP V1=7.4 S2=MONGO V2=4.2
|
|
- S1=PHP V1=7.4 S2=MONGO V2=4.4
|
|
- S1=PHP V1=7.4 S2=MONGO V2=latest
|
|
|
|
|
|
#jobs:
|
|
# allow_failures:
|
|
# - env: S1=DOCUMENTATION V1=linkcheck2
|
|
|
|
|
|
###
|
|
### Installation
|
|
###
|
|
install:
|
|
# Update Debian/Ubuntu package index
|
|
- if [ "${S1}" != "MODULES" ] && [ "${S1}" != "DOCUMENTATION" ] && [ "${S1}" != "UPDATE" ]; then
|
|
until sudo apt-get update -qq; do sleep 5; done
|
|
fi
|
|
|
|
# Determine latest Docker version in apt
|
|
- DOCKER_APT="";
|
|
if [ "${S1}" = "DOCKER" ]; then
|
|
DOCKER_APT="$( curl -sS https://raw.githubusercontent.com/cytopia/tools/master/docker-apt-versions | sh -s "${V1}" )";
|
|
fi;
|
|
if [ -n "${DOCKER_APT}" ]; then
|
|
DOCKER_APT="=${DOCKER_APT}";
|
|
fi;
|
|
echo "${DOCKER_APT}";
|
|
|
|
# Determine latest Docker Compose version
|
|
- if [ "${S2}" = "COMPOSE" ]; then
|
|
COMPOSE_VERSION="$( curl -sS https://raw.githubusercontent.com/cytopia/tools/master/docker-compose-versions | sh -s "${V2}" )";
|
|
else
|
|
COMPOSE_VERSION="$( curl -sS https://raw.githubusercontent.com/cytopia/tools/master/docker-compose-versions | sh -s 1 )";
|
|
fi;
|
|
echo "${COMPOSE_VERSION}";
|
|
|
|
# Install Docker and Docker Compose
|
|
- if [ "${S1}" != "MODULES" ] && [ "${S1}" != "DOCUMENTATION" ] && [ "${S1}" != "UPDATE" ]; then
|
|
until sudo apt-get -y -qq -o Dpkg::Options::="--force-confnew" install docker-ce${DOCKER_APT}; do sleep 5; done;
|
|
until curl -L -sS https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose; do sleep 5; done;
|
|
chmod +x docker-compose;
|
|
sudo mv -f docker-compose /usr/local/bin;
|
|
fi
|
|
|
|
# Provide retry function
|
|
- retry() {
|
|
for ((n=0; n<60; n++)); do
|
|
echo "[${n}] ${*}";
|
|
if eval "${*}"; then
|
|
return 0;
|
|
fi;
|
|
sleep 1;
|
|
done;
|
|
return 1;
|
|
}
|
|
|
|
|
|
###
|
|
### Before Script
|
|
###
|
|
before_script:
|
|
# Disable services enabled by default
|
|
# http://docs.travis-ci.com/user/database-setup/#MySQL
|
|
- sudo service mysql stop || true
|
|
- sudo service postgresql stop || true
|
|
- sudo service memcached stop || true
|
|
- sudo service redis stop || true
|
|
- sudo service mongodb stop || true
|
|
- netstat -tuln
|
|
|
|
# Ensure Docker is restarted
|
|
- sudo service docker stop || true
|
|
- sudo service docker start || true
|
|
|
|
# Show Docker/Docker Compose
|
|
- if [ "${S1}" != "DOCUMENTATION" ]; then
|
|
docker --version;
|
|
docker-compose --version;
|
|
fi
|
|
|
|
|
|
###
|
|
### Test
|
|
###
|
|
script:
|
|
|
|
###
|
|
### Test Modules
|
|
###
|
|
- if [ "${S1}" = "MODULES" ]; then
|
|
cd .tests/;
|
|
retry make update-readme;
|
|
fi
|
|
- if [ "${S1}" = "MODULES" ]; then
|
|
git diff --quiet || { echo "Build Changes"; git diff; git status; false; };
|
|
fi
|
|
|
|
###
|
|
### Test Documentation
|
|
###
|
|
- if [ "${S1}" = "DOCUMENTATION" ] && [ "${V1}" = "Build" ]; then
|
|
cd docs/;
|
|
retry make build;
|
|
fi
|
|
- if [ "${S1}" = "DOCUMENTATION" ] && [ "${V1}" = "linkcheck" ]; then
|
|
cd docs/;
|
|
retry make linkcheck;
|
|
fi
|
|
- if [ "${S1}" = "DOCUMENTATION" ] && [ "${V1}" = "linkcheck2" ]; then
|
|
cd docs/;
|
|
retry make linkcheck2;
|
|
fi
|
|
|
|
###
|
|
### Test Update script
|
|
###
|
|
- if [ "${S1}" = "UPDATE" ]; then
|
|
./update-docker.sh "${V1}";
|
|
fi
|
|
|
|
###
|
|
### Test Devilbox
|
|
###
|
|
- if [ "${S1}" != "MODULES" ] && [ "${S1}" != "DOCUMENTATION" ] && [ "${S1}" != "UPDATE" ]; then
|
|
cd .tests/;
|
|
fi
|
|
- if [ "${S1}" != "MODULES" ] && [ "${S1}" != "DOCUMENTATION" ] && [ "${S1}" != "UPDATE" ]; then
|
|
if [ "${S1}" != "DOCKER" ]; then
|
|
retry make configure KEY="${S1}_SERVER" VAL="${V1}" &&
|
|
retry make configure KEY="${S2}_SERVER" VAL="${V2}";
|
|
fi
|
|
fi
|
|
- if [ "${S1}" != "MODULES" ] && [ "${S1}" != "DOCUMENTATION" ] && [ "${S1}" != "UPDATE" ]; then
|
|
retry make start &&
|
|
retry make test-smoke-modules &&
|
|
retry make test-smoke-config &&
|
|
retry make test-smoke-intranet &&
|
|
retry make test-smoke-vendors &&
|
|
retry make test-smoke-vhosts &&
|
|
retry make test-smoke-rproxies &&
|
|
retry make test-smoke-ssl &&
|
|
retry make test-smoke-bind &&
|
|
retry make test-smoke-autostart &&
|
|
retry make test-smoke-framework-cakephp &&
|
|
retry make test-smoke-framework-drupal &&
|
|
retry make test-smoke-framework-wordpress &&
|
|
retry make test-smoke-container;
|
|
fi
|