### ### 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 ### ### 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 # 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 # 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 # 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 ### ### Test all other bundled services ### ### PHP 7.2 vs XYZ ### # PHP 7.2 vs MySQL - S1=PHP V1=7.2 S2=MYSQL V2=mysql-5.5 - S1=PHP V1=7.2 S2=MYSQL V2=mysql-5.6 - S1=PHP V1=7.2 S2=MYSQL V2=mysql-5.7 - S1=PHP V1=7.2 S2=MYSQL V2=mysql-8.0 - S1=PHP V1=7.2 S2=MYSQL V2=mariadb-5.5 - S1=PHP V1=7.2 S2=MYSQL V2=mariadb-10.0 - S1=PHP V1=7.2 S2=MYSQL V2=mariadb-10.1 - S1=PHP V1=7.2 S2=MYSQL V2=mariadb-10.2 - S1=PHP V1=7.2 S2=MYSQL V2=percona-5.5 - S1=PHP V1=7.2 S2=MYSQL V2=percona-5.6 - S1=PHP V1=7.2 S2=MYSQL V2=percona-5.7 # PHP 7.2 vs PgSQL - S1=PHP V1=7.2 S2=PGSQL V2=9.0 - S1=PHP V1=7.2 S2=PGSQL V2=9.1 - S1=PHP V1=7.2 S2=PGSQL V2=9.2 - S1=PHP V1=7.2 S2=PGSQL V2=9.2-alpine - S1=PHP V1=7.2 S2=PGSQL V2=9.3 - S1=PHP V1=7.2 S2=PGSQL V2=9.3-alpine - S1=PHP V1=7.2 S2=PGSQL V2=9.4 - S1=PHP V1=7.2 S2=PGSQL V2=9.4-alpine - S1=PHP V1=7.2 S2=PGSQL V2=9.5 - S1=PHP V1=7.2 S2=PGSQL V2=9.5-alpine - S1=PHP V1=7.2 S2=PGSQL V2=9.6 - S1=PHP V1=7.2 S2=PGSQL V2=9.6-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.0 - S1=PHP V1=7.2 S2=PGSQL V2=10.0-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.1 - S1=PHP V1=7.2 S2=PGSQL V2=10.1-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.2 - S1=PHP V1=7.2 S2=PGSQL V2=10.2-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.3 - S1=PHP V1=7.2 S2=PGSQL V2=10.3-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.4 - S1=PHP V1=7.2 S2=PGSQL V2=10.4-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.5 - S1=PHP V1=7.2 S2=PGSQL V2=10.5-alpine - S1=PHP V1=7.2 S2=PGSQL V2=10.6 - S1=PHP V1=7.2 S2=PGSQL V2=10.6-alpine - S1=PHP V1=7.2 S2=PGSQL V2=11.0 - S1=PHP V1=7.2 S2=PGSQL V2=11.0-alpine - S1=PHP V1=7.2 S2=PGSQL V2=11.1 - S1=PHP V1=7.2 S2=PGSQL V2=11.1-alpine # PHP 7.2 vs Redis - S1=PHP V1=7.2 S2=REDIS V2=2.8 - S1=PHP V1=7.2 S2=REDIS V2=3.0 - S1=PHP V1=7.2 S2=REDIS V2=3.0-alpine - S1=PHP V1=7.2 S2=REDIS V2=3.2 - S1=PHP V1=7.2 S2=REDIS V2=3.2-alpine - S1=PHP V1=7.2 S2=REDIS V2=4.0 - S1=PHP V1=7.2 S2=REDIS V2=4.0-alpine - S1=PHP V1=7.2 S2=REDIS V2=5.0 - S1=PHP V1=7.2 S2=REDIS V2=5.0-alpine # PHP 7.2 vs Memcached - S1=PHP V1=7.2 S2=MEMCD V2=1.4 - S1=PHP V1=7.2 S2=MEMCD V2=1.4-alpine - S1=PHP V1=7.2 S2=MEMCD V2=1.5 - S1=PHP V1=7.2 S2=MEMCD V2=1.5-alpine # PHP 7.2 vs MongoDB - S1=PHP V1=7.2 S2=MONGO V2=2.8 - S1=PHP V1=7.2 S2=MONGO V2=3.0 - S1=PHP V1=7.2 S2=MONGO V2=3.2 - S1=PHP V1=7.2 S2=MONGO V2=3.4 - S1=PHP V1=7.2 S2=MONGO V2=3.6 - S1=PHP V1=7.2 S2=MONGO V2=4.0 ### ### 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 # Install dependencies for documentation - if [ "${S1}" = "DOCUMENTATION" ]; then until pip install sphinx; do sleep 5; done; until pip install sphinx-autobuild; do sleep 5; done; until pip install recommonmark; do sleep 5; done; until pip install sphinx_rtd_theme; 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 ### ### 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 Python/pip - if [ "${S1}" = "DOCUMENTATION" ]; then pip freeze; pip --version; python --version; fi # Show Docker/Docker Compose - if [ "${S1}" != "DOCUMENTATION" ]; then docker --version; docker-compose --version; fi ### ### Test ### script: - if [ "${S1}" = "MODULES" ]; then cd .tests/; make update-readme; git diff --quiet || { echo "Build Changes"; git diff; git status; false; } elif [ "${S1}" = "DOCUMENTATION" ]; then cd docs/; make build; make linkcheck; make linkcheck2; elif [ "${S1}" = "UPDATE" ]; then ./update-docker.sh "${V1}"; elif [ "${S1}" = "DOCKER" ]; then cd .tests/; make init; make start; make info; make test; else cd .tests/; make init; make configure SRV="${S1}_SERVER" VER="${V1}"; make configure SRV="${S2}_SERVER" VER="${V2}"; make start; make info; make test; fi