diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index be1cfbb..3d4649b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -14,7 +14,6 @@ on: # Build any PRs and main branch changes - '.github/workflows/coverage-upload.yml' - '.github/workflows/reusable-CI-workflow.yml' - '.github/workflows/reusable-coverage-upload-workflow.yml' - - '.github/workflows/reusable-nightly-tests-workflow.yml' - '.github/workflows/auto-merge-dependabot.yml' push: branches: [ master ] diff --git a/.github/workflows/nightly-tests.yml b/.github/workflows/nightly-tests.yml deleted file mode 100644 index 3018c9e..0000000 --- a/.github/workflows/nightly-tests.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: 'Nightly' -on: - workflow_run: - workflows: ["CI"] - types: [completed] - -permissions: - contents: read - checks: write # For the check run creation ! - -jobs: - tests: - name: Tests - permissions: - contents: read - checks: write # For the check run creation ! - uses: ./.github/workflows/reusable-nightly-tests-workflow.yml diff --git a/.github/workflows/pre-check-CI-updates.yml b/.github/workflows/pre-check-CI-updates.yml index 0c1d18c..f67f2e2 100644 --- a/.github/workflows/pre-check-CI-updates.yml +++ b/.github/workflows/pre-check-CI-updates.yml @@ -16,10 +16,8 @@ on: - '.github/workflows/coverage-upload.yml' - '.github/workflows/reusable-CI-workflow.yml' - '.github/workflows/reusable-coverage-upload-workflow.yml' - - '.github/workflows/reusable-nightly-tests-workflow.yml' - '.github/workflows/auto-merge-dependabot.yml' - permissions: contents: read checks: write # For the check run creation ! @@ -35,14 +33,6 @@ jobs: contents: read uses: ./.github/workflows/reusable-CI-workflow.yml - nightly: - name: Nightly - needs: [tests] - permissions: - contents: read - checks: write # For the check run creation ! - uses: ./.github/workflows/reusable-nightly-tests-workflow.yml - upload: name: Upload needs: [tests] diff --git a/.github/workflows/reusable-CI-workflow.yml b/.github/workflows/reusable-CI-workflow.yml index 607ca09..38c75c5 100644 --- a/.github/workflows/reusable-CI-workflow.yml +++ b/.github/workflows/reusable-CI-workflow.yml @@ -3,14 +3,13 @@ name: 'CI reusable workflow' on: workflow_call: +permissions: + contents: read + env: COMPOSER_PREFER_STABLE: '1' TEST_OUTPUT_STYLE: pretty - -permissions: - contents: read - jobs: fetch-supported-versions: name: Fetch supported versions @@ -214,3 +213,84 @@ jobs: - name: Dependencies check if: ${{ github.event_name == 'pull_request' }} uses: actions/dependency-review-action@v4 + + nightly-tests: + name: Nightly - ${{ matrix.job-name }} + needs: [ fetch-supported-versions, tests ] + if: ${{ github.event_name == 'push' || ( github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'with-nightly-tests') ) }} + runs-on: ubuntu-latest + continue-on-error: true + permissions: + contents: read + env: + COMPOSER_IGNORE_PLATFORM_REQ: 'php+' + strategy: + fail-fast: false + matrix: + include: + - job-name: PHP - With highest supported Symfony versions + php-version: ${{ needs.fetch-supported-versions.outputs.php-next }} + symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-max }} + # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) + pkg-extra-constraints: behat/gherkin:~4.12.0 + - job-name: PHP - With lowest supported Symfony versions + php-version: ${{ needs.fetch-supported-versions.outputs.php-next }} + symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-min }} + # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) + pkg-extra-constraints: behat/gherkin:~4.12.0 + - job-name: Symfony - With highest supported PHP version + php-version: ${{ needs.fetch-supported-versions.outputs.php-max }} + symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }} + # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) + # Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum ! + 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' || '' }} + - job-name: Symfony - With lowest supported PHP version + # Fix - Sf 7.0 require php 8.1 minimum, most of deps require 8.2 ! + 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 }} + symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }} + # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) + # Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum ! + pkg-extra-constraints: behat/gherkin:~4.12.0 ${{ ( needs.fetch-supported-versions.outputs.symfony-next == '7.0' && needs.fetch-supported-versions.outputs.php-min == '8.0' ) && 'symfony/framework-bundle:~7.0.0@dev' || '' }} + + steps: + - name: Check out code + uses: actions/checkout@v5 + + - name: Setup PHP ${{ matrix.php-version }} + id: setup-php + uses: shivammathur/setup-php@v2 + env: + update: true # whether to use latest available patch for the version or not + fail-fast: true # step will fail if an extension or tool fails to set up + with: + php-version: ${{ matrix.php-version }} + tools: composer + coverage: none + + - name: Get composer cache directory + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Setup cache for PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }} + uses: actions/cache@v4 + with: + path: | + ${{ steps.composer-cache.outputs.dir }} + # Clear the cache if composer.json (as composer.lock is not available) has been updated + key: tests-php${{ steps.setup-php.outputs.php-version }}-sf${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }} + + - name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }} + run: | + SF_CONSTRAINT="~${{ matrix.symfony-version }}.0@dev" + composer config minimum-stability dev \ + && composer require -W \ + symfony/config:${SF_CONSTRAINT} \ + symfony/dependency-injection:${SF_CONSTRAINT} \ + symfony/event-dispatcher:${SF_CONSTRAINT} \ + symfony/http-foundation:${SF_CONSTRAINT} \ + symfony/http-kernel:${SF_CONSTRAINT} \ + ${{ matrix.pkg-extra-constraints }} \ + && make build + + - name: Test + run: make test-unit && make test-functional diff --git a/.github/workflows/reusable-nightly-tests-workflow.yml b/.github/workflows/reusable-nightly-tests-workflow.yml deleted file mode 100644 index f7f3984..0000000 --- a/.github/workflows/reusable-nightly-tests-workflow.yml +++ /dev/null @@ -1,145 +0,0 @@ -name: 'Nightly reusable workflow' - -on: - workflow_call: - inputs: - ref: - description: Reference in order to fetch code - type: string - required: false - default: "${{ github.event.workflow_run && github.event.workflow_run.referenced_workflows[0] && github.event.workflow_run.referenced_workflows[0].ref || github.ref }}" - -env: - COMPOSER_PREFER_STABLE: '1' - TEST_OUTPUT_STYLE: pretty - - -permissions: - contents: read - checks: write # For the check run creation ! - -jobs: - fetch-supported-versions: - name: Fetch supported versions - runs-on: ubuntu-latest - permissions: - contents: read - checks: write # For the check run creation ! - outputs: - php-min: ${{ steps.fetch-php-versions.outputs.min }} - php-max: ${{ steps.fetch-php-versions.outputs.max }} - php-next: ${{ steps.fetch-php-versions.outputs.next }} - symfony-min: ${{ steps.fetch-symfony-versions.outputs.min }} - symfony-max: ${{ steps.fetch-symfony-versions.outputs.max }} - symfony-next: ${{ steps.fetch-symfony-versions.outputs.next }} - steps: - - name: 'Check run ○' - uses: yoanm/temp-reports-group-workspace/utils/attach-check-run-to-triggering-workflow@v0 - with: - name: 'Nightly / Fetch supported versions' - fails-on-triggering-workflow-failure: true - - - name: Fetch PHP supported versions - id: fetch-php-versions - uses: yoanm/gha-supported-versions-parser@feature/init - with: - path: .github/workflows/supported-versions.json - dependency: php - ref: "${{ inputs.ref }}" - - - name: Fetch Symfony supported versions - id: fetch-symfony-versions - uses: yoanm/gha-supported-versions-parser@feature/init - with: - path: .github/workflows/supported-versions.json - dependency: symfony - ref: "${{ inputs.ref }}" - - tests: - name: ${{ matrix.job-name }} - needs: [ fetch-supported-versions ] - runs-on: ubuntu-latest - continue-on-error: true - permissions: - contents: read - checks: write # For the check run creation ! - env: - COMPOSER_IGNORE_PLATFORM_REQ: 'php+' - strategy: - fail-fast: false - matrix: - include: - - job-name: PHP - With highest supported Symfony versions - php-version: ${{ needs.fetch-supported-versions.outputs.php-next }} - symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-max }} - # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) - pkg-extra-constraints: behat/gherkin:~4.12.0 - - job-name: PHP - With lowest supported Symfony versions - php-version: ${{ needs.fetch-supported-versions.outputs.php-next }} - symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-min }} - # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) - pkg-extra-constraints: behat/gherkin:~4.12.0 - - job-name: Symfony - With highest supported PHP version - php-version: ${{ needs.fetch-supported-versions.outputs.php-max }} - symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }} - # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) - # Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum ! - 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' || '' }} - - job-name: Symfony - With lowest supported PHP version - # Fix - Sf 7.0 require php 8.1 minimum, most of deps require 8.2 ! - 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 }} - symfony-version: ${{ needs.fetch-supported-versions.outputs.symfony-next }} - # Fix - behat/gherkin => Avoid issue with behat <-> gherkin packages (See https://github.com/Behat/Gherkin/issues/317) - # Fix - symfony/framework-bundle - Framework bundle <7.0 require php 8.1 minimum ! - pkg-extra-constraints: behat/gherkin:~4.12.0 ${{ ( needs.fetch-supported-versions.outputs.symfony-next == '7.0' && needs.fetch-supported-versions.outputs.php-min == '8.0' ) && 'symfony/framework-bundle:~7.0.0@dev' || '' }} - - steps: - - name: 'Check run ○' - uses: yoanm/temp-reports-group-workspace/utils/attach-check-run-to-triggering-workflow@v0 - with: - name: 'Nightly / ${{ matrix.job-name }}' - fails-on-triggering-workflow-failure: true - - - name: Check out code - uses: actions/checkout@v5 - with: - ref: "${{ inputs.ref }}" - - - name: Setup PHP ${{ matrix.php-version }} - id: setup-php - uses: shivammathur/setup-php@v2 - env: - update: true # whether to use latest available patch for the version or not - fail-fast: true # step will fail if an extension or tool fails to set up - with: - php-version: ${{ matrix.php-version }} - tools: composer - coverage: none - - - name: Get composer cache directory - id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - name: Setup cache for PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }} - uses: actions/cache@v4 - with: - path: | - ${{ steps.composer-cache.outputs.dir }} - # Clear the cache if composer.json (as composer.lock is not available) has been updated - key: tests-php${{ steps.setup-php.outputs.php-version }}-sf${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }} - - - name: Build with PHP ${{ steps.setup-php.outputs.php-version }} & Symfony ${{ matrix.symfony-version }} - run: | - SF_CONSTRAINT="~${{ matrix.symfony-version }}.0@dev" - composer config minimum-stability dev \ - && composer require -W \ - symfony/config:${SF_CONSTRAINT} \ - symfony/dependency-injection:${SF_CONSTRAINT} \ - symfony/event-dispatcher:${SF_CONSTRAINT} \ - symfony/http-foundation:${SF_CONSTRAINT} \ - symfony/http-kernel:${SF_CONSTRAINT} \ - ${{ matrix.pkg-extra-constraints }} \ - && make build - - - name: Test - run: make test-unit && make test-functional