name: CI on: push: pull_request: workflow_dispatch: jobs: testsuite: runs-on: ubuntu-latest strategy: fail-fast: false matrix: php-version: ['8.1', '8.4'] db-type: ['mysql'] # db-type: ['sqlite', 'mysql', 'pgsql'] prefer-lowest: [''] include: - php-version: '8.1' db-type: 'sqlite' prefer-lowest: 'prefer-lowest' services: mysql8: image: mysql:8.0 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: cakephp # services: # postgres: # image: postgres # ports: # - 5432:5432 # env: # POSTGRES_PASSWORD: postgres # mysql8: # image: mysql:8.0 # env: # MYSQL_ALLOW_EMPTY_PASSWORD: yes # MYSQL_DATABASE: test_db # ports: # - 3306:3306 steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: mbstring, intl, sqlite, pdo_${{ matrix.db-type }} coverage: pcov - name: Get composer cache directory id: composercache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@v4 with: path: ${{ steps.composercache.outputs.dir }} key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} - name: Composer install run: | composer --version if ${{ matrix.prefer-lowest == 'prefer-lowest' }} then composer update --prefer-lowest --prefer-stable composer require --dev dereuromark/composer-prefer-lowest:dev-master else composer install --no-progress --prefer-dist --optimize-autoloader fi - name: Setup problem matchers for PHPUnit if: matrix.db-type == 'mysql' run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Run PHPUnit tests env: TEST_MYSQL_HOST: mysql8 TEST_MYSQL_CHARSET: utf8mb4 TEST_MYSQL_DBNAME: cakephp TEST_MYSQL_USERNAME: root TEST_MYSQL_PASSWORD: run: | if [[ ${{ matrix.php-version }} == '8.1' ]]; then vendor/bin/phpunit --coverage-clover=coverage.xml else vendor/bin/phpunit fi - name: Validate prefer-lowest if: matrix.prefer-lowest == 'prefer-lowest' run: vendor/bin/validate-prefer-lowest -m # - name: Upload coverage reports to Codecov # if: success() && matrix.php-version == '8.1' # uses: codecov/codecov-action@v4 # with: # token: ${{ secrets.CODECOV_TOKEN }} validation: name: Coding Standard & Static Analysis runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' extensions: mbstring, intl, sqlite coverage: none - name: Get composer cache directory id: composercache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@v4 with: path: ${{ steps.composercache.outputs.dir }} key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} - name: Composer install run: | composer --version if ${{ matrix.prefer-lowest == 'prefer-lowest' }} then composer update --prefer-lowest --prefer-stable composer require --dev dereuromark/composer-prefer-lowest:dev-master else composer install --no-progress --prefer-dist --optimize-autoloader fi - name: Composer phpstan setup run: composer stan-setup - name: Run phpstan run: vendor/bin/phpstan analyse --error-format=github - name: Run phpcs run: composer cs-check