88 branches : ["main"]
99
1010jobs :
11- php- checks :
12- name : PHP Checks
11+ checks :
12+ name : Quality Checks
1313 runs-on : ubuntu-latest
1414 steps :
1515 - name : " Checkout Code"
@@ -21,19 +21,64 @@ jobs:
2121 php-version : " 8.3"
2222 ini-values : memory_limit=-1
2323 tools : composer:v2
24+ - name : " Determine Composer Cache Dir"
25+ id : composer-cache
26+ run : |
27+ echo "dir=$(composer -q config cache-files-dir)" >> $GITHUB_OUTPUT
2428 - name : " Cache Dependencies"
2529 uses : " actions/cache@v4"
2630 with :
27- path : |
28- ~/.composer/cache
29- key : " composer-cache"
30- restore-keys : " composer-cache"
31+ path : ${{ steps.composer-cache.outputs.dir }}
32+ key : " composer-8.3-lock"
33+ restore-keys : " composer-8.3-lock"
3134 - name : " Install Dependencies"
32- run : " composer install --ansi --no-interaction --no-progress --no-suggest"
33- - name : " Run Continuous Integration"
34- run : composer ci
35+ run : " composer install --ansi --no-interaction --no-progress"
36+ - name : " Check code style"
37+ run : composer fmt:check
38+ - name : " Check Types"
39+ run : composer psalm:gh
40+
41+ test :
42+ name : Test
43+ runs-on : ubuntu-latest
44+ needs : ["checks"]
45+ strategy :
46+ matrix :
47+ php-version : ["8.3", "8.4"]
48+ deps : ["lock", "highest", "lowest"]
49+ steps :
50+ - name : " Checkout Code"
51+ uses : " actions/checkout@v4"
52+ - name : " Install PHP"
53+ uses : " shivammathur/setup-php@v2"
54+ with :
55+ coverage : " xdebug"
56+ php-version : ${{ matrix.php-version }}
57+ ini-values : memory_limit=-1
58+ tools : composer:v2
59+ - name : " Determine Composer Cache Dir"
60+ id : composer-cache
61+ run : |
62+ echo "dir=$(composer -q config cache-files-dir)" >> $GITHUB_OUTPUT
63+ - name : " Cache Dependencies"
64+ uses : " actions/cache@v4"
65+ with :
66+ path : ${{ steps.composer-cache.outputs.dir }}
67+ key : " composer-${{ matrix.php-version }}-${{ matrix.deps }}"
68+ restore-keys : " composer-${{ matrix.php-version }}-${{ matrix.deps }}"
69+ - name : " Install Dependencies"
70+ if : ${{ matrix.deps == 'lock'}}
71+ run : " composer install --ignore-platform-reqs --ansi --no-interaction --no-progress"
72+ - name : " Install Highest Dependencies"
73+ if : ${{ matrix.deps == 'highest'}}
74+ run : " composer update --ignore-platform-reqs --ansi --no-interaction --no-progress"
75+ - name : " Install Lowest Dependencies"
76+ if : ${{ matrix.deps == 'lowest'}}
77+ run : " composer update --ignore-platform-reqs --prefer-lowest --ansi --no-interaction --no-progress"
78+ - name : " Run Test Suite"
79+ run : composer test
3580 - name : " Upload Coverage Report"
3681 uses : actions/upload-artifact@v4
3782 with :
38- name : " coverage-report"
83+ name : " coverage-report-${{ matrix.php-version }}-${{ matrix.deps }} "
3984 path : .dev/coverage
0 commit comments