name: Tests on: [push, pull_request] env: php-extensions: mbstring, intl, mysqli, pgsql, sqlsrv-5.12.0, pdo_sqlsrv-5.12.0 php-tools: "composer:v2, pecl" jobs: tests: runs-on: ubuntu-latest strategy: matrix: php: ['8.2', '8.3', '8.4', '8.5'] fail-fast: false name: PHP ${{ matrix.php }} tests services: mysql57: image: mysql:5.7 env: MYSQL_DATABASE: dibi_test MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: >- --health-cmd "mysqladmin ping -ppass" --health-interval 10s --health-start-period 10s --health-timeout 5s --health-retries 10 mysql80: image: mysql:8.0 ports: - 3307:3306 options: >- --health-cmd="mysqladmin ping -ppass" --health-interval=10s --health-timeout=5s --health-retries=5 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=dibi_test postgres96: image: postgres:9.6 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: dibi_test ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 postgres13: image: postgres:13 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: dibi_test ports: - 5433:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 mssql: image: mcr.microsoft.com/mssql/server:latest env: ACCEPT_EULA: Y SA_PASSWORD: YourStrong!Passw0rd MSSQL_PID: Developer ports: - 1433:1433 options: >- --name=mssql --health-cmd "/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'SELECT 1' -N -C" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: ${{ env.php-extensions }} tools: ${{ env.php-tools }} coverage: none - name: Create databases.ini run: cp ./tests/databases.github.ini ./tests/databases.ini - name: Create MS SQL Database run: docker exec -i mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'CREATE DATABASE dibi_test' -N -C - run: composer install --no-progress --prefer-dist - run: vendor/bin/tester -p phpdbg tests -s -C --coverage ./coverage.xml --coverage-src ./src - if: failure() uses: actions/upload-artifact@v4 with: name: output-${{ matrix.php }} path: tests/**/output - name: Save Code Coverage if: ${{ matrix.php == '8.2' }} env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.3/php-coveralls.phar php php-coveralls.phar --verbose --config tests/.coveralls.yml