Complete v4.0 redesign: clean parameter API and consistent method naming #21
Workflow file for this run
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' | |
| - 'legacy/*' # Legacy branches: legacy/v2.x | |
| - 'feature/*' # Feature branches: feature/new-feature | |
| - 'hotfix/*' # Hotfix branches: hotfix/urgent-fix | |
| - 'release/*' # Release branches: release/v3.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: | |
| # Core PHP version testing | |
| - php: '8.1' | |
| allowed-to-fail: false | |
| - php: '8.2' | |
| allowed-to-fail: false | |
| - php: '8.3' | |
| allowed-to-fail: false | |
| - php: '8.4' | |
| allowed-to-fail: false | |
| # Future-ready: PHP 8.5 (alpha/dev) - when available | |
| - php: '8.5' | |
| stability: 'dev' | |
| allowed-to-fail: true | |
| # Development stability tests | |
| - php: '8.4' | |
| stability: 'dev' | |
| allowed-to-fail: true | |
| - php: '8.5' | |
| stability: 'dev' | |
| allowed-to-fail: true | |
| name: "PHP ${{ matrix.php }}${{ 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: 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: Configure stability | |
| if: matrix.stability | |
| run: | | |
| composer config minimum-stability ${{ matrix.stability }} | |
| composer config prefer-stable true | |
| - 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: composer validate --strict | |
| - name: Run code style check | |
| run: composer cs | |
| - name: Run static analysis | |
| run: composer analyse | |
| - name: Run tests (Unit Tests only) | |
| run: composer test | |
| - name: Run integration tests (public API only - manual trigger) | |
| if: github.event_name == 'workflow_dispatch' | |
| run: vendor/bin/phpunit tests/Integration/PublicApiIntegrationTest.php --testdox | |
| - name: Run integration tests (with authentication - manual trigger) | |
| if: github.event_name == 'workflow_dispatch' | |
| env: | |
| DISCOGS_CONSUMER_KEY: ${{ secrets.DISCOGS_CONSUMER_KEY }} | |
| DISCOGS_CONSUMER_SECRET: ${{ secrets.DISCOGS_CONSUMER_SECRET }} | |
| DISCOGS_PERSONAL_ACCESS_TOKEN: ${{ secrets.DISCOGS_PERSONAL_ACCESS_TOKEN }} | |
| run: | | |
| if [ -n "$DISCOGS_CONSUMER_KEY" ] && [ -n "$DISCOGS_CONSUMER_SECRET" ] && [ -n "$DISCOGS_PERSONAL_ACCESS_TOKEN" ]; then | |
| vendor/bin/phpunit tests/Integration/AuthenticationLevelsTest.php --testdox | |
| else | |
| echo "⚠️ Skipping authenticated integration tests - secrets not available" | |
| fi | |
| 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: composer validate --strict | |
| 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 (Unit Tests only) | |
| run: composer test-coverage | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.xml | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false |