Skip to content

Commit 1cff790

Browse files
authored
Merge d1fccff into 0bf3fb2
2 parents 0bf3fb2 + d1fccff commit 1cff790

File tree

2 files changed

+103
-52
lines changed

2 files changed

+103
-52
lines changed

.github/workflows/reusable-CI-workflow.yml

Lines changed: 102 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,89 @@ name: 'CI reusable workflow'
22

33
on:
44
workflow_call:
5+
inputs:
6+
# >>>> Dummy env-inputs
7+
# Goal here is just to have access to variable values
8+
# in order to build job matrix as `env` variable is not available there
9+
php-min-version:
10+
default: '8.0'
11+
description: Lowest PHP version to assess (e.g Lowest supported version including security support)
12+
required: false
13+
type: string
14+
php-max-version:
15+
default: '8.2'
16+
description: Highest PHP version to assess (e.g Latest supported version)
17+
required: false
18+
type: string
19+
php-next-version:
20+
default: '8.3'
21+
description: Next (currently not supported) PHP version to assess (e.g Current dev version)
22+
required: false
23+
type: string
24+
symfony-min-version:
25+
default: '4.4'
26+
description: Lowest Symfony version to assess (e.g Lowest supported version including security support)
27+
required: false
28+
type: string
29+
symfony-max-version:
30+
default: '6.0'
31+
description: Highest Symfony version to assess (e.g Latest supported version)
32+
required: false
33+
type: string
34+
symfony-next-version:
35+
default: '6.3'
36+
description: Next (currently not supported) Symfony version to assess (e.g Current dev version)
37+
required: false
38+
type: string
39+
# <<<< Dummy env-inputs
540

641
env:
742
TEST_OUTPUT_STYLE: pretty
843
COMPOSER_OPTIONS: --optimize-autoloader
944

1045
jobs:
1146
tests:
12-
name: PHP ${{ matrix.php-version }} & Symfony ${{ matrix.symfony-version }}
47+
name: Tests - ${{ matrix.job-name }}
1348
runs-on: ubuntu-latest
1449
env:
1550
COVERAGE_TYPE: none
51+
COVERAGE_OUTPUT_STYLE: clover
1652
strategy:
1753
fail-fast: true
1854
max-parallel: 4
1955
matrix:
2056
include:
21-
# Bare minimum => Lowest versions allowed by composer config
22-
- symfony-version: '4.4'
23-
php-version: '8.0'
24-
composer-flag: --prefer-lowest
25-
# Up to date versions => Latest versions allowed by composer config
26-
- symfony-version: '5.4'
27-
php-version: '8.2'
28-
# Late symfony migration => Lowest symfony version with latest minor php version allowed by composer config
29-
- symfony-version: '4.4'
30-
php-version: '8.2'
31-
composer-flag: --prefer-lowest
32-
# Late php migration => Latest symfony version with lowest minor php version allowed by composer config
33-
- symfony-version: '5.4'
34-
php-version: '8.0'
35-
# Symfony 6.0 latest
36-
- symfony-version: '6.0'
37-
php-version: '8.2'
38-
# Symfony 6.0 lowest
39-
- symfony-version: '6.0'
40-
php-version: '8.0'
41-
composer-flag: --prefer-lowest
57+
- job-name: Bare minimum # => Lowest versions allowed by composer config
58+
symfony-version: '${{ inputs.symfony-min-version }}'
59+
php-version: '${{ inputs.php-min-version }}'
60+
composer-prefer-lowest: true
61+
- job-name: Up to date versions # => Latest versions allowed by composer config
62+
symfony-version: '${{ inputs.symfony-max-version }}'
63+
php-version: '${{ inputs.php-max-version }}'
64+
- job-name: Late symfony migration # => Lowest symfony version with latest php version allowed by composer config
65+
symfony-version: '${{ inputs.symfony-min-version }}'
66+
php-version: '${{ inputs.php-max-version }}'
67+
composer-prefer-lowest: true
68+
- job-name: Late php migration # => Latest symfony version with lowest php version allowed by composer config
69+
symfony-version: '${{ inputs.symfony-max-version }}'
70+
php-version: '${{ inputs.php-min-version }}'
71+
composer-prefer-lowest: true
72+
- job-name: Bare minimum on latest versions # => Lowest latest versions allowed by composer config
73+
symfony-version: '${{ inputs.symfony-max-version }}'
74+
php-version: '${{ inputs.php-max-version }}'
75+
composer-prefer-lowest: true
76+
- job-name: Up to date bare minimum # => Latest lowest versions allowed by composer config
77+
symfony-version: '${{ inputs.symfony-min-version }}'
78+
php-version: '${{ inputs.php-min-version }}'
4279
steps:
4380
- name: Check out code
4481
uses: actions/checkout@v4
4582

83+
# Enable coverage only for specific version(s) !
84+
# Usually latest version(s), plus additional ones in case of code used only with specific versions
4685
- name: Enable coverage
47-
if: ${{ matrix.php-version == '8.2' }}
86+
if: ${{ matrix.php-version == inputs.php-max-version }}
4887
run: |
49-
echo "COVERAGE_OUTPUT_STYLE=clover" >> $GITHUB_ENV
5088
echo "COVERAGE_TYPE=xdebug" >> $GITHUB_ENV
5189
5290
- name: Setup PHP ${{ matrix.php-version }}
@@ -67,21 +105,21 @@ jobs:
67105
~/.composer
68106
./vendor
69107
# Clear the cache if composer json (as composer.lock is in the repo) has been updated
70-
key: tests-${{ matrix.php-version }}-${{ matrix.symfony-version }}-${{ matrix.composer-flag }}-${{ hashFiles('composer.json') }}
108+
key: tests-${{ matrix.php-version }}-${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }}${{ matrix.composer-prefer-lowest == true && '-lowest' || '' }}
71109

72110
- name: Build
73111
run: |
74112
SF_VERSION=${{ matrix.symfony-version }}
75113
# Issue with ParamterBag below 4.4.30 => https://github.com/symfony/symfony/commit/3eca446b21607ea1c7a865ece2dd8254c33679cc
76114
test '${{ matrix.symfony-version }}' = '4.4' && test '${{ matrix.php-version }}' = '8.2' && SF_VERSION=4.4.30
77-
composer require -W ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-flag }} \
115+
composer require -W ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-prefer-lowest == true && '--prefer-lowest' || '' }} \
78116
symfony/http-foundation:^$SF_VERSION \
79117
symfony/http-kernel:^$SF_VERSION \
80118
symfony/config:^$SF_VERSION \
81119
symfony/dependency-injection:^$SF_VERSION \
82120
symfony/event-dispatcher:^$SF_VERSION \
83121
symfony/routing:^$SF_VERSION \
84-
&& composer update ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-flag }} \
122+
&& composer update ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-prefer-lowest == true && '--prefer-lowest' || '' }} \
85123
&& make build
86124
87125
- name: Tests
@@ -121,7 +159,7 @@ jobs:
121159
if: ${{ env.COVERAGE_TYPE == 'xdebug' }}
122160
uses: actions/upload-artifact@v4
123161
with:
124-
name: coverage-groups-php${{ matrix.php-version }}-sf${{ matrix.symfony-version }}
162+
name: coverage-groups-php${{ matrix.php-version }}-sf${{ matrix.symfony-version }}${{ matrix.composer-prefer-lowest == true && '-lowest' || '' }}
125163
path: build/coverage-groups
126164
if-no-files-found: error
127165

@@ -131,15 +169,15 @@ jobs:
131169
steps:
132170
- uses: actions/checkout@v4
133171

134-
- name: Setup PHP 8.2
172+
- name: Setup PHP ${{ inputs.php-max-version }}
135173
uses: shivammathur/setup-php@v2
174+
env:
175+
update: true # Always use latest available patch for the version
176+
fail-fast: true # step will fail if an extension or tool fails to set up
136177
with:
137-
php-version: 8.2 # Latest supported
178+
php-version: ${{ inputs.php-max-version }}
138179
tools: composer
139180
coverage: none
140-
env:
141-
# Always use latest available patch for the version
142-
update: true
143181

144182
- name: Setup cache
145183
id: cache
@@ -148,7 +186,7 @@ jobs:
148186
path: |
149187
~/.composer
150188
# Clear the cache if composer json (as composer.lock is in the repo) has been updated
151-
key: tests-${{ env.PHP_VERSION }}-${{ hashFiles('composer.json') }}
189+
key: tests-${{ inputs.php-max-version }}-${{ hashFiles('composer.json') }}
152190

153191
- name: Build
154192
run: make build
@@ -161,39 +199,51 @@ jobs:
161199
uses: actions/dependency-review-action@v4
162200

163201
nightly-tests:
164-
name: Nightly - PHP ${{ matrix.php-version }} & Symfony ${{ matrix.symfony-version }}
202+
name: Nightly - ${{ matrix.job-name }}
165203
runs-on: ubuntu-latest
166204
env:
167-
COMPOSER_OPTIONS: '--optimize-autoloader --ignore-platform-req=php+'
205+
COMPOSER_OPTIONS: '--optimize-autoloader --prefer-dist'
206+
COMPOSER_PREFER_STABLE: '1'
207+
COMPOSER_IGNORE_PLATFORM_REQ: 'php+'
168208
continue-on-error: true
169-
needs: [ static-checks, tests ]
209+
needs: [ tests ]
170210
strategy:
171211
fail-fast: false
172212
max-parallel: 4
173213
matrix:
174-
php-version:
175-
- '8.3' # Current php dev version
176-
symfony-version:
177-
- '4.4' # Lowest LTS
178-
- '5.4' # Latest LTS
179-
- '6.0' # Current major version
180214
include:
181-
- symfony-version: '6.3' # Next symfony minor version to manage with latest supported PHP version
182-
php-version: '8.2'
215+
- job-name: PHP upgrade with lowest dependencies versions # => Lowest supported symfony version against next php version
216+
php-version: ${{ inputs.php-next-version }}
217+
symfony-version: ${{ inputs.symfony-min-version }}
218+
composer-prefer-lowest: true
219+
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
220+
# Fix - matthiasnoback/symfony-config-test => Avoid issue with phpunit <-> symfony-config-test packages
221+
pkg-extra-constraints: |
222+
behat/gherkin:~4.12.0
223+
matthiasnoback/symfony-config-test:^4.3
224+
- job-name: PHP upgrade with highest dependencies versions # => Highest supported symfony version against next php version
225+
php-version: ${{ inputs.php-next-version }}
226+
symfony-version: ${{ inputs.symfony-max-version }}
227+
- job-name: Dependency upgrade with lowest php version - Symfony # => Next symfony version against lowest supported PHP version
228+
php-version: ${{ 8.1 < inputs.php-min-version && '8.1' || inputs.php-min-version }} # Fix - Sf 6.3 (current next) require php 8.1 minimum !
229+
symfony-version: ${{ inputs.symfony-next-version }}
230+
- job-name: Dependency upgrade with highest php version - Symfony # => Next symfony version against highest supported PHP version
231+
php-version: ${{ inputs.php-max-version }}
232+
symfony-version: ${{ inputs.symfony-next-version }}
183233

184234
steps:
185235
- name: Check out code
186236
uses: actions/checkout@v4
187237

188238
- name: Setup PHP ${{ matrix.php-version }}
189239
uses: shivammathur/setup-php@v2
240+
env:
241+
update: true # Always use latest available patch for the version
242+
fail-fast: true # step will fail if an extension or tool fails to set up
190243
with:
191244
php-version: '${{ matrix.php-version }}'
192245
tools: composer
193246
coverage: none
194-
env:
195-
# Always use latest available patch for the version
196-
update: true
197247

198248
- name: Setup cache
199249
id: cache
@@ -203,19 +253,20 @@ jobs:
203253
~/.composer
204254
./vendor
205255
# Clear the cache if composer json (as composer.lock is in the repo) has been updated
206-
key: tests-${{ matrix.php-version }}-${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }}
256+
key: tests-${{ matrix.php-version }}-${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }}${{ matrix.composer-prefer-lowest == true && '-lowest' || '' }}
207257

208258
- name: Build
209259
run: |
210260
composer config minimum-stability dev \
211-
&& composer require -W ${{ env.COMPOSER_OPTIONS }} \
261+
&& composer require -W ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-prefer-lowest == true && '--prefer-lowest' || '' }} \
212262
symfony/http-foundation:^${{ matrix.symfony-version }} \
213263
symfony/http-kernel:^${{ matrix.symfony-version }} \
214264
symfony/config:^${{ matrix.symfony-version }} \
215265
symfony/dependency-injection:^${{ matrix.symfony-version }} \
216266
symfony/event-dispatcher:^${{ matrix.symfony-version }} \
217267
symfony/routing:^${{ matrix.symfony-version }} \
218-
&& composer update ${{ env.COMPOSER_OPTIONS }} \
268+
${{ matrix.pkg-extra-constraints }} \
269+
&& composer update ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-prefer-lowest == true && '--prefer-lowest' || '' }} \
219270
&& make build
220271
221272
- name: Test

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"yoanm/jsonrpc-server-sdk": "^3.3"
4242
},
4343
"require-dev": {
44-
"behat/behat": "^3.9.0",
44+
"behat/behat": "^3.9.0,<=3.16.1",
4545
"dvdoug/behat-code-coverage": "^5.0",
4646
"matthiasnoback/symfony-config-test": "^4.0",
4747
"matthiasnoback/symfony-dependency-injection-test": "^4.0",

0 commit comments

Comments
 (0)