🧪 Run Tests & 🛠️ Static Analysis #839
This file contains 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: 🧪 Run Tests & 🛠️ Static Analysis | |
on: | |
push: | |
branches: | |
- main | |
- 2.x | |
pull_request: | |
schedule: | |
- cron: '0 0 * * *' # Daily at midnight | |
jobs: | |
static-analysis: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php: [ 8.2 ] | |
name: 🐘 PHP ${{ matrix.php }} Static Analysis | |
steps: | |
- name: 📥 Checkout Code | |
uses: actions/checkout@v4 | |
- name: 🔧 Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
- name: 🚚 Cache Composer Dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.composer/cache | |
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} | |
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- | |
- name: 📦 Install Dependencies | |
run: | | |
composer config --global allow-plugins true | |
composer install | |
- name: 🧹 Run PHP CS Fixer (Code Style) | |
run: vendor/bin/php-cs-fixer fix --dry-run | |
- name: 🔍 Run PHPStan (Static Analysis) | |
run: vendor/bin/phpstan analyse | |
- name: 🚀 Run PHPLint (Syntax Check) | |
run: vendor/bin/phplint | |
prime-test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { php: 8.4, phpunit: 10.5.* } | |
- { php: 8.3, phpunit: 10.5.* } | |
- { php: 8.2, phpunit: 10.5.* } | |
name: 🐘 PHP ${{ matrix.php }} | |
steps: | |
- name: 📥 Checkout code | |
uses: actions/checkout@v4 | |
- name: 🔧 Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
- name: 🚚 Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.composer/cache | |
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} | |
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- | |
- name: 📦 Install dependencies | |
run: | | |
sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json | |
composer config --global allow-plugins true | |
composer require "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" --no-interaction --no-update | |
composer update --prefer-lowest -W | |
- name: ✅ Execute tests | |
run: vendor/bin/phpunit --testsuite prime | |
symfony-test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { symfony: 7.2.*, php: 8.4, phpunit: 10.5.* } | |
- { symfony: 7.2.*, php: 8.3, phpunit: 10.5.* } | |
- { symfony: 7.2.*, php: 8.2, phpunit: 10.5.* } | |
- { symfony: 7.1.*, php: 8.2, phpunit: 10.5.* } | |
- { symfony: 7.0.*, php: 8.2, phpunit: 10.5.* } | |
name: 🌉 Symfony ${{ matrix.symfony }} PHP ${{ matrix.php }} | |
steps: | |
- name: 📥 Checkout code | |
uses: actions/checkout@v4 | |
- name: 🔧 Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
- name: 🚚 Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.composer/cache | |
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} | |
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- | |
- name: 📦 Install dependencies | |
run: | | |
sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json | |
composer config --global allow-plugins true | |
composer config extra.symfony.require "${{ matrix.symfony }}" | |
composer require "symfony/config:${{ matrix.symfony }}" "symfony/console:${{ matrix.symfony }}" "symfony/dependency-injection:${{ matrix.symfony }}" "symfony/framework-bundle:${{ matrix.symfony }}" "symfony/http-kernel:${{ matrix.symfony }}" "symfony/translation:${{ matrix.symfony }}" "symfony/twig-bundle:${{ matrix.symfony }}" "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" "monolog/monolog" --no-interaction --no-update | |
composer update --prefer-lowest -W | |
- name: ✅ Execute tests | |
run: vendor/bin/phpunit --testsuite symfony | |
laravel-test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { laravel: 11.*, testbench: 9.*, php: 8.3, phpunit: 10.5.* } | |
- { laravel: 11.*, testbench: 9.*, php: 8.2, phpunit: 10.5.* } | |
name: 🏗 Laravel ${{ matrix.laravel }} PHP ${{ matrix.php }} | |
steps: | |
- name: 📥 Checkout code | |
uses: actions/checkout@v4 | |
- name: 🔧 Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: fileinfo | |
coverage: none | |
- name: 🚚 Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.composer/cache | |
key: ${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} | |
restore-keys: ${{ matrix.php }}-composer | |
- name: 📦 Install dependencies | |
run: | | |
sed -i '/\"require\": {/,/},/d; /\"require-dev\": {/,/},/d' composer.json | |
composer config --global allow-plugins true | |
composer require "laravel/framework:${{ matrix.laravel }}" "phpunit/phpunit:${{ matrix.phpunit }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update | |
composer update --prefer-lowest -W | |
- name: ✅ Execute tests | |
run: vendor/bin/phpunit --testsuite laravel |