-
Notifications
You must be signed in to change notification settings - Fork 1
162 lines (130 loc) · 4.54 KB
/
Copy pathci.yml
File metadata and controls
162 lines (130 loc) · 4.54 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
name: CI
on:
workflow_dispatch:
push:
branches:
- main
tags:
- "v*"
pull_request:
branches:
- main
schedule:
- cron: "23 4 * * 1"
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
composer:
name: Composer validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
coverage: none
tools: composer:v2
- name: Validate Composer package
run: composer validate --strict
composer-audit:
name: Composer audit
runs-on: ubuntu-latest
needs: composer
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP with Composer cache
uses: ./.github/actions/php-setup
with:
cache-key: ${{ runner.os }}-audit-php8.3-composer-${{ hashFiles('composer.lock') }}
cache-restore-keys: ${{ runner.os }}-audit-php8.3-composer-
- name: Install dependencies
run: composer install --no-ansi --no-interaction --no-progress --prefer-dist
- name: Run Composer audit
run: composer audit
coding-standards:
name: Coding standards and PHP compatibility
runs-on: ubuntu-latest
needs: composer
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP with Composer cache
uses: ./.github/actions/php-setup
with:
cache-key: ${{ runner.os }}-phpcs-php8.3-composer-${{ hashFiles('composer.lock') }}
cache-restore-keys: ${{ runner.os }}-phpcs-php8.3-composer-
- name: Install dependencies
run: composer install --no-ansi --no-interaction --no-progress --prefer-dist
- name: Run PHPCS
run: composer phpcs
static-analysis:
name: Static analysis
runs-on: ubuntu-latest
needs: composer
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP with Composer cache
uses: ./.github/actions/php-setup
with:
cache-key: ${{ runner.os }}-phpstan-php8.3-composer-${{ hashFiles('composer.lock') }}
cache-restore-keys: ${{ runner.os }}-phpstan-php8.3-composer-
- name: Install dependencies
run: composer install --no-ansi --no-interaction --no-progress --prefer-dist
- name: Run PHPStan
run: composer phpstan -- --no-progress
dependency-compatibility:
name: PHP ${{ matrix.php }} / ${{ matrix.dependencies }} runtime dependencies
runs-on: ubuntu-latest
needs: composer
strategy:
fail-fast: false
matrix:
php:
- "7.4"
- "8.0"
- "8.1"
- "8.2"
- "8.3"
- "8.4"
dependencies:
- highest
include:
- php: "7.4"
dependencies: lowest
- php: "8.3"
dependencies: locked
- php: "8.4"
dependencies: locked
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP with Composer cache
uses: ./.github/actions/php-setup
with:
php-version: ${{ matrix.php }}
cache-key: ${{ runner.os }}-dependencies-php${{ matrix.php }}-${{ matrix.dependencies }}-${{ hashFiles('composer.json', 'composer.lock') }}
cache-restore-keys: |
${{ runner.os }}-dependencies-php${{ matrix.php }}-${{ matrix.dependencies }}-
${{ runner.os }}-dependencies-php${{ matrix.php }}-
- name: Prepare runtime-only Composer manifest
run: jq 'del(."require-dev", ."autoload-dev", .scripts)' composer.json > composer.runtime.json
- name: Install locked dependencies
if: matrix.dependencies == 'locked'
run: composer install --no-dev --no-ansi --no-interaction --no-progress --prefer-dist
- name: Install highest dependencies
if: matrix.dependencies == 'highest'
run: COMPOSER=composer.runtime.json composer update --no-dev --no-ansi --no-interaction --no-progress --prefer-dist
- name: Install lowest dependencies
if: matrix.dependencies == 'lowest'
run: COMPOSER=composer.runtime.json composer update --no-dev --prefer-lowest --prefer-stable --no-ansi --no-interaction --no-progress --prefer-dist
- name: Validate Composer platform compatibility
run: composer check-platform-reqs --no-dev
- name: Lint PHP source
run: find src -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l