-
Notifications
You must be signed in to change notification settings - Fork 2
146 lines (120 loc) · 4.43 KB
/
ci.yml
File metadata and controls
146 lines (120 loc) · 4.43 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: CI
on:
push:
branches: [main, "2.x", "feat/*", "fix/*"]
pull_request:
branches: [main, "2.x"]
jobs:
tests:
name: Tests · PHP ${{ matrix.php }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ["7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
tools: composer:v2
ini-values: error_reporting=E_ALL, display_errors=On
- 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 packages
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-php${{ matrix.php }}-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-interaction
- name: Run PHPUnit
run: vendor/bin/phpunit --testdox
static-analysis:
name: Static analysis · PHPStan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP 8.3
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
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 packages
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php8.3-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-php8.3-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-interaction
- name: PHPStan (level 8)
run: vendor/bin/phpstan analyse --no-progress
code-style:
name: Code style · PHP-CS-Fixer
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP 8.3
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
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 packages
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php8.3-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-php8.3-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-interaction
- name: PHP-CS-Fixer (dry-run + diff)
run: vendor/bin/php-cs-fixer fix --dry-run --diff
lowest-php-syntax:
name: Syntax · PHP ${{ matrix.php }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ["5.6", "7.0", "7.1", "7.2"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
# No Composer install on these PHP versions: PHPUnit 9.6
# requires PHP >= 7.3, but composer.json keeps a "php: >=5.6"
# contract for library consumers. We only verify that the
# source files themselves parse cleanly on these interpreters.
- name: Lint src/
run: find src -type f -name '*.php' -print0 | xargs -0 -n1 php -l
- name: Autoload smoke test
# Standalone script (not `php -r`) — on PHP 5.6 / 7.0 / 7.1 / 7.2
# `__DIR__` is not defined inside `php -r '...'`, which made the
# autoloader resolve `/src/...` and load nothing. As a file
# `__DIR__` reliably points at tests/compat/, so the relative
# path to src/ works on every PHP version we support.
run: php tests/compat/autoload-smoke.php