Skip to content

Commit d4ce319

Browse files
authored
Harmonize CI (#113)
1 parent e106a50 commit d4ce319

File tree

3 files changed

+49
-28
lines changed

3 files changed

+49
-28
lines changed

.github/workflows/CI.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,23 @@ on: # Build any PRs and main branch changes
77
- opened
88
- synchronize
99
paths-ignore:
10+
# >>> CI Pre-check
1011
# In case of updates to those workflows, they must be pre-checked by `pre-check-CI-updates.yml` rather than this workflow !
1112
# Any updates on those workflows are expected to be restricted to those workflows only ! (no update on code for instance)
1213
- '.github/workflows/pre-check-CI-updates.yml'
1314
- '.github/workflows/reusable-CI-workflow.yml'
1415
- '.github/workflows/reusable-coverage-upload-workflow.yml'
16+
# <<< CI Pre-check
17+
# >>> Irrelevant files (no impact whatsoever on this GHWorkflow)
18+
- '.github/workflows/coverage-upload.yml' # Executed for on master (workflow_run), no impact here
19+
- '.github/workflows/dependabot-PRs.yml' # Executed for dependabot PRs, no impact here
20+
- '**/*.md'
21+
- '**/LICENSE'
22+
- '**/CODEOWNERS'
23+
- '**/.remarkrc*'
24+
- '**/.editorconfig'
25+
- '**/.scrutinizer.yml'
26+
# <<< Irrelevant files
1527
push:
1628
branches: [ master ]
1729
schedule:

.github/workflows/auto-merge-dependabot.yml renamed to .github/workflows/dependabot-PRs.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: PR auto-merge
1+
name: Dependabot PRs
22
on: pull_request
33

44
permissions:
@@ -7,11 +7,12 @@ permissions:
77

88
jobs:
99
dependabot:
10+
name: Auto-merge & Labels
11+
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'yoanm/symfony-jsonrpc-http-server'
1012
runs-on: ubuntu-latest
1113
permissions:
1214
contents: write
1315
pull-requests: write
14-
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'yoanm/symfony-jsonrpc-http-server'
1516
steps:
1617
- name: Dependabot metadata
1718
id: metadata

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

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
dependency: symfony
4646

4747
tests:
48-
name: ${{ matrix.job-name }}
48+
name: PHP ${{ matrix.php-version }} & Sf ${{ matrix.symfony-version }} - ${{ matrix.job-name }}
4949
needs: [fetch-supported-versions]
5050
runs-on: ubuntu-latest
5151
permissions:
@@ -61,28 +61,28 @@ jobs:
6161
php-version: '${{ needs.fetch-supported-versions.outputs.php-max }}'
6262
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-max }}'
6363
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
64-
pkg-extra-constraints: behat/gherkin:~4.12.0
65-
- job-name: Up to date versions - Special case - Symfony 5.4
64+
pkg-extra-constraints: --with 'behat/gherkin:~4.12.0'
65+
- job-name: Up to date versions - Sf 5.4 case
6666
php-version: '${{ needs.fetch-supported-versions.outputs.php-max }}'
6767
symfony-version: '5.4'
6868
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
6969
# Fix - symfony/yaml - Avoid issue with Sf YAML 6.4+ and Framework bundle
70-
pkg-extra-constraints: behat/gherkin:~4.12.0 ${{ ( needs.fetch-supported-versions.outputs.symfony-max == '6.4' ) && 'symfony/yaml:~6.4.0' || '' }}
70+
pkg-extra-constraints: --with 'behat/gherkin:~4.12.0' ${{ ( needs.fetch-supported-versions.outputs.symfony-max == '6.4' ) && '--with "symfony/yaml:~6.4.0"' || '' }}
7171
- job-name: Bare minimum # => Lowest versions allowed by composer config
7272
php-version: '${{ needs.fetch-supported-versions.outputs.php-min }}'
7373
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-min }}'
74-
- job-name: Bare minimum - Special case - Symfony 5.4
74+
- job-name: Bare minimum - Sf 5.4 case
7575
php-version: '${{ needs.fetch-supported-versions.outputs.php-min }}'
7676
symfony-version: '5.4'
77-
- job-name: Late migration - PHP # => Highest symfony version with lowest php version allowed by composer config
77+
- job-name: Late PHP migration # => Highest symfony version with lowest php version allowed by composer config
7878
# Fix - Sf 6.4 require php 8.1 minimum !
7979
php-version: ${{ ( needs.fetch-supported-versions.outputs.symfony-max == '6.4' && needs.fetch-supported-versions.outputs.php-min == '8.0' ) && '8.1' || needs.fetch-supported-versions.outputs.php-min }}
8080
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-max }}'
81-
- job-name: Late migration - Symfony # => Lowest symfony version with highest php version allowed by composer config
81+
- job-name: Late Symfony migration # => Lowest symfony version with highest php version allowed by composer config
8282
php-version: '${{ needs.fetch-supported-versions.outputs.php-max }}'
8383
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-min }}'
8484
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
85-
pkg-extra-constraints: behat/gherkin:~4.12.0
85+
pkg-extra-constraints: --with 'behat/gherkin:~4.12.0'
8686
steps:
8787
- name: Check out code
8888
uses: actions/checkout@v5
@@ -119,13 +119,16 @@ jobs:
119119

120120
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }}
121121
run: |
122+
# Rely on "composer update --with" rather than "composer require" !
123+
# => it ensures the tested version is actually allowed by constraints
124+
# ("composer require" would override those constraints, which may not produce something actually installable by end-user)
122125
SF_CONSTRAINT="~${{ matrix.symfony-version }}.0"
123-
composer require -W \
124-
symfony/config:${SF_CONSTRAINT} \
125-
symfony/dependency-injection:${SF_CONSTRAINT} \
126-
symfony/event-dispatcher:${SF_CONSTRAINT} \
127-
symfony/http-foundation:${SF_CONSTRAINT} \
128-
symfony/http-kernel:${SF_CONSTRAINT} \
126+
composer update --no-install --with-all-dependencies --minimal-changes \
127+
--with "symfony/config:${SF_CONSTRAINT}" \
128+
--with "symfony/dependency-injection:${SF_CONSTRAINT}" \
129+
--with "symfony/event-dispatcher:${SF_CONSTRAINT}" \
130+
--with "symfony/http-foundation:${SF_CONSTRAINT}" \
131+
--with "symfony/http-kernel:${SF_CONSTRAINT}" \
129132
${{ matrix.pkg-extra-constraints }} \
130133
&& make build
131134
@@ -205,13 +208,16 @@ jobs:
205208

206209
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ env.SYMFONY_VERSION }}
207210
run: |
211+
# Rely on "composer update --with" rather than "composer require" !
212+
# => it ensures the tested version is actually allowed by constraints
213+
# ("composer require" would override those constraints, which may not produce something actually installable by end-user)
208214
SF_CONSTRAINT="~${{ env.SYMFONY_VERSION }}.0"
209-
composer require -W \
210-
symfony/config:${SF_CONSTRAINT} \
211-
symfony/dependency-injection:${SF_CONSTRAINT} \
212-
symfony/event-dispatcher:${SF_CONSTRAINT} \
213-
symfony/http-foundation:${SF_CONSTRAINT} \
214-
symfony/http-kernel:${SF_CONSTRAINT} \
215+
composer update --no-install --with-all-dependencies --minimal-changes \
216+
--with "symfony/config:${SF_CONSTRAINT}" \
217+
--with "symfony/dependency-injection:${SF_CONSTRAINT}" \
218+
--with "symfony/event-dispatcher:${SF_CONSTRAINT}" \
219+
--with "symfony/http-foundation:${SF_CONSTRAINT}" \
220+
--with "symfony/http-kernel:${SF_CONSTRAINT}" \
215221
&& make build
216222
217223
- name: ComposerRequireChecker
@@ -222,7 +228,7 @@ jobs:
222228
uses: actions/dependency-review-action@v4
223229

224230
nightly-tests:
225-
name: Nightly - ${{ matrix.job-name }}
231+
name: Nightly - PHP ${{ matrix.php-version }} & Sf ${{ matrix.symfony-version }} - ${{ matrix.job-name }}
226232
needs: [ fetch-supported-versions, tests ]
227233
if: ${{ github.event_name == 'push' || ( github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'with-nightly-tests') ) }}
228234
runs-on: ubuntu-latest
@@ -235,23 +241,23 @@ jobs:
235241
fail-fast: false
236242
matrix:
237243
include:
238-
- job-name: PHP - With highest supported Symfony versions
244+
- job-name: PHP with highest supported Symfony versions
239245
php-version: ${{ needs.fetch-supported-versions.outputs.php-next }}
240246
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-max }}
241247
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
242248
pkg-extra-constraints: behat/gherkin:~4.12.0
243-
- job-name: PHP - With lowest supported Symfony versions
249+
- job-name: PHP with lowest supported Symfony versions
244250
php-version: ${{ needs.fetch-supported-versions.outputs.php-next }}
245251
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-min }}
246252
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
247253
pkg-extra-constraints: behat/gherkin:~4.12.0
248-
- job-name: Symfony - With highest supported PHP version
254+
- job-name: Symfony with highest supported PHP version
249255
php-version: ${{ needs.fetch-supported-versions.outputs.php-max }}
250256
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }}
251257
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
252258
# Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum !
253259
pkg-extra-constraints: behat/gherkin:~4.12.0 ${{ ( needs.fetch-supported-versions.outputs.symfony-next == '7.0' && needs.fetch-supported-versions.outputs.php-max == '8.4' ) && 'symfony/framework-bundle:~7.0.0@dev' || '' }}
254-
- job-name: Symfony - With lowest supported PHP version
260+
- job-name: Symfony with lowest supported PHP version
255261
# Fix - Sf 7.0 require php 8.1 minimum, most of deps require 8.2 !
256262
php-version: ${{ ( needs.fetch-supported-versions.outputs.symfony-next == '7.0' && needs.fetch-supported-versions.outputs.php-min == '8.0' ) && '8.2' || needs.fetch-supported-versions.outputs.php-min }}
257263
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }}
@@ -288,9 +294,11 @@ jobs:
288294

289295
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }}
290296
run: |
297+
# For nightly builds, rely on "composer require" rather than "composer update --with" !
298+
# => tested version is likely outside of constraints, in that case "composer update --with" would fail
291299
SF_CONSTRAINT="~${{ matrix.symfony-version }}.0@dev"
292300
composer config minimum-stability dev \
293-
&& composer require -W \
301+
&& composer require --no-install --with-all-dependencies --minimal-changes \
294302
symfony/config:${SF_CONSTRAINT} \
295303
symfony/dependency-injection:${SF_CONSTRAINT} \
296304
symfony/event-dispatcher:${SF_CONSTRAINT} \

0 commit comments

Comments
 (0)