Fix FrankenPHP worker mode stalls with explicit workers, wider jitter… #1454
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| testsuite: | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php-version: ['8.4', '8.5'] | |
| db-type: [sqlite, mysql, pgsql] | |
| include: | |
| - php-version: '8.4' | |
| db-type: 'sqlite' | |
| services: | |
| postgres: | |
| image: postgres | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_PASSWORD: postgres | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup Service | |
| if: matrix.db-type == 'mysql' | |
| run: | | |
| sudo service mysql start | |
| mysql -h 127.0.0.1 -u root -proot -e 'CREATE DATABASE cakephp;' | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php-version }} | |
| extensions: mbstring, intl, pdo_${{ matrix.db-type }}, imagick | |
| coverage: pcov | |
| - name: Install Ghostscript | |
| run: sudo apt-get update && sudo apt-get install -y ghostscript | |
| - 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-${{ hashFiles('**/composer.json') }} | |
| restore-keys: ${{ runner.os }}-composer- | |
| - name: Prepare config | |
| run: | | |
| cp config/app_local.ci.php config/app_local.php | |
| cp config/app_mercure.ci.php config/app_mercure.php | |
| - name: Composer install | |
| run: composer install --no-progress --prefer-dist --optimize-autoloader | |
| - name: Assets install | |
| run: npm install -g bower && bower install --allow-root && composer assets | |
| - name: Run PHPUnit | |
| run: | | |
| if [[ ${{ matrix.db-type }} == 'sqlite' ]]; then export DB_URL='sqlite:///:memory:'; fi | |
| if [[ ${{ matrix.db-type }} == 'mysql' ]]; then export DB_URL='mysql://root:root@127.0.0.1/cakephp'; fi | |
| if [[ ${{ matrix.db-type }} == 'pgsql' ]]; then export DB_URL='postgres://postgres:postgres@127.0.0.1/postgres'; fi | |
| # Debug: Check PCOV config before | |
| php -r 'echo "PCOV directory: " . ini_get("pcov.directory") . "\n";' || true | |
| # Debug: Check if plugins are loaded | |
| bin/cake plugin list || true | |
| if [[ ${{ matrix.php-version }} == '8.4' && ${{ matrix.db-type }} == 'mysql' ]]; then | |
| php -d pcov.enabled=1 -d pcov.directory=${{ github.workspace }} -d pcov.exclude=~vendor~ vendor/bin/phpunit --coverage-clover=coverage.xml --coverage-text 2>&1 | tee phpunit-output.txt | |
| # Debug: Check coverage.xml for plugin files | |
| grep -c "plugins/" coverage.xml || echo "No plugin files in coverage!" | |
| else | |
| vendor/bin/phpunit | |
| fi | |
| - name: Upload coverage.xml artifact | |
| if: matrix.php-version == '8.4' && matrix.db-type == 'mysql' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: | | |
| coverage.xml | |
| phpunit-output.txt | |
| - name: Code Coverage Report | |
| if: success() && matrix.php-version == '8.4' && matrix.db-type == 'mysql' | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage.xml | |
| root_dir: ${{ github.workspace }} | |
| fail_ci_if_error: true | |
| verbose: true | |
| validation: | |
| name: Coding Standard & Static Analysis | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: mbstring, intl, pdo_sqlite, imagick | |
| coverage: none | |
| - name: Install Ghostscript | |
| run: sudo apt-get update && sudo apt-get install -y ghostscript | |
| - 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-${{ hashFiles('**/composer.json') }} | |
| restore-keys: ${{ runner.os }}-composer- | |
| - name: Prepare config | |
| run: cp config/app_local.ci.php config/app_local.php | |
| - name: Prepare DB | |
| run: echo "DB_URL=sqlite:///:memory:" >> $GITHUB_ENV | |
| - name: Composer install | |
| run: composer install --no-progress --prefer-dist --optimize-autoloader | |
| - name: Migrations | |
| run: composer migrate | |
| - name: Assets install | |
| run: npm install -g bower && bower install --allow-root && composer assets | |
| - name: DTO check | |
| run: bin/cake dto generate -v -d && bin/cake dto generate -p Sandbox -v -d | |
| - name: Code completion generate | |
| run: bin/cake generate code_completion | |
| - name: Run phpstan | |
| run: vendor/bin/phpstan analyse --error-format=github | |
| - name: Run phpstan tests | |
| run: vendor/bin/phpstan analyse -c tests/phpstan.neon --error-format=github | |
| - name: Run annotator | |
| run: bin/cake annotate all -r -d --ci | |
| #- name: Run annotator | |
| # run: bin/cake annotate all -r -d --ci -p all | |
| - name: Run linter | |
| run: bin/cake linter --ci | |
| - name: Run linter on plugins | |
| run: bin/cake linter --ci -p all | |
| - name: Run phpcs | |
| run: composer cs-check |