--- ### ### 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