diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..daa623a --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,99 @@ +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + code_quality: + name: Code Quality + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + tools: symfony-cli + + - name: Install Composer dependencies + run: symfony composer install --prefer-dist --no-interaction --no-progress + + - name: Run Easy Coding Standard + run: symfony php vendor/bin/ecs + + test: + name: Test + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + config: + # Minimum supported dependencies with the latest and oldest PHP version + - PHP_VERSION: '8.1' + COMPOSER_FLAGS: --prefer-stable --prefer-lowest + SYMFONY_VERSION: '6.4' + - PHP_VERSION: '8.1' + COMPOSER_FLAGS: --prefer-stable --prefer-lowest + SYMFONY_VERSION: '7.0' + + # Latest 6.4 stable releases + - PHP_VERSION: '8.1' + SYMFONY_VERSION: '6.4' + - PHP_VERSION: '8.2' + SYMFONY_VERSION: '6.4' + - PHP_VERSION: '8.3' + SYMFONY_VERSION: '6.4' + + # Latest 7.0 stable releases + - PHP_VERSION: '8.1' + SYMFONY_VERSION: '7.0' + - PHP_VERSION: '8.2' + SYMFONY_VERSION: '7.0' + - PHP_VERSION: '8.3' + SYMFONY_VERSION: '7.0' + + # Latest 7.x development releases + - PHP_VERSION: '8.1' + SYMFONY_VERSION: '7.*' + STABILITY: dev + - PHP_VERSION: '8.2' + SYMFONY_VERSION: '7.*' + STABILITY: dev + - PHP_VERSION: '8.2' + SYMFONY_VERSION: '7.*' + STABILITY: dev + env: + SYMFONY_REQUIRE: ${{ matrix.config.SYMFONY_VERSION }} + steps: + - uses: actions/checkout@v4 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.config.PHP_VERSION }} + tools: symfony-cli + + - name: Install globally Symfony Flex + run: | + symfony composer global require --no-progress --no-scripts --no-plugins symfony/flex + symfony composer global config --no-plugins allow-plugins.symfony/flex true + + - name: Configure Composer minimum stability + if: matrix.config.STABILITY + run: symfony composer config minimum-stability ${{ matrix.config.STABILITY }} + + - name: Install Composer dependencies + run: symfony composer update ${{ matrix.config.COMPOSER_FLAGS }} --prefer-dist --no-interaction --no-progress + + - name: Run PHPStan + run: symfony php vendor/bin/phpstan analyze + + - name: Run PHPUnit + run: symfony php vendor/bin/phpunit \ No newline at end of file diff --git a/composer.json b/composer.json index fbb3ba3..1fd7275 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,6 @@ "require-dev": { "phpstan/phpstan": "^1.11", "symplify/easy-coding-standard": "^12.1", - "phpunit/phpunit": "^11.1" + "phpunit/phpunit": "^10.5 || ^11.1" } } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 6403fa4..4d58ef9 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,7 +1,7 @@ diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 0000000..e69de29