Skip to content

Commit c17b576

Browse files
authored
Harmonize CI (#32)
1 parent 6bfe97a commit c17b576

File tree

3 files changed

+47
-26
lines changed

3 files changed

+47
-26
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-doc'
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-doc'
1516
steps:
1617
- name: Dependabot metadata
1718
id: metadata

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

Lines changed: 32 additions & 24 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,27 +61,27 @@ 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)
69-
pkg-extra-constraints: behat/gherkin:~4.12.0
69+
pkg-extra-constraints: --with 'behat/gherkin:~4.12.0'
7070
- job-name: Bare minimum # => Lowest versions allowed by composer config
7171
php-version: '${{ needs.fetch-supported-versions.outputs.php-min }}'
7272
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-min }}'
73-
- job-name: Bare minimum - Special case - Symfony 5.4
73+
- job-name: Bare minimum - Sf 5.4 case
7474
php-version: '${{ needs.fetch-supported-versions.outputs.php-min }}'
7575
symfony-version: '5.4'
76-
- job-name: Late migration - PHP # => Highest symfony version with lowest php version allowed by composer config
76+
- job-name: Late PHP migration # => Highest symfony version with lowest php version allowed by composer config
7777
# Fix - Sf 6.4 require php 8.1 minimum !
7878
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 }}
7979
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-max }}'
80-
- job-name: Late migration - Symfony # => Lowest symfony version with highest php version allowed by composer config
80+
- job-name: Late Symfony migration # => Lowest symfony version with highest php version allowed by composer config
8181
php-version: '${{ needs.fetch-supported-versions.outputs.php-max }}'
8282
symfony-version: '${{ needs.fetch-supported-versions.outputs.symfony-min }}'
8383
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
84-
pkg-extra-constraints: behat/gherkin:~4.12.0
84+
pkg-extra-constraints: --with 'behat/gherkin:~4.12.0'
8585
steps:
8686
- name: Check out code
8787
uses: actions/checkout@v5
@@ -118,12 +118,15 @@ jobs:
118118

119119
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }}
120120
run: |
121+
# Rely on "composer update --with" rather than "composer require" !
122+
# => it ensures the tested version is actually allowed by constraints
123+
# ("composer require" would override those constraints, which may not produce something actually installable by end-user)
121124
SF_CONSTRAINT="~${{ matrix.symfony-version }}.0"
122-
composer require -W \
123-
symfony/config:${SF_CONSTRAINT} \
124-
symfony/dependency-injection:${SF_CONSTRAINT} \
125-
symfony/http-foundation:${SF_CONSTRAINT} \
126-
symfony/http-kernel:${SF_CONSTRAINT} \
125+
composer update --no-install --with-all-dependencies --minimal-changes \
126+
--with "symfony/config:${SF_CONSTRAINT}" \
127+
--with "symfony/dependency-injection:${SF_CONSTRAINT}" \
128+
--with "symfony/http-foundation:${SF_CONSTRAINT}" \
129+
--with "symfony/http-kernel:${SF_CONSTRAINT}" \
127130
${{ matrix.pkg-extra-constraints }} \
128131
&& make build
129132
@@ -203,12 +206,15 @@ jobs:
203206

204207
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ env.SYMFONY_VERSION }}
205208
run: |
209+
# Rely on "composer update --with" rather than "composer require" !
210+
# => it ensures the tested version is actually allowed by constraints
211+
# ("composer require" would override those constraints, which may not produce something actually installable by end-user)
206212
SF_CONSTRAINT="~${{ env.SYMFONY_VERSION }}.0"
207-
composer require -W \
208-
symfony/config:${SF_CONSTRAINT} \
209-
symfony/dependency-injection:${SF_CONSTRAINT} \
210-
symfony/http-foundation:${SF_CONSTRAINT} \
211-
symfony/http-kernel:${SF_CONSTRAINT} \
213+
composer update --no-install --with-all-dependencies --minimal-changes \
214+
--with "symfony/config:${SF_CONSTRAINT}" \
215+
--with "symfony/dependency-injection:${SF_CONSTRAINT}" \
216+
--with "symfony/http-foundation:${SF_CONSTRAINT}" \
217+
--with "symfony/http-kernel:${SF_CONSTRAINT}" \
212218
&& make build
213219
214220
- name: ComposerRequireChecker
@@ -219,7 +225,7 @@ jobs:
219225
uses: actions/dependency-review-action@v4
220226

221227
nightly-tests:
222-
name: Nightly - ${{ matrix.job-name }}
228+
name: Nightly - PHP ${{ matrix.php-version }} & Sf ${{ matrix.symfony-version }} - ${{ matrix.job-name }}
223229
needs: [ fetch-supported-versions, tests ]
224230
if: ${{ github.event_name == 'push' || ( github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'with-nightly-tests') ) }}
225231
runs-on: ubuntu-latest
@@ -232,23 +238,23 @@ jobs:
232238
fail-fast: false
233239
matrix:
234240
include:
235-
- job-name: PHP - With highest supported Symfony versions
241+
- job-name: PHP with highest supported Symfony versions
236242
php-version: ${{ needs.fetch-supported-versions.outputs.php-next }}
237243
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-max }}
238244
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
239245
pkg-extra-constraints: behat/gherkin:~4.12.0
240-
- job-name: PHP - With lowest supported Symfony versions
246+
- job-name: PHP with lowest supported Symfony versions
241247
php-version: ${{ needs.fetch-supported-versions.outputs.php-next }}
242248
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-min }}
243249
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
244250
pkg-extra-constraints: behat/gherkin:~4.12.0
245-
- job-name: Symfony - With highest supported PHP version
251+
- job-name: Symfony with highest supported PHP version
246252
php-version: ${{ needs.fetch-supported-versions.outputs.php-max }}
247253
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }}
248254
# Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317)
249255
# Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum !
250256
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' || '' }}
251-
- job-name: Symfony - With lowest supported PHP version
257+
- job-name: Symfony with lowest supported PHP version
252258
# Fix - Sf 7.0 require php 8.1 minimum, most of deps require 8.2 !
253259
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 }}
254260
symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }}
@@ -285,9 +291,11 @@ jobs:
285291

286292
- name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }}
287293
run: |
294+
# For nightly builds, rely on "composer require" rather than "composer update --with" !
295+
# => tested version is likely outside of constraints, in that case "composer update --with" would fail
288296
SF_CONSTRAINT="~${{ matrix.symfony-version }}.0@dev"
289297
composer config minimum-stability dev \
290-
&& composer require -W \
298+
&& composer require --no-install --with-all-dependencies --minimal-changes \
291299
symfony/config:${SF_CONSTRAINT} \
292300
symfony/dependency-injection:${SF_CONSTRAINT} \
293301
symfony/http-foundation:${SF_CONSTRAINT} \

0 commit comments

Comments
 (0)