Skip to content

Remove duplicate Symfony dependencies from require-dev section #70

Remove duplicate Symfony dependencies from require-dev section

Remove duplicate Symfony dependencies from require-dev section #70

Workflow file for this run

name: CI
on:
push:
branches:
- 'main'
- 'legacy/*' # Legacy branches: legacy/v3.x
- 'feature/*' # Feature branches: feature/new-feature
- 'hotfix/*' # Hotfix branches: hotfix/urgent-fix
- 'release/*' # Release branches: release/v4.0.0
pull_request:
branches:
- 'main'
- 'legacy/*' # PRs to legacy branches
workflow_dispatch: # Allows manual triggering via GitHub UI
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
# Symfony 6.4 LTS compatibility
- php: '8.2'
symfony-version: '6.4.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '6.4.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '6.4.*'
allowed-to-fail: false
# Symfony 7.x current versions
- php: '8.2'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '7.1.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '7.1.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '7.2.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '7.3.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '7.4.*'
allowed-to-fail: false
# Symfony 8.0 - Requires PHP 8.4+
- php: '8.4'
symfony-version: '8.0.*'
allowed-to-fail: false
# PHP 8.5 with various Symfony versions
- php: '8.5'
symfony-version: '7.3.*'
allowed-to-fail: false
- php: '8.5'
symfony-version: '7.4.*'
allowed-to-fail: false
- php: '8.5'
symfony-version: '8.0.*'
allowed-to-fail: false
name: "PHP ${{ matrix.php }}${{ matrix.symfony-version && format(' | Symfony {0}', matrix.symfony-version) || '' }}${{ matrix.stability && format(' | {0}', matrix.stability) || '' }}"
continue-on-error: ${{ matrix.allowed-to-fail }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, mbstring, tokenizer
coverage: none
tools: composer:v2
- 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@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Configure stability
if: matrix.stability
run: |
composer config minimum-stability ${{ matrix.stability }}
composer config prefer-stable true
- name: Configure Symfony version
if: matrix.symfony-version
run: |
composer require --no-update \
symfony/config:${{ matrix.symfony-version }} \
symfony/dependency-injection:${{ matrix.symfony-version }} \
symfony/http-kernel:${{ matrix.symfony-version }} \
symfony/security-core:${{ matrix.symfony-version }} \
symfony/phpunit-bridge:${{ matrix.symfony-version }}
- name: Remove composer.lock
run: rm -f composer.lock
- name: Install dependencies
run: composer update --prefer-dist --no-interaction --no-progress
- name: Validate composer.json and composer.lock
run: |
if [[ "${{ github.ref }}" == *"beta"* || "${{ github.ref }}" == *"alpha"* || "${{ github.ref }}" == *"rc"* ]]; then
composer validate --no-check-version
else
composer validate --strict
fi
- name: Run code style check
run: composer cs
- name: Run static analysis
run: |
if [[ "${{ matrix.symfony-version }}" == "8.0.*" ]]; then
# Symfony 8.0: Use specific baseline for remaining issues
vendor/bin/phpstan analyse src --level=8 --configuration phpstan/symfony8-baseline.neon
elif [[ "${{ matrix.symfony-version }}" == "7.4.*" ]]; then
# Symfony 7.4 LTS: Functionally identical to 8.0, needs same baseline
vendor/bin/phpstan analyse src --level=8 --configuration phpstan/symfony74-baseline.neon
elif [[ "${{ matrix.symfony-version }}" == "6.4.*" || "${{ matrix.symfony-version }}" == "7.0.*" || "${{ matrix.symfony-version }}" == "7.1.*" || "${{ matrix.symfony-version }}" == "7.2.*" || "${{ matrix.symfony-version }}" == "7.3.*" ]]; then
# Older Symfony versions 6.4-7.3: Use legacy baseline for children() issue
composer analyse-legacy
else
# Future versions: Try without baseline first
composer analyse
fi
- name: Run tests
run: composer test
env:
DISCOGS_CONSUMER_KEY: ${{ secrets.DISCOGS_CONSUMER_KEY }}
DISCOGS_CONSUMER_SECRET: ${{ secrets.DISCOGS_CONSUMER_SECRET }}
DISCOGS_PERSONAL_ACCESS_TOKEN: ${{ secrets.DISCOGS_PERSONAL_ACCESS_TOKEN }}
code-quality:
runs-on: ubuntu-latest
name: Code Quality Checks
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: json, mbstring, tokenizer
coverage: none
tools: composer:v2
- 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@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-interaction --no-progress
- name: Validate composer.json and composer.lock
run: |
if [[ "${{ github.ref }}" == *"beta"* || "${{ github.ref }}" == *"alpha"* || "${{ github.ref }}" == *"rc"* ]]; then
composer validate --no-check-version
else
composer validate --strict
fi
coverage:
runs-on: ubuntu-latest
name: Code Coverage
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: json, mbstring, tokenizer
coverage: xdebug
tools: composer:v2
- 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@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-interaction --no-progress
- name: Run tests with coverage
run: composer test-coverage
env:
DISCOGS_CONSUMER_KEY: ${{ secrets.DISCOGS_CONSUMER_KEY }}
DISCOGS_CONSUMER_SECRET: ${{ secrets.DISCOGS_CONSUMER_SECRET }}
DISCOGS_PERSONAL_ACCESS_TOKEN: ${{ secrets.DISCOGS_PERSONAL_ACCESS_TOKEN }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false