Merge pull request #2 from nowo-tech/dependabot/github_actions/action… #6
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: | |
| branches: [main, master] | |
| pull_request: | |
| branches: [main, master] | |
| jobs: | |
| # REQ-SF-002: matrix must include mandatory Symfony minors 7.4, 8.0, and 8.1 (see BUNDLES_FULL_SPECS_DETAILS.md). | |
| test: | |
| name: PHP ${{ matrix.php }} - Symfony ${{ matrix.symfony }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php: ['8.2', '8.3', '8.4', '8.5'] | |
| symfony: ['6.4', '7.0', '7.4', '8.0', '8.1'] | |
| exclude: | |
| - php: '8.2' | |
| symfony: '8.0' | |
| - php: '8.2' | |
| symfony: '8.1' | |
| - php: '8.3' | |
| symfony: '8.0' | |
| - php: '8.3' | |
| symfony: '8.1' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php }} | |
| extensions: json | |
| coverage: pcov | |
| tools: composer:v2 | |
| - name: Validate composer.json | |
| run: composer validate --strict | |
| - name: Get Composer cache directory | |
| id: composer-cache | |
| run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
| - name: Cache Composer dependencies | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-php-${{ matrix.php }}-symfony-${{ matrix.symfony }}-composer-${{ hashFiles('**/composer.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-php-${{ matrix.php }}-symfony-${{ matrix.symfony }}-composer- | |
| ${{ runner.os }}-php-${{ matrix.php }}-composer- | |
| - name: Override platform for Symfony 8 (requires PHP 8.4+) | |
| if: startsWith(matrix.symfony, '8.') | |
| run: composer config platform.php 8.4 | |
| - name: Install dependencies with Symfony ${{ matrix.symfony }} | |
| run: | | |
| composer require symfony/config:^${{ matrix.symfony }} symfony/dependency-injection:^${{ matrix.symfony }} symfony/http-kernel:^${{ matrix.symfony }} symfony/http-foundation:^${{ matrix.symfony }} symfony/security-core:^${{ matrix.symfony }} --no-interaction --no-update | |
| composer update symfony/* doctrine/* --with-all-dependencies --no-interaction --prefer-dist --no-progress | |
| - name: Run tests | |
| run: composer test | |
| - name: Run tests with coverage (PHP 8.2 + Symfony 7.4 only) | |
| if: matrix.php == '8.2' && matrix.symfony == '7.4' | |
| run: composer test-coverage | |
| code-style: | |
| name: Code Style | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| fetch-depth: 0 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| tools: composer:v2, cs2pr | |
| - name: Install dependencies | |
| run: composer install --prefer-dist --no-progress --no-interaction | |
| - name: Fix code style | |
| run: composer cs-fix | |
| - name: Check for changes | |
| id: verify-changed-files | |
| run: | | |
| if [ -n "$(git status --porcelain)" ]; then | |
| echo "changed=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "changed=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Commit changes | |
| if: steps.verify-changed-files.outputs.changed == 'true' | |
| run: | | |
| git config --local user.email "action@github.com" | |
| git config --local user.name "GitHub Action" | |
| git add -A | |
| git commit -m "Apply PHP CS Fixer fixes [skip ci]" | |
| git push | |
| code-style-check: | |
| name: Code Style Check | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| tools: composer:v2, cs2pr | |
| - name: Install dependencies | |
| run: composer install --prefer-dist --no-progress --no-interaction | |
| - name: Check code style | |
| run: composer cs-check | |
| coverage: | |
| name: Code Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| extensions: json | |
| coverage: pcov | |
| tools: composer:v2 | |
| - name: Install dependencies (Symfony 7.4) | |
| run: | | |
| composer require symfony/config:^7.4 symfony/dependency-injection:^7.4 symfony/http-kernel:^7.4 symfony/http-foundation:^7.4 symfony/security-core:^7.4 --no-interaction --no-update | |
| composer update symfony/* doctrine/* --with-all-dependencies --no-interaction --prefer-dist --no-progress | |
| - name: Run tests with coverage | |
| run: composer test-coverage | |
| - name: Validate coverage file | |
| run: | | |
| if [ ! -f coverage.xml ]; then | |
| echo "ERROR: coverage.xml was not generated" | |
| exit 1 | |
| fi | |
| echo "coverage.xml generated" | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v7 | |
| with: | |
| files: coverage.xml | |
| fail_ci_if_error: false |