diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index 5bdf88d9..0e2fd1af 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -13,8 +13,8 @@ error_reporting(-1); putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); -$DEVILBOX_VERSION = 'v1.11.0'; -$DEVILBOX_DATE = '2022-03-22'; +$DEVILBOX_VERSION = 'v2.0.0'; +$DEVILBOX_DATE = '2022-03-28'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; // diff --git a/.github/workflows/ci-smoke-linux.yml b/.github/workflows/ci-smoke-linux.yml deleted file mode 100644 index fb6411bd..00000000 --- a/.github/workflows/ci-smoke-linux.yml +++ /dev/null @@ -1,228 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: Linux - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs on Pull Requests - pull_request: - - # Runs on master Branch and Tags - push: - branches: - - master - tags: - - '[0-9]+.[0-9]+*' - - -# ------------------------------------------------------------------------------------------------- -# What to run -# ------------------------------------------------------------------------------------------------- -jobs: - smoke_linux: - - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - php: - - "5.3" - - "5.4" - - "5.5" - - "5.6" - - "7.0" - - "7.1" - - "7.2" - - "7.3" - - "7.4" - - "8.0" - - "8.1" - - "8.2" - httpd: - - "apache-2.2" - - "apache-2.4" - - "nginx-stable" - - "nginx-mainline" - - name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]" - steps: - - # ------------------------------------------------------------ - # Checkout repository - # ------------------------------------------------------------ - - name: Checkout repository - uses: actions/checkout@v1 - - - name: Show environment - shell: bash - run: | - env - - - name: Show network - shell: bash - run: | - netstat -an || true - ss -tlun || true - - - name: Show Docker version - shell: bash - run: | - docker version - - # ------------------------------------------------------------ - # Setup - # ------------------------------------------------------------ - - name: Configure - shell: bash - run: | - cd .tests/ - # Set the two candidates to test against - make configure KEY=PHP_SERVER VAL=${PHP} - make configure KEY=HTTPD_SERVER VAL=${HTTPD} - # 3306 is taken, so chose another one - make configure KEY=HOST_PORT_MYSQL VAL=3307 - env: - PHP: ${{ matrix.php }} - HTTPD: ${{ matrix.httpd }} - - - name: Pull images - shell: bash - run: | - cd .tests/ - make pull - - - name: Startup - shell: bash - run: | - cd .tests/ - make start - - - name: Docker logs - shell: bash - run: | - cd .tests/ - make logs - - # ------------------------------------------------------------ - # Run tests - # ------------------------------------------------------------ - - name: Test Modules - shell: bash - run: | - cd .tests/ - make test-smoke-modules - if: success() || failure() - - - name: Test Config - shell: bash - run: | - cd .tests/ - make test-smoke-config - if: success() || failure() - - - name: Test Intranet - shell: bash - run: | - cd .tests/ - make test-smoke-intranet - if: success() || failure() - - - name: Test Vendors - shell: bash - run: | - cd .tests/ - make test-smoke-vendors - if: success() || failure() - - - name: Test Vhosts - shell: bash - run: | - cd .tests/ - make test-smoke-vhosts - if: success() || failure() - - - name: Test Reverse Proxy - shell: bash - run: | - cd .tests/ - make test-smoke-rproxies - if: success() || failure() - - - name: Test SSL - shell: bash - run: | - cd .tests/ - make test-smoke-ssl - if: success() || failure() - - - name: Test Bind - shell: bash - run: | - cd .tests/ - make test-smoke-bind - if: success() || failure() - - - name: Test Autostart - shell: bash - run: | - cd .tests/ - make test-smoke-autostart - if: success() || failure() - - - name: "Test Framework: CakePHP" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-cakephp - if: success() || failure() - - - name: "Test Framework: Drupal" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-drupal - if: success() || failure() - - - name: "Test Framework: Wordpress" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-wordpress - if: success() || failure() - - - name: "Test Container" - shell: bash - run: | - retry() { - for n in $(seq 5); do - echo "[${n}/5] ${*}"; - if eval "${*}"; then - echo "[SUCC] ${n}/5"; - return 0; - fi; - sleep 5; - echo "[FAIL] ${n}/5"; - done; - return 1; - } - cd .tests/ - retry make test-smoke-container - if: success() || failure() - - # ------------------------------------------------------------ - # Finish - # ------------------------------------------------------------ - - - name: "Finish: Docker logs" - shell: bash - run: | - cd .tests/ - make logs - if: success() || failure() diff --git a/.github/workflows/ci-smoke-macos.yml.off b/.github/workflows/ci-smoke-macos.yml.off deleted file mode 100644 index ce84531f..00000000 --- a/.github/workflows/ci-smoke-macos.yml.off +++ /dev/null @@ -1,262 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: MacOS - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs on Pull Requests - pull_request: - - # Runs on master Branch and Tags - push: - branches: - - master - tags: - - '[0-9]+.[0-9]+*' - - -# ------------------------------------------------------------------------------------------------- -# What to run -# ------------------------------------------------------------------------------------------------- -jobs: - smoke_macos: - - runs-on: macos-latest - - strategy: - fail-fast: false - matrix: - php: - - "7.2" - httpd: - - "nginx-stable" - - name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]" - steps: - - # ------------------------------------------------------------ - # Checkout repository - # ------------------------------------------------------------ - - name: Checkout repository - uses: actions/checkout@v1 - - - name: "[Pre] Install Requirements" - shell: bash - run: | - brew install coreutils - brew install bash - brew install socat - - - name: "[Pre] Install Docker" - shell: bash - run: | - brew install docker docker-machine-driver-xhyve - sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve - sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve - while ! docker-machine create --driver xhyve default; do - docker-machine rm -f default - sleep 1; - done - # Export variable (this target) - eval "$(docker-machine env default)" - DOCKER_TLS_VERIFY="$( docker-machine env default | grep DOCKER_TLS_VERIFY | sed -e 's/.*="//g' -e 's/"$//g' )" - DOCKER_HOST="$( docker-machine env default | grep DOCKER_HOST | sed -e 's/.*="//g' -e 's/"$//g' )" - DOCKER_CERT_PATH="$( docker-machine env default | grep DOCKER_CERT_PATH | sed -e 's/.*="//g' -e 's/"$//g' )" - DOCKER_MACHINE_NAME="$( docker-machine env default | grep DOCKER_MACHINE_NAME | sed -e 's/.*="//g' -e 's/"$//g' )" - # Export variable (this other targets) - # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#set-an-environment-variable-set-env - echo ::set-env name=DOCKER_TLS_VERIFY::${DOCKER_TLS_VERIFY} - echo ::set-env name=DOCKER_HOST::${DOCKER_HOST} - echo ::set-env name=DOCKER_CERT_PATH::${DOCKER_CERT_PATH} - echo ::set-env name=DOCKER_MACHINE_NAME::${DOCKER_MACHINE_NAME} - # Show info - docker-machine ls - docker-machine env default - docker version - - - name: "[Pre] Install Docker Compose" - shell: bash - run: | - sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - docker-compose version - - - name: "[Pre] Setup Docker machine" - shell: bash - run: | - # Setup DNS records - echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts - - # Portforwarding from DOCKER_HOST to local - HOST="$( echo "${DOCKER_HOST}" | sed -e 's|^tcp://||g' -e 's|:.*||g' )" - echo "${HOST}" - sudo socat -s -d -d tcp-listen:80,reuseaddr,fork tcp:${HOST}:80 & - sleep 2 - sudo socat -s -d -d tcp-listen:443,reuseaddr,fork tcp:${HOST}:443 & - sleep 2 - if ! netstat -an | grep -i LISTEN | grep -E '(:80)|(\.80)\s'; then - netstat -an | grep -i LISTEN; - false; - fi - if ! netstat -an | grep -i LISTEN | grep -E '(:443)|(\.443)\s'; then - netstat -an | grep -i LISTEN; - false; - fi - host localhost - curl -sS -I 'http://localhost:80' || true - curl -sS -I 'https://localhost:443' || true - - - name: "[Info] Show environment" - shell: bash - run: | - env - if: success() || failure() - - - name: "[Info] Show network" - shell: bash - run: | - netstat -an || true - ss -tlun || true - if: success() || failure() - - # ------------------------------------------------------------ - # Setup - # ------------------------------------------------------------ - - name: Configure - shell: bash - run: | - cd .tests/ - # Set the two candidates to test against - make configure KEY=PHP_SERVER VAL=${PHP} - make configure KEY=HTTPD_SERVER VAL=${HTTPD} - # 3306 is taken, so chose another one - make configure KEY=HOST_PORT_MYSQL VAL=3307 - env: - PHP: ${{ matrix.php }} - HTTPD: ${{ matrix.httpd }} - if: success() || failure() - - - name: Pull images - shell: bash - run: | - cd .tests/ - make pull - if: success() || failure() - - - name: Startup - shell: bash - run: | - cd .tests/ - make start - if: success() || failure() - - - name: Docker logs - shell: bash - run: | - cd .tests/ - make logs - if: success() || failure() - - # ------------------------------------------------------------ - # Run tests - # ------------------------------------------------------------ - - name: Test Modules - shell: bash - run: | - cd .tests/ - make test-smoke-modules - if: success() || failure() - - - name: Test Config - shell: bash - run: | - cd .tests/ - make test-smoke-config - if: success() || failure() - - - name: Test Intranet - shell: bash - run: | - cd .tests/ - make test-smoke-intranet - if: success() || failure() - - - name: Test Vendors - shell: bash - run: | - cd .tests/ - make test-smoke-vendors - if: success() || failure() - - - name: Test Vhosts - shell: bash - run: | - cd .tests/ - make test-smoke-vhosts - if: success() || failure() - - - name: Test Reverse Proxy - shell: bash - run: | - cd .tests/ - make test-smoke-rproxies - if: success() || failure() - - - name: Test SSL - shell: bash - run: | - cd .tests/ - make test-smoke-ssl - if: success() || failure() - - - name: Test Bind - shell: bash - run: | - cd .tests/ - make test-smoke-bind - if: success() || failure() - - - name: Test Autostart - shell: bash - run: | - cd .tests/ - make test-smoke-autostart - if: success() || failure() - - - name: "Test Framework: CakePHP" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-cakephp - if: success() || failure() - - - name: "Test Framework: Drupal" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-drupal - if: success() || failure() - - - name: "Test Framework: Wordpress" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-wordpress - if: success() || failure() - - # ------------------------------------------------------------ - # Finish - # ------------------------------------------------------------ - - - name: "[Post] Docker logs" - shell: bash - run: | - cd .tests/ - make logs - if: success() || failure() diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 6d686336..b8183a53 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -17,7 +17,6 @@ on: push: branches: - master - tags: # ------------------------------------------------------------------------------------------------- @@ -25,9 +24,7 @@ on: # ------------------------------------------------------------------------------------------------- jobs: docs: - runs-on: ubuntu-latest - strategy: fail-fast: false matrix: @@ -46,24 +43,9 @@ jobs: uses: actions/checkout@v1 - name: Check documentation - shell: bash - run: | - retry() { - for n in $(seq ${RETRIES}); do - echo "[${n}/${RETRIES}] ${*}"; - if eval "${*}"; then - echo "[SUCC] ${n}/${RETRIES}"; - return 0; - fi; - sleep ${PAUSE}; - echo "[FAIL] ${n}/${RETRIES}"; - done; - return 1; - } - - cd docs - retry make ${TARGET} - env: - TARGET: ${{ matrix.target }} - RETRIES: 20 - PAUSE: 10 + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 5 + workdir: "${{ github.workspace }}/docs/" + command: | + make ${{ matrix.target }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4296262e..c33c5b09 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,6 @@ on: push: branches: - master - tags: # ------------------------------------------------------------------------------------------------- diff --git a/.github/workflows/params-httpd.yml b/.github/workflows/params-httpd.yml new file mode 100644 index 00000000..56c7c3d0 --- /dev/null +++ b/.github/workflows/params-httpd.yml @@ -0,0 +1,59 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + # Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later + # PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server + MATRIX: >- + [ + {"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "alpine"}, + {"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "debian"}, + + {"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "alpine"}, + {"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "debian"}, + + {"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "alpine"}, + {"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "debian"}, + + {"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "alpine"}, + {"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "debian"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-memcd.yml b/.github/workflows/params-memcd.yml new file mode 100644 index 00000000..82ffdef1 --- /dev/null +++ b/.github/workflows/params-memcd.yml @@ -0,0 +1,54 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + MATRIX: >- + [ + {"MEMCD_SERVER": "Memcd 1.4"}, + {"MEMCD_SERVER": "Memcd 1.4-alpine"}, + {"MEMCD_SERVER": "Memcd 1.5"}, + {"MEMCD_SERVER": "Memcd 1.5-alpine"}, + {"MEMCD_SERVER": "Memcd 1.6"}, + {"MEMCD_SERVER": "Memcd 1.6-alpine"}, + {"MEMCD_SERVER": "Memcd latest"}, + {"MEMCD_SERVER": "Memcd alpine"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-mongo.yml b/.github/workflows/params-mongo.yml new file mode 100644 index 00000000..27265612 --- /dev/null +++ b/.github/workflows/params-mongo.yml @@ -0,0 +1,56 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + # CI for Mongo 2.8 and Mongo 3.0 removed due to local segfault and non-segfault, but error in CI + # https://github.com/docker-library/mongo/issues/251 + # + # CI for Mongo 3.2 and 3.4 removed due to non-reproducible error in CI + MATRIX: >- + [ + {"MONGO_SERVER": "Mongo 3.6"}, + {"MONGO_SERVER": "Mongo 4.0"}, + {"MONGO_SERVER": "Mongo 4.2"}, + {"MONGO_SERVER": "Mongo 4.4"}, + {"MONGO_SERVER": "Mongo 5.0"}, + {"MONGO_SERVER": "Mongo latest"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-mysql.yml b/.github/workflows/params-mysql.yml new file mode 100644 index 00000000..c255618d --- /dev/null +++ b/.github/workflows/params-mysql.yml @@ -0,0 +1,64 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + MATRIX: >- + [ + {"MYSQL_SERVER": "mysql-5.5"}, + {"MYSQL_SERVER": "mysql-5.6"}, + {"MYSQL_SERVER": "mysql-5.7"}, + {"MYSQL_SERVER": "mysql-8.0"}, + {"MYSQL_SERVER": "percona-5.5"}, + {"MYSQL_SERVER": "percona-5.6"}, + {"MYSQL_SERVER": "percona-5.7"}, + {"MYSQL_SERVER": "percona-8.0"}, + {"MYSQL_SERVER": "mariadb-5.5"}, + {"MYSQL_SERVER": "mariadb-10.0"}, + {"MYSQL_SERVER": "mariadb-10.1"}, + {"MYSQL_SERVER": "mariadb-10.2"}, + {"MYSQL_SERVER": "mariadb-10.3"}, + {"MYSQL_SERVER": "mariadb-10.4"}, + {"MYSQL_SERVER": "mariadb-10.5"}, + {"MYSQL_SERVER": "mariadb-10.6"}, + {"MYSQL_SERVER": "mariadb-10.7"}, + {"MYSQL_SERVER": "mariadb-10.8"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-pgsql.yml b/.github/workflows/params-pgsql.yml new file mode 100644 index 00000000..1d9a8630 --- /dev/null +++ b/.github/workflows/params-pgsql.yml @@ -0,0 +1,70 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + MATRIX: >- + [ + {"PGSQL_SERVER": "PgSQL 9.0"}, + {"PGSQL_SERVER": "PgSQL 9.1"}, + {"PGSQL_SERVER": "PgSQL 9.2"}, + {"PGSQL_SERVER": "PgSQL 9.2-alpine"}, + {"PGSQL_SERVER": "PgSQL 9.3"}, + {"PGSQL_SERVER": "PgSQL 9.3-alpine"}, + {"PGSQL_SERVER": "PgSQL 9.4"}, + {"PGSQL_SERVER": "PgSQL 9.4-alpine"}, + {"PGSQL_SERVER": "PgSQL 9.5"}, + {"PGSQL_SERVER": "PgSQL 9.5-alpine"}, + {"PGSQL_SERVER": "PgSQL 9.6"}, + {"PGSQL_SERVER": "PgSQL 9.6-alpine"}, + {"PGSQL_SERVER": "PgSQL 10"}, + {"PGSQL_SERVER": "PgSQL 10-alpine"}, + {"PGSQL_SERVER": "PgSQL 11"}, + {"PGSQL_SERVER": "PgSQL 11-alpine"}, + {"PGSQL_SERVER": "PgSQL 12"}, + {"PGSQL_SERVER": "PgSQL 12-alpine"}, + {"PGSQL_SERVER": "PgSQL 13"}, + {"PGSQL_SERVER": "PgSQL 13-alpine"}, + {"PGSQL_SERVER": "PgSQL 14"}, + {"PGSQL_SERVER": "PgSQL 14-alpine"}, + {"PGSQL_SERVER": "PgSQL latest"}, + {"PGSQL_SERVER": "PgSQL alpine"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-php.yml b/.github/workflows/params-php.yml new file mode 100644 index 00000000..76572e12 --- /dev/null +++ b/.github/workflows/params-php.yml @@ -0,0 +1,99 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + # Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later + # PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server + MATRIX: >- + [ + {"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.2"}, + {"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.2"}, + {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.2"}, + {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.2"}, + {"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.2"}, + {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.2"}, + + {"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.4"}, + + {"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-stable"}, + + {"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"}, + {"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-mainline"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/params-redis.yml b/.github/workflows/params-redis.yml new file mode 100644 index 00000000..212376bb --- /dev/null +++ b/.github/workflows/params-redis.yml @@ -0,0 +1,61 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: params + + +# ------------------------------------------------------------------------------------------------- +# Custom Variables +# ------------------------------------------------------------------------------------------------- +env: + MATRIX: >- + [ + {"REDIS_SERVER": "Redis 2.8"}, + {"REDIS_SERVER": "Redis 3.0"}, + {"REDIS_SERVER": "Redis 3.0-alpine"}, + {"REDIS_SERVER": "Redis 3.2"}, + {"REDIS_SERVER": "Redis 3.2-alpine"}, + {"REDIS_SERVER": "Redis 4.0"}, + {"REDIS_SERVER": "Redis 4.0-alpine"}, + {"REDIS_SERVER": "Redis 5.0"}, + {"REDIS_SERVER": "Redis 5.0-alpine"}, + {"REDIS_SERVER": "Redis 6.0"}, + {"REDIS_SERVER": "Redis 6.0-alpine"}, + {"REDIS_SERVER": "Redis 6.2"}, + {"REDIS_SERVER": "Redis 6.2-alpine"}, + {"REDIS_SERVER": "Redis latest"}, + {"REDIS_SERVER": "Redis alpine"} + ] + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + workflow_call: + outputs: + matrix: + description: "The determined version matrix" + value: ${{ jobs.params.outputs.matrix }} + +jobs: + params: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + - name: "[Set-Output] Matrix" + id: set-matrix + run: | + echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + + - name: "[DEBUG] Show settings'" + run: | + echo 'Matrix' + echo '--------------------' + echo '${{ steps.set-matrix.outputs.matrix }}' + echo diff --git a/.github/workflows/test-config.yml b/.github/workflows/test-config.yml deleted file mode 100644 index d5798bb5..00000000 --- a/.github/workflows/test-config.yml +++ /dev/null @@ -1,242 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: Config - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs on Pull Requests - pull_request: - - # Runs on master Branch and Tags - push: - branches: - - master - tags: - - '[0-9]+.[0-9]+*' - - -# ------------------------------------------------------------------------------------------------- -# What to run -# ------------------------------------------------------------------------------------------------- -jobs: - test_config: - - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - php: - - "5.3" - - "5.4" - - "5.5" - - "5.6" - - "7.0" - - "7.1" - - "7.2" - - "7.3" - - "7.4" - - "8.0" - - "8.1" - - "8.2" - httpd: - - "apache-2.2" - - "apache-2.4" - - "nginx-stable" - - "nginx-mainline" - - name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]" - steps: - - # ------------------------------------------------------------ - # Checkout repository - # ------------------------------------------------------------ - - name: Checkout repository - uses: actions/checkout@v1 - - - name: Show environment - shell: bash - run: | - env - - - name: Show network - shell: bash - run: | - netstat -an || true - ss -tlun || true - - - name: Show Docker version - shell: bash - run: | - docker version - - # ------------------------------------------------------------ - # Setup - # ------------------------------------------------------------ - - name: Configure - shell: bash - run: | - cd .tests/ - # Set the two candidates to test against - make configure KEY=PHP_SERVER VAL=${PHP} - make configure KEY=HTTPD_SERVER VAL=${HTTPD} - # 3306 is taken, so chose another one - make configure KEY=HOST_PORT_MYSQL VAL=3307 - - # Test full customization - make configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL="$(( RANDOM % 3 ))" - make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))" - make configure KEY=TLD_SUFFIX VAL=loc2 - make configure KEY=TIMEZONE VAL='Europe/Berlin' - make configure KEY=PHP_MODULES_DISABLE VAL= - make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config - make configure KEY=HOST_PORT_HTTPD VAL=8080 - make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443 - make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass - make configure KEY=PGSQL_ROOT_USER VAL=pgroot - make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass - make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0 - env: - PHP: ${{ matrix.php }} - HTTPD: ${{ matrix.httpd }} - - - name: Pull images - shell: bash - run: | - cd .tests/ - make pull - - - name: Startup - shell: bash - run: | - cd .tests/ - make start - - - name: Docker logs - shell: bash - run: | - cd .tests/ - make logs - - # ------------------------------------------------------------ - # Run tests - # ------------------------------------------------------------ - - name: Test Modules - shell: bash - run: | - cd .tests/ - make test-smoke-modules - if: success() || failure() - - - name: Test Config - shell: bash - run: | - cd .tests/ - make test-smoke-config - if: success() || failure() - - - name: Test Intranet - shell: bash - run: | - cd .tests/ - make test-smoke-intranet - if: success() || failure() - - - name: Test Vendors - shell: bash - run: | - cd .tests/ - make test-smoke-vendors - if: success() || failure() - - - name: Test Vhosts - shell: bash - run: | - cd .tests/ - make test-smoke-vhosts - if: success() || failure() - - - name: Test Reverse Proxy - shell: bash - run: | - cd .tests/ - make test-smoke-rproxies - if: success() || failure() - - - name: Test SSL - shell: bash - run: | - cd .tests/ - make test-smoke-ssl - if: success() || failure() - - - name: Test Bind - shell: bash - run: | - cd .tests/ - make test-smoke-bind - if: success() || failure() - - - name: Test Autostart - shell: bash - run: | - cd .tests/ - make test-smoke-autostart - if: success() || failure() - - - name: "Test Framework: CakePHP" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-cakephp - if: success() || failure() - - - name: "Test Framework: Drupal" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-drupal - if: success() || failure() - - - name: "Test Framework: Wordpress" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-wordpress - if: success() || failure() - - - name: "Test Container" - shell: bash - run: | - retry() { - for n in $(seq 5); do - echo "[${n}/5] ${*}"; - if eval "${*}"; then - echo "[SUCC] ${n}/t"; - return 0; - fi; - sleep 5; - echo "[FAIL] ${n}/5"; - done; - return 1; - } - cd .tests/ - retry make test-smoke-container - if: success() || failure() - - # ------------------------------------------------------------ - # Finish - # ------------------------------------------------------------ - - - name: "Finish: Docker logs" - shell: bash - run: | - cd .tests/ - make logs - if: success() || failure() diff --git a/.github/workflows/test-httpd.yml b/.github/workflows/test-httpd.yml new file mode 100644 index 00000000..c0dbfef6 --- /dev/null +++ b/.github/workflows/test-httpd.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: Httpd + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-httpd.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-memcd.yml b/.github/workflows/test-memcd.yml new file mode 100644 index 00000000..5d073957 --- /dev/null +++ b/.github/workflows/test-memcd.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: Memcd + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-memcd.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-mongo.yml b/.github/workflows/test-mongo.yml new file mode 100644 index 00000000..cb44752e --- /dev/null +++ b/.github/workflows/test-mongo.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: Mongo + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-mongo.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-mysql.yml b/.github/workflows/test-mysql.yml new file mode 100644 index 00000000..4c12e10e --- /dev/null +++ b/.github/workflows/test-mysql.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: MySQL + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-mysql.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-pgsql.yml b/.github/workflows/test-pgsql.yml new file mode 100644 index 00000000..1f4cc9eb --- /dev/null +++ b/.github/workflows/test-pgsql.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: PgSQL + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-pgsql.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-php.yml b/.github/workflows/test-php.yml new file mode 100644 index 00000000..59558f37 --- /dev/null +++ b/.github/workflows/test-php.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: PHP + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-php.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-redis.yml b/.github/workflows/test-redis.yml new file mode 100644 index 00000000..d6a63bfb --- /dev/null +++ b/.github/workflows/test-redis.yml @@ -0,0 +1,53 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: Redis + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Runs on Pull Requests + pull_request: + + # Runs on master Branch and Tags + push: + branches: + - master + tags: + - '[0-9]+.[0-9]+*' + + +jobs: + # ----------------------------------------------------------------------------------------------- + # (1/3) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-redis.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/3) Test with default settings + # ----------------------------------------------------------------------------------------------- + default: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: false + operating_system: ubuntu-latest + + + # ----------------------------------------------------------------------------------------------- + # (3/3) Test with customizedt settings + # ----------------------------------------------------------------------------------------------- + custom: + needs: [params] + uses: ./.github/workflows/zzz-reuse-tests.yml + with: + matrix: ${{ needs.params.outputs.matrix }} + custom_config: true + operating_system: ubuntu-latest diff --git a/.github/workflows/test-versions.yml b/.github/workflows/test-versions.yml deleted file mode 100644 index 9bf7923c..00000000 --- a/.github/workflows/test-versions.yml +++ /dev/null @@ -1,318 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: Versions - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs on Pull Requests - pull_request: - - # Runs on master Branch and Tags - push: - branches: - - master - tags: - - '[0-9]+.[0-9]+*' - - -# ------------------------------------------------------------------------------------------------- -# What to run -# ------------------------------------------------------------------------------------------------- -jobs: - smoke_version: - - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - version: - - "MYSQL_SERVER=mysql-5.5" - - "MYSQL_SERVER=mysql-5.6" - - "MYSQL_SERVER=mysql-5.7" - - "MYSQL_SERVER=mysql-8.0" - - "MYSQL_SERVER=mariadb-5.5" - - "MYSQL_SERVER=mariadb-10.0" - - "MYSQL_SERVER=mariadb-10.1" - - "MYSQL_SERVER=mariadb-10.2" - - "MYSQL_SERVER=mariadb-10.3" - - "MYSQL_SERVER=mariadb-10.4" - - "MYSQL_SERVER=mariadb-10.5" - - "MYSQL_SERVER=mariadb-10.6" - - "MYSQL_SERVER=mariadb-10.7" - - "MYSQL_SERVER=mariadb-10.8" - - "MYSQL_SERVER=percona-5.5" - - "MYSQL_SERVER=percona-5.6" - - "MYSQL_SERVER=percona-5.7" - - "MYSQL_SERVER=percona-8.0" - - - "PGSQL_SERVER=9.0" - - "PGSQL_SERVER=9.1" - - "PGSQL_SERVER=9.2" - - "PGSQL_SERVER=9.2-alpine" - - "PGSQL_SERVER=9.3" - - "PGSQL_SERVER=9.3-alpine" - - "PGSQL_SERVER=9.4" - - "PGSQL_SERVER=9.4-alpine" - - "PGSQL_SERVER=9.5" - - "PGSQL_SERVER=9.5-alpine" - - "PGSQL_SERVER=9.6" - - "PGSQL_SERVER=9.6-alpine" - - "PGSQL_SERVER=10.0" - - "PGSQL_SERVER=10.0-alpine" - - "PGSQL_SERVER=10.1" - - "PGSQL_SERVER=10.1-alpine" - - "PGSQL_SERVER=10.2" - - "PGSQL_SERVER=10.2-alpine" - - "PGSQL_SERVER=10.3" - - "PGSQL_SERVER=10.3-alpine" - - "PGSQL_SERVER=10.4" - - "PGSQL_SERVER=10.4-alpine" - - "PGSQL_SERVER=10.5" - - "PGSQL_SERVER=10.5-alpine" - - "PGSQL_SERVER=10.6" - - "PGSQL_SERVER=10.6-alpine" - - "PGSQL_SERVER=11.0" - - "PGSQL_SERVER=11.0-alpine" - - "PGSQL_SERVER=11.1" - - "PGSQL_SERVER=11.1-alpine" - - "PGSQL_SERVER=11.2" - - "PGSQL_SERVER=11.2-alpine" - - "PGSQL_SERVER=11.3" - - "PGSQL_SERVER=11.3-alpine" - - "PGSQL_SERVER=11.4" - - "PGSQL_SERVER=11.4-alpine" - - "PGSQL_SERVER=11.5" - - "PGSQL_SERVER=11.5-alpine" - - "PGSQL_SERVER=11.6" - - "PGSQL_SERVER=11.6-alpine" - - "PGSQL_SERVER=11.7" - - "PGSQL_SERVER=11.7-alpine" - - "PGSQL_SERVER=11.8" - - "PGSQL_SERVER=11.8-alpine" - - "PGSQL_SERVER=11.9" - - "PGSQL_SERVER=11.9-alpine" - - "PGSQL_SERVER=12.0" - - "PGSQL_SERVER=12.0-alpine" - - "PGSQL_SERVER=12.1" - - "PGSQL_SERVER=12.1-alpine" - - "PGSQL_SERVER=12.2" - - "PGSQL_SERVER=12.2-alpine" - - "PGSQL_SERVER=12.3" - - "PGSQL_SERVER=12.3-alpine" - - "PGSQL_SERVER=13.0" - - "PGSQL_SERVER=13.0-alpine" - - "PGSQL_SERVER=latest" - - "PGSQL_SERVER=alpine" - - - "REDIS_SERVER=2.8" - - "REDIS_SERVER=3.0" - - "REDIS_SERVER=3.0-alpine" - - "REDIS_SERVER=3.2" - - "REDIS_SERVER=3.2-alpine" - - "REDIS_SERVER=4.0" - - "REDIS_SERVER=4.0-alpine" - - "REDIS_SERVER=5.0" - - "REDIS_SERVER=5.0-alpine" - - "REDIS_SERVER=6.0" - - "REDIS_SERVER=6.0-alpine" - - "REDIS_SERVER=latest" - - "REDIS_SERVER=alpine" - - - "MEMCD_SERVER=1.4" - - "MEMCD_SERVER=1.4-alpine" - - "MEMCD_SERVER=1.5" - - "MEMCD_SERVER=1.5-alpine" - - "MEMCD_SERVER=1.6" - - "MEMCD_SERVER=1.6-alpine" - - "MEMCD_SERVER=latest" - - "MEMCD_SERVER=alpine" - - - "MONGO_SERVER=2.8" - - "MONGO_SERVER=3.0" - - "MONGO_SERVER=3.2" - - "MONGO_SERVER=3.4" - - "MONGO_SERVER=3.6" - - "MONGO_SERVER=4.0" - - "MONGO_SERVER=4.2" - - "MONGO_SERVER=4.4" - - "MONGO_SERVER=latest" - name: "[${{ matrix.version }}]" - steps: - - # ------------------------------------------------------------ - # Checkout repository - # ------------------------------------------------------------ - - name: Checkout repository - uses: actions/checkout@v1 - - - name: Show environment - shell: bash - run: | - env - - - name: Show network - shell: bash - run: | - netstat -an || true - ss -tlun || true - - - name: Show Docker version - shell: bash - run: | - docker version - - # ------------------------------------------------------------ - # Setup - # ------------------------------------------------------------ - - name: Configure - shell: bash - run: | - cd .tests/ - # Set the matrix version - make configure KEY="${VERSION//=*/}" VAL="${VERSION//*=}" - # 3306 is taken, so chose another one - make configure KEY=HOST_PORT_MYSQL VAL=3307 - env: - VERSION: ${{ matrix.version }} - - - name: Pull images - shell: bash - run: | - cd .tests/ - make pull - - - name: Startup - shell: bash - run: | - cd .tests/ - make start - - - name: Docker logs - shell: bash - run: | - cd .tests/ - make logs - - # ------------------------------------------------------------ - # Run tests - # ------------------------------------------------------------ - - name: Test Modules - shell: bash - run: | - cd .tests/ - make test-smoke-modules - if: success() || failure() - - - name: Test Config - shell: bash - run: | - cd .tests/ - make test-smoke-config - if: success() || failure() - - - name: Test Intranet - shell: bash - run: | - cd .tests/ - make test-smoke-intranet - if: success() || failure() - - - name: Test Vendors - shell: bash - run: | - cd .tests/ - make test-smoke-vendors - if: success() || failure() - - - name: Test Vhosts - shell: bash - run: | - cd .tests/ - make test-smoke-vhosts - if: success() || failure() - - - name: Test Reverse Proxy - shell: bash - run: | - cd .tests/ - make test-smoke-rproxies - if: success() || failure() - - - name: Test SSL - shell: bash - run: | - cd .tests/ - make test-smoke-ssl - if: success() || failure() - - - name: Test Bind - shell: bash - run: | - cd .tests/ - make test-smoke-bind - if: success() || failure() - - - name: Test Autostart - shell: bash - run: | - cd .tests/ - make test-smoke-autostart - if: success() || failure() - - - name: "Test Framework: CakePHP" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-cakephp - if: success() || failure() - - - name: "Test Framework: Drupal" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-drupal - if: success() || failure() - - - name: "Test Framework: Wordpress" - shell: bash - run: | - cd .tests/ - make test-smoke-framework-wordpress - if: success() || failure() - - - name: "Test Container" - shell: bash - run: | - retry() { - for n in $(seq 5); do - echo "[${n}/5] ${*}"; - if eval "${*}"; then - echo "[SUCC] ${n}/t"; - return 0; - fi; - sleep 5; - echo "[FAIL] ${n}/5"; - done; - return 1; - } - cd .tests/ - retry make test-smoke-container - if: success() || failure() - - # ------------------------------------------------------------ - # Finish - # ------------------------------------------------------------ - - - name: "Finish: Docker logs" - shell: bash - run: | - cd .tests/ - make logs - if: success() || failure() diff --git a/.github/workflows/zzz-reuse-tests.yml b/.github/workflows/zzz-reuse-tests.yml new file mode 100644 index 00000000..da7441ca --- /dev/null +++ b/.github/workflows/zzz-reuse-tests.yml @@ -0,0 +1,284 @@ +--- +name: Reusable worfklow for tests + +on: + workflow_call: + ### + ### Variables + ### + inputs: + matrix: + description: 'The test matrix' + required: true + type: string + custom_config: + description: 'Apply customized .env configuration?' + required: true + type: boolean + operating_system: + description: 'The operating system to run on' + required: true + type: string + + +jobs: + # ----------------------------------------------------------------------------------------------- + # JOB: BUILD + # ----------------------------------------------------------------------------------------------- + test: + runs-on: ${{ inputs.operating_system }} + strategy: + fail-fast: false + matrix: + include: ${{ fromJson(inputs.matrix) }} + steps: + + # ------------------------------------------------------------ + # Setup repository + # ------------------------------------------------------------ + - name: "[SETUP] Checkout repository (current)" + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: "[DEBUG] Show Matrix configuration" + shell: bash + run: | + echo '${{ toJson(matrix) }}' | jq -r + + - name: "[DEBUG] Show env variables" + shell: bash + run: | + env + + - name: "[DEBUG] Show open network ports" + shell: bash + run: | + netstat -an || true + ss -tlun || true + + - name: "[DEBUG] Show Docker version" + shell: bash + run: | + docker version + + - name: "[DEBUG] Show Docker Compose version" + shell: bash + run: | + docker-compose version + + # ------------------------------------------------------------ + # Configure + # ------------------------------------------------------------ + - name: "[Configure] Configure customized configuration" + shell: bash + run: | + cd "${GITHUB_WORKSPACE}/.tests/" + + # Test full customization + make configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL="$(( RANDOM % 3 ))" + make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))" + make configure KEY=TLD_SUFFIX VAL=loc2 + make configure KEY=TIMEZONE VAL='Europe/Berlin' + make configure KEY=PHP_MODULES_DISABLE VAL= + make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config + make configure KEY=HOST_PORT_HTTPD VAL=8080 + make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443 + make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass + make configure KEY=PGSQL_ROOT_USER VAL=pgroot + make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass + make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0 + if: inputs.custom_config + + - name: "[Configure] Configure versions" + shell: bash + run: | + # (1/3) Change to .tests/ directory + cd "${GITHUB_WORKSPACE}/.tests/" + + # (2/3) Change MySQL port 3306 to 3307 (3306 is already taken) + make configure KEY=HOST_PORT_MYSQL VAL=3307 + + # (3/3) Loop over configured values + while IFS= read -r line; do + KEY="${line}" + VAL="$( echo '${{ toJson(matrix) }}' | jq -r ".${KEY}" | awk '{print $NF}' )" + echo "KEY: ${KEY}" + echo "VAL: ${VAL}" + + # Set the matrix version + make configure KEY="${KEY}" VAL="${VAL}" + done <<< "$( echo '${{ toJson(matrix) }}' | jq -r 'keys[]' )" + + - name: "[Configure] Show .env file" + shell: bash + run: | + cat .env + + + # ------------------------------------------------------------ + # Startup + # ------------------------------------------------------------ + - name: "[Startup] Pull images" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make pull + + - name: "[Startup] Start Devilbox" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make start + + - name: "[Startup] Show Docker logs" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make logs + + # ------------------------------------------------------------ + # Run tests + # ------------------------------------------------------------ + - name: Test Modules + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-modules + + - name: Test Config + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-config + if: success() || failure() + + - name: Test Intranet + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-intranet + if: success() || failure() + + - name: Test Vendors + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-vendors + if: success() || failure() + + - name: Test Vhosts + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-vhosts + if: success() || failure() + + - name: Test Reverse Proxy + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-rproxies + if: success() || failure() + + - name: Test SSL + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-ssl + if: success() || failure() + + - name: Test Bind + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-bind + if: success() || failure() + + - name: Test Autostart + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-autostart + if: success() || failure() + + - name: "Test Framework: CakePHP" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-framework-cakephp + if: success() || failure() + + - name: "Test Framework: Drupal" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-framework-drupal + if: success() || failure() + + - name: "Test Framework: Wordpress" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-framework-wordpress + if: success() || failure() + + - name: "Test Container" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make test-smoke-container + if: success() || failure() + + # ------------------------------------------------------------ + # Finish + # ------------------------------------------------------------ + - name: "Finish: Docker logs" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make logs + if: success() || failure() + + - name: "Finish: Shutdown" + uses: cytopia/shell-command-retry-action@v0.1.3 + with: + retries: 3 + workdir: "${{ github.workspace }}/.tests/" + command: | + make stop + if: success() || failure() diff --git a/.tests/Makefile b/.tests/Makefile index b4a5b4ba..c6869e62 100644 --- a/.tests/Makefile +++ b/.tests/Makefile @@ -160,6 +160,7 @@ test-smoke-autostart: ### test-smoke-framework-cakephp: $(PWD)/tests/framework-cakephp.sh + $(PWD)/tests/framework-cakephp-php8.sh test-smoke-framework-drupal: $(PWD)/tests/framework-drupal.sh diff --git a/.tests/scripts/.lib.sh b/.tests/scripts/.lib.sh index 9a60d4b8..ff53bd81 100644 --- a/.tests/scripts/.lib.sh +++ b/.tests/scripts/.lib.sh @@ -47,8 +47,7 @@ get_php_version() { # Check php -v >&2 printf "Fetching PHP version from php -v: " if ! cli_version="$( run "docker-compose exec -T php php -v \ - | head -1 \ - | grep -Eo 'PHP[[:space:]]+[0-9]+\\.[0-9]+' \ + | grep -Eo '^PHP[[:space:]]+[0-9]+\\.[0-9]+' \ | grep -Eo '[0-9]+\\.[0-9]+'" \ "${retries}" "${root_path}" "0" )"; then >&2 printf "FAILED\\n" @@ -118,6 +117,52 @@ replace() { } +### +### Print colorized OK message +### +print_succ() { + local leading_nl="${1}" + local trailing_nl="${2}" + local message="${3}" + + local green="\\033[0;32m" + local reset="\\033[0m" + + if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then + printf "\\r${green}[OK]${reset} %s\\n" "${message}" + elif [ "${leading_nl}" = "1" ]; then + printf "\\r${green}[OK]${reset} %s" "${message}" + elif [ "${trailing_nl}" = "1" ]; then + printf "${green}[OK]${reset} %s\\n" "${message}" + else + printf "${green}[OK]${reset} %s" "${message}" + fi +} + + +### +### Print colorized FAIL message +### +print_fail() { + local leading_nl="${1}" + local trailing_nl="${2}" + local message="${3}" + + local red="\\033[0;31m" + local reset="\\033[0m" + + if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then + printf "\\r${red}[FAIL]${reset} %s\\n" "${message}" + elif [ "${leading_nl}" = "1" ]; then + printf "\\r${red}[FAIL]${reset} %s" "${message}" + elif [ "${trailing_nl}" = "1" ]; then + printf "${red}[FAIL]${reset} %s\\n" "${message}" + else + printf "${red}[FAIL]${reset} %s" "${message}" + fi +} + + ### ### Run command ### diff --git a/.tests/scripts/compose-start.sh b/.tests/scripts/compose-start.sh index ec9493cd..4af2a2a4 100755 --- a/.tests/scripts/compose-start.sh +++ b/.tests/scripts/compose-start.sh @@ -53,7 +53,7 @@ until curl -sS -I --fail -o /dev/null -w "%{http_code}" "http://localhost:${HOST printf "." i=$(( i + 1 )) - if [ "${i}" -eq "60" ]; then + if [ "${i}" -eq "120" ]; then printf "[FAIL]\\n\\n" echo "---- curl From host ----" curl -sS -v "http://localhost:${HOST_PORT_HTTPD}" || true @@ -84,7 +84,7 @@ until curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}" 2>/dev/null | grep ' printf "." i=$(( i + 1 )) - if [ "${i}" -eq "60" ]; then + if [ "${i}" -eq "120" ]; then printf "[FAIL]\\n" curl -sS -v "http://localhost:${HOST_PORT_HTTPD}" curl -sS -I "http://localhost:${HOST_PORT_HTTPD}" @@ -120,7 +120,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mongofiles --host=mongo printf "." i=$(( i + 1 )) - if [ "${i}" -eq "60" ]; then + if [ "${i}" -eq "120" ]; then printf "[FAIL]\\n" run "cd ${DVLBOX_PATH} && docker-compose exec -T php mongofiles --host=mongo list" || true run "cd ${DVLBOX_PATH} && docker-compose logs" || true @@ -143,7 +143,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mysql --user=root --pass printf "." i=$(( i + 1 )) - if [ "${i}" -eq "60" ]; then + if [ "${i}" -eq "120" ]; then printf "[FAIL]\\n" run "cd ${DVLBOX_PATH} && docker-compose exec -T php mysql --user=root --password=\"${MYSQL_ROOT_PASSWORD}\" --host=mysql -e 'show databases;'" || true run "cd ${DVLBOX_PATH} && docker-compose logs" || true @@ -166,7 +166,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php pg_isready --host=pgsql printf "." i=$(( i + 1 )) - if [ "${i}" -eq "60" ]; then + if [ "${i}" -eq "120" ]; then printf "[FAIL]\\n" run "cd ${DVLBOX_PATH} && docker-compose exec -T php pg_isready --host=pgsql" || true run "cd ${DVLBOX_PATH} && docker-compose logs" || true diff --git a/.tests/tests/framework-cakephp-php8.sh b/.tests/tests/framework-cakephp-php8.sh new file mode 100755 index 00000000..c70a4b60 --- /dev/null +++ b/.tests/tests/framework-cakephp-php8.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +# NOTE: Parsing curl to tac to circumnvent "failed writing body" +# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body + +set -e +set -u +set -o pipefail + +SCRIPT_PATH="$( cd "$(dirname "$0")" && pwd -P )" +DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" +# shellcheck disable=SC1090 +. "${SCRIPT_PATH}/../scripts/.lib.sh" + +RETRIES=10 +# see framework-cakephp.sh for PHP <8 tests +DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.2") + +PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )" + +### +### What CakePHP Version? +### +CAKE_PHP_VERSION=4.3 + + +echo +echo "# --------------------------------------------------------------------------------------------------" +echo "# [Framework] CakePHP ${CAKE_PHP_VERSION}" +echo "# --------------------------------------------------------------------------------------------------" +echo + + +# ------------------------------------------------------------------------------------------------- +# Pre-check +# ------------------------------------------------------------------------------------------------- + +if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then + printf "[SKIP] Skipping all checks for PHP %s\\n" "${PHP_VERSION}" + exit 0 +fi + + + +# ------------------------------------------------------------------------------------------------- +# ENTRYPOINT +# ------------------------------------------------------------------------------------------------- + +### +### Get required env values +### +MYSQL_ROOT_PASSWORD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "MYSQL_ROOT_PASSWORD" )" +TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )" +VHOST="my-cakephp" + +# Create vhost dir +create_vhost_dir "${VHOST}" + + +# Setup CakePHP project +run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; composer create-project --no-interaction --prefer-dist cakephp/app:~${CAKE_PHP_VERSION} cakephp'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; ln -sf cakephp/webroot htdocs'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php mysql -u root -h mysql --password=\"${MYSQL_ROOT_PASSWORD}\" -e \"DROP DATABASE IF EXISTS my_cake; CREATE DATABASE my_cake;\"" "${RETRIES}" "${DVLBOX_PATH}" + +# Configure CakePHP database settings +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'host' =>.*/'host' => 'mysql',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'username' =>.*/'username' => 'root',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'password' =>.*/'password' => '${MYSQL_ROOT_PASSWORD}',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'database' =>.*/'database' => 'my_cake',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}" + +# Test CakePHP +ERROR=0 +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'mbstring'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'openssl'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'intl'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'tmp directory'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'logs directory'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'connect to the database'" "${RETRIES}" "${DVLBOX_PATH}"; then + ERROR=1 +fi + +if [ "${ERROR}" = "1" ]; then + run "docker-compose exec --user devilbox -T php curl 'http://${VHOST}.${TLD_SUFFIX}' || true" "1" "${DVLBOX_PATH}" + exit 1 +fi diff --git a/.tests/tests/framework-cakephp.sh b/.tests/tests/framework-cakephp.sh index 3caa7340..28d8e5ec 100755 --- a/.tests/tests/framework-cakephp.sh +++ b/.tests/tests/framework-cakephp.sh @@ -13,6 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" . "${SCRIPT_PATH}/../scripts/.lib.sh" RETRIES=10 +# see framework-cakephp-php8.sh for PHP 8+ tests DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "8.0" "8.1" "8.2") PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )" diff --git a/.tests/tests/vendor-phppgadmin.sh b/.tests/tests/vendor-phppgadmin.sh index ae9c528e..ba0ed4eb 100755 --- a/.tests/tests/vendor-phppgadmin.sh +++ b/.tests/tests/vendor-phppgadmin.sh @@ -60,11 +60,11 @@ if ! URL="$( run "\ | tac \ | grep -Eo '/vendor/phppgadmin-[.0-9]+/'" \ "${RETRIES}" "" "0" )"; then - printf "\\r[FAILED] Retrieve phpPgAdmin URL\\n" + print_fail "1" "1" "Retrieve phpPgAdmin URL" run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}/index.php' || true" exit 1 else - printf "\\r[OK] Retrieve phpPgAdmin URL: %s\\n" "${URL}" + print_succ "1" "1" "Retrieve phpPgAdmin URL: ${URL}" fi @@ -80,18 +80,18 @@ if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac # 3rd Try sleep 1 if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then - printf "\\r[FAIL] Fetch %sintro.php\\n" "${URL}" + print_fail "1" "1" "Fetch ${URL}intro.php" curl -sS "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true curl -sS -I "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true exit 1 else - printf "\\r[OK] Fetch %sintro.php (3 rounds)\\n" "${URL}" + print_succ "1" "1" "Fetch ${URL}intro.php (3 rounds)" fi else - printf "\\r[OK] Fetch %sintro.php (2 rounds)\\n" "${URL}" + print_succ "1" "1" "Fetch ${URL}intro.php (2 rounds)" fi else - printf "\\r[OK] Fetch %sintro.php (1 round)\\n" "${URL}" + print_succ "1" "1" "Fetch ${URL}intro.php (1 round)" fi @@ -106,46 +106,46 @@ LIBPATH="${DVLBOXPATH}/.devilbox/www/htdocs${URL%index\.php}libraries/lib.inc.ph printf "[TEST] config.inc.php exists" if [ ! -f "${CONFIGPATH}" ]; then - printf "\\r[FAIL] config.inc.php exists: no\\n" + print_fail "1" "1" "config.inc.php exists: no" exit 1 else - printf "\\r[OK] config.inc.php exists: yes\\n" + print_succ "1" "1" "config.inc.php exists: yes" fi # $conf['servers'][0]['host'] = 'pgsql'; printf "[TEST] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';" if ! grep -E "^[[:space:]]*\\\$conf\\['servers'\\]\\[0\\]\\['host'\\][[:space:]]*=[[:space:]]*'pgsql';" "${CONFIGPATH}" >/dev/null; then - printf "\\r[FAIL] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n" + print_fail "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';" if ! grep 'servers' "${CONFIGPATH}"; then cat "${CONFIGPATH}" fi exit 1 else - printf "\\r[OK] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n" + print_succ "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';" fi # $conf['extra_login_security'] = false; printf "[TEST] config.inc.php check: \$conf['extra_login_security'] = false;" if ! grep -E "^[[:space:]]*\\\$conf\\['extra_login_security'\\][[:space:]]*=[[:space:]]*false;" "${CONFIGPATH}" >/dev/null; then - printf "\\r[FAIL] config.inc.php check: \$conf['extra_login_security'] = false;\\n" + print_fail "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;" if ! grep 'extra_login_security' "${CONFIGPATH}"; then cat "${CONFIGPATH}" fi exit 1 else - printf "\\r[OK] config.inc.php check: \$conf['extra_login_security'] = false;\\n" + print_succ "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;" fi # error_reporting(E_ERROR | E_WARNING | E_PARSE); printf "[TEST] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);" if ! grep -E "^[[:space:]]*error_reporting\\(E_ERROR[[:space:]]*\\|[[:space:]]*E_WARNING[[:space:]]*\\|[[:space:]]*E_PARSE\\);" "${LIBPATH}" >/dev/null; then - printf "\\r[FAIL] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n" + print_fail "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);" if ! grep 'error_reporting' "${LIBPATH}"; then cat "${LIBPATH}" fi exit 1 else - printf "\\r[OK] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n" + print_succ "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);" fi @@ -163,7 +163,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then ### printf "[TEST] Retrieve phpPgAdmin token page" if ! TOKEN_URL="$( run "curl -sS --fail -c cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' | tac | tac | grep -Eo '\"redirect\\.php\\?subject=server.+\"' " "${RETRIES}" "" "0" )"; then - printf "\\r[FAIL] Retrieve phpPgAdmin login page\\n" + print_fail "1" "1" "Retrieve phpPgAdmin login page" run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true" run "curl -sSI 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true" rm -f cookie.txt @@ -171,7 +171,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then else TOKEN_URL="${TOKEN_URL//\"/}" TOKEN_URL="${TOKEN_URL//&/&}" - printf "\\r[OK] Retrieve phpPgAdmin token page:%s\\n" "${TOKEN_URL}" + print_succ "1" "1" "Retrieve phpPgAdmin token page: ${TOKEN_URL}" fi ### @@ -180,14 +180,14 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then printf "[TEST] Retrieve phpPgAdmin login token" # 1st Try if ! TOKEN="$( run "curl -sS --fail -c cookie.txt -b cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}${TOKEN_URL}' | tac | tac | grep -Eo 'loginPassword_[a-zA-Z0-9]+'" "${RETRIES}" "" "0" )"; then - printf "\\r[FAIL] Retrieve phpPgAdmin login token\\n" + print_fail "1" "1" "Retrieve phpPgAdmin login token" run "curl -sS 'http://localhost:${TOKEN_URL_URL}' || true" run "curl -sSI 'http://localhost:${TOKEN_URL_URL}' || true" rm -f cookie.txt exit 1 else TOKEN="$( echo "${TOKEN}" | head -1 )" - printf "\\r[OK] Retrieve phpPgAdmin login token: %s\\n" "${TOKEN}" + print_succ "1" "1" "Retrieve phpPgAdmin login token: ${TOKEN}" fi ### @@ -204,7 +204,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then --data 'loginSubmit=Login' \ 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php' 2>/dev/null \ | grep -q 'Create database'" "${RETRIES}" "" "0"; then - printf "\\r[FAIL] Submit phpPgAdmin POST login\\n" + print_fail "1" "1" "Submit phpPgAdmin POST login" run "curl -sS -c cookie.txt -b cookie.txt \ --data 'subject=server' \ --data 'server=pgsql%3A5432%3Aallow' \ @@ -224,7 +224,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then rm -f cookie.txt || true exit 1 else - printf "\\r[OK] Submit phpPgAdmin POST login\\n" + print_succ "1" "1" "Submit phpPgAdmin POST login" fi fi @@ -240,12 +240,12 @@ if [ "$( run "curl -sS --fail \ | tac \ | tac \ | grep -Ec 'data\">(Database|Owner|Collation|Tablespace)'" "${RETRIES}" "" "0" )" != "4" ]; then - printf "\\r[FAIL] Evaluate successful phpPgAdmin login\\n" + print_fail "1" "1" "Evaluate successful phpPgAdmin login" run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true" run "curl -sS -I 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true" rm -f cookie.txt || true exit 1 else - printf "\\r[OK] Evaluate successful phpPgAdmin login\\n" + print_succ "1" "1" "Evaluate successful phpPgAdmin login" fi rm -f cookie.txt || true diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d1268d9..0ea6f6ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,28 @@ Make sure to have a look at [UPDATING.md](https://github.com/cytopia/devilbox/bl ## Unreleased +## Release v2.0.0 (2022-03-28) + +The goal of this release is to reduce the overall size of Docker images and bring in latest versions. + +**Important:** This release introduces backwards incompatible changes due to only keeping major versions of PostreSQL and therefore removing old volumes. Additionally the PostgreSQL volume names have changed. In order to guarantee a smooth transition, backup your PostgreSQL databases in the previous version before switching and then re-importing them in this version. + +#### Added +- Added CakePHP integration tests for PHP 8+ +- Added `.env` variable `HTTPD_FLAVOUR` to decide between `Debian` or `Alpine` for HTTP server + +#### Changed +- Changed default PostgreSQL server from `12.4` to `14-alpine` (breaking change) +- Changed default Redis server from `6.0` to `6.2-alpine` +- Changed default Memcached server from `1.6` to `1.6-alpine` +- Changed default MongoDB server from `4.4` to `5.0` +- Changed default HTTPD server flavour from `Debian` to `Alpine` +- Use tiny Alpine version of Bind container + +#### Removed +- Removed CI for MongoDB `2.8` and MongoDB `3.0` due to segfault: https://github.com/docker-library/mongo/issues/251 + + ## Release v1.11.0 (2022-03-22) #### Fixed diff --git a/README.md b/README.md index 5f4dee74..59589582 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,15 @@ [![Documentation Status](https://readthedocs.org/projects/devilbox/badge/?version=latest)](https://devilbox.readthedocs.io) [![Build Status](https://github.com/cytopia/devilbox/workflows/Lint/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Lint) [![Build Status](https://github.com/cytopia/devilbox/workflows/Docs/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Docs) -[![Build Status](https://github.com/cytopia/devilbox/workflows/Linux/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Linux) -[![Build Status](https://github.com/cytopia/devilbox/workflows/Config/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Config) -[![Build Status](https://github.com/cytopia/devilbox/workflows/Versions/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Versions) + +[![PHP](https://github.com/cytopia/devilbox/actions/workflows/test-php.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-php.yml) +[![Httpd](https://github.com/cytopia/devilbox/actions/workflows/test-httpd.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-httpd.yml) +[![MySQL](https://github.com/cytopia/devilbox/actions/workflows/test-mysql.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-mysql.yml) +[![Memcd](https://github.com/cytopia/devilbox/actions/workflows/test-memcd.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-memcd.yml) +[![Mongo](https://github.com/cytopia/devilbox/actions/workflows/test-mongo.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-mongo.yml) +[![PgSQL](https://github.com/cytopia/devilbox/actions/workflows/test-pgsql.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-pgsql.yml) +[![Redis](https://github.com/cytopia/devilbox/actions/workflows/test-redis.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-redis.yml) +
Support for valid https out of the box. @@ -304,7 +310,7 @@ Every single attachable container comes with many different versions. In order t 10.5 9.6 - latest + 6.2 4.2 @@ -315,8 +321,8 @@ Every single attachable container comes with many different versions. In order t 10.6 - ... - + 10 + latest 4.4 @@ -327,10 +333,10 @@ Every single attachable container comes with many different versions. In order t 10.7 - 12.3 + 11 - latest + 5.0 @@ -339,10 +345,10 @@ Every single attachable container comes with many different versions. In order t - 12.4 - + 12 + latest @@ -351,7 +357,7 @@ Every single attachable container comes with many different versions. In order t - 13.0 + 13 @@ -363,7 +369,7 @@ Every single attachable container comes with many different versions. In order t - latest + 14 @@ -375,7 +381,7 @@ Every single attachable container comes with many different versions. In order t - + latest diff --git a/docker-compose.yml b/docker-compose.yml index 34fc1de8..511a544d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,7 +34,7 @@ services: # Bind (DNS Server) # ------------------------------------------------------------ bind: - image: cytopia/bind:0.28 + image: cytopia/bind:alpine-0.28 hostname: bind restart: always ports: @@ -220,7 +220,7 @@ services: # Web Server # ------------------------------------------------------------ httpd: - image: devilbox/${HTTPD_SERVER}:0.43 + image: devilbox/${HTTPD_SERVER}:${HTTPD_FLAVOUR:-alpine}-0.47 hostname: httpd environment: @@ -528,52 +528,16 @@ volumes: devilbox-pgsql-9.5-alpine: devilbox-pgsql-9.6: devilbox-pgsql-9.6-alpine: - devilbox-pgsql-10.0: - devilbox-pgsql-10.0-alpine: - devilbox-pgsql-10.1: - devilbox-pgsql-10.1-alpine: - devilbox-pgsql-10.2: - devilbox-pgsql-10.2-alpine: - devilbox-pgsql-10.3: - devilbox-pgsql-10.3-alpine: - devilbox-pgsql-10.4: - devilbox-pgsql-10.4-alpine: - devilbox-pgsql-10.5: - devilbox-pgsql-10.5-alpine: - devilbox-pgsql-10.6: - devilbox-pgsql-10.6-alpine: - devilbox-pgsql-11.0: - devilbox-pgsql-11.0-alpine: - devilbox-pgsql-11.1: - devilbox-pgsql-11.1-alpine: - devilbox-pgsql-11.2: - devilbox-pgsql-11.2-alpine: - devilbox-pgsql-11.3: - devilbox-pgsql-11.3-alpine: - devilbox-pgsql-11.4: - devilbox-pgsql-11.4-alpine: - devilbox-pgsql-11.5: - devilbox-pgsql-11.5-alpine: - devilbox-pgsql-11.6: - devilbox-pgsql-11.6-alpine: - devilbox-pgsql-11.7: - devilbox-pgsql-11.7-alpine: - devilbox-pgsql-11.8: - devilbox-pgsql-11.8-alpine: - devilbox-pgsql-11.9: - devilbox-pgsql-11.9-alpine: - devilbox-pgsql-12.0: - devilbox-pgsql-12.0-alpine: - devilbox-pgsql-12.1: - devilbox-pgsql-12.1-alpine: - devilbox-pgsql-12.2: - devilbox-pgsql-12.2-alpine: - devilbox-pgsql-12.3: - devilbox-pgsql-12.3-alpine: - devilbox-pgsql-12.4: - devilbox-pgsql-12.4-alpine: - devilbox-pgsql-13.0: - devilbox-pgsql-13.0-alpine: + devilbox-pgsql-10: + devilbox-pgsql-10-alpine: + devilbox-pgsql-11: + devilbox-pgsql-11-alpine: + devilbox-pgsql-12: + devilbox-pgsql-12-alpine: + devilbox-pgsql-13: + devilbox-pgsql-13-alpine: + devilbox-pgsql-14: + devilbox-pgsql-14-alpine: devilbox-pgsql-latest: devilbox-pgsql-alpine: @@ -588,4 +552,5 @@ volumes: devilbox-mongo-4.0: devilbox-mongo-4.2: devilbox-mongo-4.4: + devilbox-mongo-5.0: devilbox-mongo-latest: diff --git a/docs/configuration-files/env-file.rst b/docs/configuration-files/env-file.rst index 0ff26d39..b35f98b5 100644 --- a/docs/configuration-files/env-file.rst +++ b/docs/configuration-files/env-file.rst @@ -557,11 +557,11 @@ PHP_SERVER This variable choses your desired PHP-FPM version to be started. -+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ -| Name | Allowed values | Default value | -+=========================+========================================================================================================================================================================================================================================================+=================+ -| ``PHP_SERVER`` | ``php-fpm-5.2`` |br| ``php-fpm-5.3`` |br| ``php-fpm-5.4`` |br| ``php-fpm-5.5`` |br| ``php-fpm-5.6`` |br| ``php-fpm-7.0`` |br| ``php-fpm-7.1`` |br| ``php-fpm-7.2`` |br| ``php-fpm-7.3`` |br| ``php-fpm-7.4`` |br| ``php-fpm-8.0`` |br| ``php-fpm-8.1`` | ``php-fpm-7.4`` | -+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ ++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ +| Name | Allowed values | Default value | ++=========================+=============================================================================================================================================================================================================================================================================+=================+ +| ``PHP_SERVER`` | ``php-fpm-5.2`` |br| ``php-fpm-5.3`` |br| ``php-fpm-5.4`` |br| ``php-fpm-5.5`` |br| ``php-fpm-5.6`` |br| ``php-fpm-7.0`` |br| ``php-fpm-7.1`` |br| ``php-fpm-7.2`` |br| ``php-fpm-7.3`` |br| ``php-fpm-7.4`` |br| ``php-fpm-8.0`` |br| ``php-fpm-8.1`` |br| ``php-fpm-8.2`` | ``php-fpm-8.1`` | ++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ .. important:: **PHP 5.2** is available to use, but it is not officially supported. The Devilbox intranet does @@ -574,7 +574,7 @@ All values are already available in the ``.env`` file and just need to be commen .. code-block:: bash :caption: .env - :emphasize-lines: 9 + :emphasize-lines: 14 host> grep PHP_SERVER .env @@ -587,9 +587,10 @@ All values are already available in the ``.env`` file and just need to be commen #PHP_SERVER=php-fpm-7.1 #PHP_SERVER=php-fpm-7.2 #PHP_SERVER=php-fpm-7.3 - PHP_SERVER=php-fpm-7.4 + #PHP_SERVER=php-fpm-7.4 #PHP_SERVER=php-fpm-8.0 - #PHP_SERVER=php-fpm-8.1 + PHP_SERVER=php-fpm-8.1 + #PHP_SERVER=php-fpm-8.2 .. _env_httpd_server: @@ -629,14 +630,14 @@ This variable choses your desired MySQL server version to be started. +-------------------------+------------------------------------------------------------------------------------------------+------------------+ | Name | Allowed values | Default value | +=========================+================================================================================================+==================+ -| ``MYSQL_SERVER`` | ``mysql-5.5`` |br| ``mysql-5.6`` |br| ``mariadb-10.2`` |br| ``percona-5.7`` |br| and many more | ``mariadb-10.5`` | +| ``MYSQL_SERVER`` | ``mysql-5.5`` |br| ``mysql-5.6`` |br| ``mariadb-10.2`` |br| ``percona-5.7`` |br| and many more | ``mariadb-10.6`` | +-------------------------+------------------------------------------------------------------------------------------------+------------------+ All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences: .. code-block:: bash :caption: .env - :emphasize-lines: 9 + :emphasize-lines: 18 host> grep MYSQL_SERVER .env @@ -644,17 +645,20 @@ All values are already available in the ``.env`` file and just need to be commen #MYSQL_SERVER=mysql-5.6 #MYSQL_SERVER=mysql-5.7 #MYSQL_SERVER=mysql-8.0 + #MYSQL_SERVER=percona-5.5 + #MYSQL_SERVER=percona-5.6 + #MYSQL_SERVER=percona-5.7 + #MYSQL_SERVER=percona-8.0 #MYSQL_SERVER=mariadb-5.5 #MYSQL_SERVER=mariadb-10.0 #MYSQL_SERVER=mariadb-10.1 #MYSQL_SERVER=mariadb-10.2 #MYSQL_SERVER=mariadb-10.3 #MYSQL_SERVER=mariadb-10.4 - MYSQL_SERVER=mariadb-10.5 - #MYSQL_SERVER=percona-5.5 - #MYSQL_SERVER=percona-5.6 - #MYSQL_SERVER=percona-5.7 - #MYSQL_SERVER=percona-8.0 + #MYSQL_SERVER=mariadb-10.5 + MYSQL_SERVER=mariadb-10.6 + #MYSQL_SERVER=mariadb-10.7 + #MYSQL_SERVER=mariadb-10.8 .. _env_pgsql_server: @@ -667,14 +671,14 @@ This variable choses your desired PostgreSQL server version to be started. +-------------------------+-------------------------------------------------------------------+------------------+ | Name | Allowed values | Default value | +=========================+===================================================================+==================+ -| ``PGSQL_SERVER`` | ``9.1`` |br| ``9.2`` |br| ``9.3`` |br| ``9.4`` |br| and many more | ``12.4`` | +| ``PGSQL_SERVER`` | ``9.1`` |br| ``9.2`` |br| ``9.3`` |br| ``9.4`` |br| and many more | ``14-alpine`` | +-------------------------+-------------------------------------------------------------------+------------------+ All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences: .. code-block:: bash :caption: .env - :emphasize-lines: 8 + :emphasize-lines: 24 host> grep PGSQL_SERVER .env @@ -690,52 +694,16 @@ All values are already available in the ``.env`` file and just need to be commen #PGSQL_SERVER=9.5-alpine #PGSQL_SERVER=9.6 #PGSQL_SERVER=9.6-alpine - #PGSQL_SERVER=10.0 - #PGSQL_SERVER=10.0-alpine - #PGSQL_SERVER=10.1 - #PGSQL_SERVER=10.1-alpine - #PGSQL_SERVER=10.2 - #PGSQL_SERVER=10.2-alpine - #PGSQL_SERVER=10.3 - #PGSQL_SERVER=10.3-alpine - #PGSQL_SERVER=10.4 - #PGSQL_SERVER=10.4-alpine - #PGSQL_SERVER=10.5 - #PGSQL_SERVER=10.5-alpine - #PGSQL_SERVER=10.6 - #PGSQL_SERVER=10.6-alpine - #PGSQL_SERVER=11.0 - #PGSQL_SERVER=11.0-alpine - #PGSQL_SERVER=11.1 - #PGSQL_SERVER=11.1-alpine - #PGSQL_SERVER=11.2 - #PGSQL_SERVER=11.2-alpine - #PGSQL_SERVER=11.3 - #PGSQL_SERVER=11.3-alpine - #PGSQL_SERVER=11.4 - #PGSQL_SERVER=11.4-alpine - #PGSQL_SERVER=11.5 - #PGSQL_SERVER=11.5-alpine - #PGSQL_SERVER=11.6 - #PGSQL_SERVER=11.6-alpine - #PGSQL_SERVER=11.7 - #PGSQL_SERVER=11.7-alpine - #PGSQL_SERVER=11.8 - #PGSQL_SERVER=11.8-alpine - #PGSQL_SERVER=11.9 - #PGSQL_SERVER=11.9-alpine - #PGSQL_SERVER=12.0 - #PGSQL_SERVER=12.0-alpine - #PGSQL_SERVER=12.1 - #PGSQL_SERVER=12.1-alpine - #PGSQL_SERVER=12.2 - #PGSQL_SERVER=12.2-alpine - #PGSQL_SERVER=12.3 - #PGSQL_SERVER=12.3-alpine - PGSQL_SERVER=12.4 - #PGSQL_SERVER=12.4-alpine - #PGSQL_SERVER=13.0 - #PGSQL_SERVER=13.0-alpine + #PGSQL_SERVER=10 + #PGSQL_SERVER=10-alpine + #PGSQL_SERVER=11 + #PGSQL_SERVER=11-alpine + #PGSQL_SERVER=12 + #PGSQL_SERVER=12-alpine + #PGSQL_SERVER=13 + #PGSQL_SERVER=13-alpine + #PGSQL_SERVER=14 + PGSQL_SERVER=14-alpine #PGSQL_SERVER=latest #PGSQL_SERVER=alpine @@ -755,14 +723,14 @@ This variable choses your desired Redis server version to be started. +-------------------------+-------------------------------------------------------------------+------------------+ | Name | Allowed values | Default value | +=========================+===================================================================+==================+ -| ``REDIS_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``4.0`` |br| and many more | ``6.0`` | +| ``REDIS_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``4.0`` |br| and many more | ``6.2-alpine`` | +-------------------------+-------------------------------------------------------------------+------------------+ All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences: .. code-block:: bash :caption: .env - :emphasize-lines: 6 + :emphasize-lines: 15 host> grep REDIS_SERVER .env @@ -775,8 +743,10 @@ All values are already available in the ``.env`` file and just need to be commen #REDIS_SERVER=4.0-alpine #REDIS_SERVER=5.0 #REDIS_SERVER=5.0-alpine - REDIS_SERVER=6.0 + #REDIS_SERVER=6.0 #REDIS_SERVER=6.0-alpine + #REDIS_SERVER=6.2 + REDIS_SERVER=6.2-alpine #REDIS_SERVER=latest #REDIS_SERVER=alpine @@ -796,14 +766,14 @@ This variable choses your desired Memcached server version to be started. +-------------------------+---------------------------------------------------------------------------------+------------------+ | Name | Allowed values | Default value | +=========================+=================================================================================+==================+ -| ``MEMCD_SERVER`` | ``1.4`` |br| ``1.4-alpine`` |br| ``1.5`` |br| ``1.5-alpine`` |br| and many more | ``1.6`` | +| ``MEMCD_SERVER`` | ``1.4`` |br| ``1.4-alpine`` |br| ``1.5`` |br| ``1.5-alpine`` |br| and many more | ``1.6-alpine`` | +-------------------------+---------------------------------------------------------------------------------+------------------+ All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences: .. code-block:: bash :caption: .env - :emphasize-lines: 5 + :emphasize-lines: 8 host> grep MEMCD_SERVER .env @@ -811,8 +781,8 @@ All values are already available in the ``.env`` file and just need to be commen #MEMCD_SERVER=1.4-alpine #MEMCD_SERVER=1.5 #MEMCD_SERVER=1.5-alpine - MEMCD_SERVER=1.6 - #MEMCD_SERVER=1.6-alpine + #MEMCD_SERVER=1.6 + MEMCD_SERVER=1.6-alpine #MEMCD_SERVER=latest #MEMCD_SERVER=alpine @@ -832,14 +802,14 @@ This variable choses your desired MongoDB server version to be started. +-------------------------+-------------------------------------------------------------------+------------------+ | Name | Allowed values | Default value | +=========================+===================================================================+==================+ -| ``MONGO_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``3.4`` |br| and many more | ``4.4`` | +| ``MONGO_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``3.4`` |br| and many more | ``5.0`` | +-------------------------+-------------------------------------------------------------------+------------------+ All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences: .. code-block:: bash :caption: .env - :emphasize-lines: 6 + :emphasize-lines: 11 host> grep MONGO_SERVER .env @@ -850,7 +820,8 @@ All values are already available in the ``.env`` file and just need to be commen #MONGO_SERVER=3.6 #MONGO_SERVER=4.0 #MONGO_SERVER=4.2 - MONGO_SERVER=4.4 + #MONGO_SERVER=4.4 + MONGO_SERVER=5.0 #MONGO_SERVER=latest .. note:: diff --git a/env-example b/env-example index f2b472f5..6d2b420a 100644 --- a/env-example +++ b/env-example @@ -273,6 +273,12 @@ PHP_SERVER=8.1 ### ### 1.2 Choose HTTPD Server Image ### +### Choose between 'debian' or 'alpine' flavour and then select the version +### +### Note: apache-2.2 has no arm64 support on 'alpine' flavour +### +HTTPD_FLAVOUR=alpine + #HTTPD_SERVER=apache-2.2 #HTTPD_SERVER=apache-2.4 HTTPD_SERVER=nginx-stable @@ -286,6 +292,10 @@ HTTPD_SERVER=nginx-stable #MYSQL_SERVER=mysql-5.6 #MYSQL_SERVER=mysql-5.7 #MYSQL_SERVER=mysql-8.0 +#MYSQL_SERVER=percona-5.5 +#MYSQL_SERVER=percona-5.6 +#MYSQL_SERVER=percona-5.7 +#MYSQL_SERVER=percona-8.0 #MYSQL_SERVER=mariadb-5.5 #MYSQL_SERVER=mariadb-10.0 #MYSQL_SERVER=mariadb-10.1 @@ -296,22 +306,26 @@ HTTPD_SERVER=nginx-stable MYSQL_SERVER=mariadb-10.6 #MYSQL_SERVER=mariadb-10.7 #MYSQL_SERVER=mariadb-10.8 -#MYSQL_SERVER=percona-5.5 -#MYSQL_SERVER=percona-5.6 -#MYSQL_SERVER=percona-5.7 -#MYSQL_SERVER=percona-8.0 ### ### 1.4 Choose PostgreSQL Server Image ### +### https://www.postgresql.org/support/versioning/ +### ### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX ### https://github.com/docker/toolbox/issues/510 ### +# +# PostgreSQL without arm64 support +# #PGSQL_SERVER=9.0 #PGSQL_SERVER=9.1 -#PGSQL_SERVER=9.2 #PGSQL_SERVER=9.2-alpine +# +# PostgreSQL with arm64 support +# +#PGSQL_SERVER=9.2 #PGSQL_SERVER=9.3 #PGSQL_SERVER=9.3-alpine #PGSQL_SERVER=9.4 @@ -320,62 +334,16 @@ MYSQL_SERVER=mariadb-10.6 #PGSQL_SERVER=9.5-alpine #PGSQL_SERVER=9.6 #PGSQL_SERVER=9.6-alpine -#PGSQL_SERVER=10.0 -#PGSQL_SERVER=10.0-alpine -#PGSQL_SERVER=10.1 -#PGSQL_SERVER=10.1-alpine -#PGSQL_SERVER=10.2 -#PGSQL_SERVER=10.2-alpine -#PGSQL_SERVER=10.3 -#PGSQL_SERVER=10.3-alpine -#PGSQL_SERVER=10.4 -#PGSQL_SERVER=10.4-alpine -#PGSQL_SERVER=10.5 -#PGSQL_SERVER=10.5-alpine -#PGSQL_SERVER=10.6 -#PGSQL_SERVER=10.6-alpine -#PGSQL_SERVER=10.7 -#PGSQL_SERVER=10.7-alpine -#PGSQL_SERVER=10.8 -#PGSQL_SERVER=10.8-alpine -#PGSQL_SERVER=10.9 -#PGSQL_SERVER=10.9-alpine -#PGSQL_SERVER=10.10 -#PGSQL_SERVER=10.10-alpine -#PGSQL_SERVER=10.11 -#PGSQL_SERVER=10.11-alpine -#PGSQL_SERVER=11.0 -#PGSQL_SERVER=11.0-alpine -#PGSQL_SERVER=11.1 -#PGSQL_SERVER=11.1-alpine -#PGSQL_SERVER=11.2 -#PGSQL_SERVER=11.2-alpine -#PGSQL_SERVER=11.3 -#PGSQL_SERVER=11.3-alpine -#PGSQL_SERVER=11.4 -#PGSQL_SERVER=11.4-alpine -#PGSQL_SERVER=11.5 -#PGSQL_SERVER=11.5-alpine -#PGSQL_SERVER=11.6 -#PGSQL_SERVER=11.6-alpine -#PGSQL_SERVER=11.7 -#PGSQL_SERVER=11.7-alpine -#PGSQL_SERVER=11.8 -#PGSQL_SERVER=11.8-alpine -#PGSQL_SERVER=11.9 -#PGSQL_SERVER=11.9-alpine -#PGSQL_SERVER=12.0 -#PGSQL_SERVER=12.0-alpine -#PGSQL_SERVER=12.1 -#PGSQL_SERVER=12.1-alpine -#PGSQL_SERVER=12.2 -#PGSQL_SERVER=12.2-alpine -#PGSQL_SERVER=12.3 -#PGSQL_SERVER=12.3-alpine -PGSQL_SERVER=12.4 -#PGSQL_SERVER=12.4-alpine -#PGSQL_SERVER=13.0 -#PGSQL_SERVER=13.0-alpine +#PGSQL_SERVER=10 +#PGSQL_SERVER=10-alpine +#PGSQL_SERVER=11 +#PGSQL_SERVER=11-alpine +#PGSQL_SERVER=12 +#PGSQL_SERVER=12-alpine +#PGSQL_SERVER=13 +#PGSQL_SERVER=13-alpine +#PGSQL_SERVER=14 +PGSQL_SERVER=14-alpine #PGSQL_SERVER=latest #PGSQL_SERVER=alpine @@ -386,17 +354,25 @@ PGSQL_SERVER=12.4 ### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX ### https://github.com/docker/toolbox/issues/510 ### +# +# Redis without arm64 support +# #REDIS_SERVER=2.8 #REDIS_SERVER=3.0 #REDIS_SERVER=3.0-alpine +# +# Redis with arm64 support +# #REDIS_SERVER=3.2 #REDIS_SERVER=3.2-alpine #REDIS_SERVER=4.0 #REDIS_SERVER=4.0-alpine #REDIS_SERVER=5.0 #REDIS_SERVER=5.0-alpine -REDIS_SERVER=6.0 +#REDIS_SERVER=6.0 #REDIS_SERVER=6.0-alpine +#REDIS_SERVER=6.2 +REDIS_SERVER=6.2-alpine #REDIS_SERVER=latest #REDIS_SERVER=alpine @@ -407,12 +383,18 @@ REDIS_SERVER=6.0 ### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX ### https://github.com/docker/toolbox/issues/510 ### +# +# Memcached without arm64 support +# #MEMCD_SERVER=1.4 #MEMCD_SERVER=1.4-alpine +# +# Memcached with arm64 support +# #MEMCD_SERVER=1.5 #MEMCD_SERVER=1.5-alpine -MEMCD_SERVER=1.6 -#MEMCD_SERVER=1.6-alpine +#MEMCD_SERVER=1.6 +MEMCD_SERVER=1.6-alpine #MEMCD_SERVER=latest #MEMCD_SERVER=alpine @@ -420,14 +402,23 @@ MEMCD_SERVER=1.6 ### ### 1.7 Choose Mongo Server Image ### +### https://www.mongodb.com/evolved +### +# +# MongoDB without arm64 support +# #MONGO_SERVER=2.8 #MONGO_SERVER=3.0 #MONGO_SERVER=3.2 +# +# MongoDB with arm64 support +# #MONGO_SERVER=3.4 #MONGO_SERVER=3.6 #MONGO_SERVER=4.0 #MONGO_SERVER=4.2 -MONGO_SERVER=4.4 +#MONGO_SERVER=4.4 +MONGO_SERVER=5.0 #MONGO_SERVER=latest