name: Internal test suite permissions: contents: read on: pull_request: push: jobs: test-apache-container: name: Test (${{ matrix.configuration }}) on database ${{ matrix.database-image }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: database-image: [ "mariadb:10.6", "mariadb:10.11", "mariadb:11.4", "mariadb:latest", "mysql:5.7", "mysql:8.4", "mysql:latest" ] configuration: [ "default", "one-host", "one-socket-host", "config-mount-dir", "fs-import-export", "different-apache-port", "run-as-www-data" ] include: - { database-image: "mariadb:10.6", configuration: "one-ssl-host" } - { database-image: "mariadb:10.11", configuration: "one-ssl-host" } - { database-image: "mariadb:11.4", configuration: "one-ssl-host" } - { database-image: "mariadb:latest", configuration: "one-ssl-host" } steps: - uses: actions/checkout@v4 - name: Generate the testing keys if: ${{ contains(matrix.configuration, 'one-ssl-host') }} run: ./testing/generate-keys.sh - name: Switch to MySQL compatible ENVs if: ${{ contains(matrix.database-image, 'mysql') }} working-directory: ./testing/docker-compose/ run: sed -i 's/MARIADB_ROOT_PASSWORD/MYSQL_ROOT_PASSWORD/' ./docker-compose.testing-${{ matrix.configuration }}.yml - name: Switch to MySQL compatible healthcheck if: ${{ contains(matrix.database-image, 'mysql') }} working-directory: ./testing/docker-compose/ run: sed -i 's/mariadb-admin/mysqladmin/' ./docker-compose.testing-${{ matrix.configuration }}.yml - name: Build images working-directory: ./testing/ run: docker compose -f ./docker-compose/docker-compose.testing-${{ matrix.configuration }}.yml build - name: Run ${{ matrix.configuration }} tests working-directory: ./testing/ run: docker compose -f ./docker-compose/docker-compose.testing-${{ matrix.configuration }}.yml up --build --abort-on-container-exit --exit-code-from=sut env: DB: ${{ matrix.database-image }}