summaryrefslogtreecommitdiff
path: root/.github/workflows/php-code-quality.yml
blob: b640d2c7baaef1d04f7d493f04cd2b8fa431285e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
name: PHP Code Quality

on:
  pull_request:
    paths:
    - '**.php'
    - 'phpstan.neon'
    - 'phpunit.xml'
  # Allow manual triggering
  workflow_dispatch:
  # Allow other workflows (e.g. Publish) to invoke this one.
  workflow_call:


env:
  fail-fast: true


permissions:
  contents: read


jobs:
  phpstan:
    name: PHPStan
    runs-on: ubuntu-latest

    steps:
    - name: Check out code
      uses: actions/checkout@v5

    - name: Set up PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.4'
        coverage: none
        # PHPUnit is installed to support PHPStan checking tests/
        tools: phpstan/phpstan:^2.1, phpunit/phpunit:^12.4

    # https://phpstan.org/user-guide/result-cache
    - name: Restore result cache
      uses: actions/cache/restore@v4
      with:
        path: .phpstan-tmp
        key: phpstan-result-cache-${{ github.run_id }}
        restore-keys: |
          phpstan-result-cache-

    - name: Run PHPStan
      run: phpstan analyze --no-progress

    # https://phpstan.org/user-guide/result-cache
    - name: Save result cache
      uses: actions/cache/save@v4
      if: ${{ !cancelled() }}
      with:
        # same as in phpstan.neon
        path: .phpstan-tmp
        key: phpstan-result-cache-${{ github.run_id }}

  phpunit:
    name: PHPUnit
    runs-on: ubuntu-latest
    continue-on-error: ${{ matrix.experimental }}
    strategy:
      fail-fast: false
      matrix:
        php: ['8.3', '8.4']
        experimental: [false]
        include:
        - php: '8.5'
          experimental: true

    steps:
    - name: Check out code
      uses: actions/checkout@v5

    - name: Set up PHP ${{ matrix.php }}
      uses: shivammathur/setup-php@v2
      with:
        # Check https://phpunit.de/supported-versions.html for PHP version compatibility
        php-version: ${{ matrix.php }}
        coverage: none
        tools: phpunit/phpunit:^12.4

    - name: Run PHPUnit
      run: phpunit --exclude-group integration --coverage-filter classes --coverage-filter include