diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 67d1211..cc70aac 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -1,54 +1,95 @@ -name: "Static Analysis" +name: "Static analysis centralised" on: schedule: - cron: '0 3 * * 1,3,5' - pull_request: - branches: - - "[0-9]+.[0-9]+" - - "[0-9]+.x" + workflow_dispatch: push: branches: - "[0-9]+.[0-9]+" - "[0-9]+.x" + - "feature-*" + pull_request: + types: [ opened, synchronize, reopened ] + + +env: + PIMCORE_PROJECT_ROOT: ${{ github.workspace }} + PRIVATE_REPO: ${{ github.event.repository.private }} jobs: - static-analysis-phpstan: - name: "Static Analysis with PHPStan" - runs-on: "ubuntu-20.04" - continue-on-error: ${{ matrix.experimental }} - strategy: - matrix: - include: - - { php-version: "8.1", dependencies: "lowest", pimcore_version: "", phpstan_args: "", experimental: false } - - { php-version: "8.1", dependencies: "highest", pimcore_version: "", phpstan_args: "", experimental: false } - - { php-version: "8.1", dependencies: "highest", pimcore_version: "11.x-dev", phpstan_args: "", experimental: true } + setup-matrix: + runs-on: ubuntu-latest + outputs: + php_versions: ${{ steps.parse-php-versions.outputs.php_versions }} + matrix: ${{ steps.set-matrix.outputs.matrix }} + private_repo: ${{ env.PRIVATE_REPO }} steps: - - name: "Checkout code" - uses: "actions/checkout@v2" + - name: Checkout code + uses: actions/checkout@v4 - - name: "Install PHP" - uses: "shivammathur/setup-php@v2" + - name: Checkout reusable workflow repo + uses: actions/checkout@v4 with: - coverage: "none" - php-version: "${{ matrix.php-version }}" + repository: pimcore/workflows-collection-public + ref: main + path: reusable-workflows - - name: "Setup Pimcore environment" + - name: Parse PHP versions from composer.json + id: parse-php-versions run: | - .github/ci/scripts/setup-pimcore-environment.sh + if [ -f composer.json ]; then + php_versions=$(jq -r '.require.php' composer.json | grep -oP '\d+\.\d+' | tr '\n' ',' | sed 's/,$//') + if [ -z "$php_versions" ]; then + echo "No PHP versions found in composer.json" + echo "Setting default PHP value" + echo "php_versions=default" >> $GITHUB_OUTPUT + else + echo "php_versions=$php_versions" >> $GITHUB_OUTPUT + echo "#### php versions #### : $php_versions" + fi + else + echo "composer.json not found" + exit 1 + fi - - name: "Update Pimcore version" - env: - PIMCORE_VERSION: "${{ matrix.pimcore_version }}" + - name: Set up matrix + id: set-matrix run: | - if [ ! -z "$PIMCORE_VERSION" ]; then - composer require --no-update pimcore/pimcore:"${PIMCORE_VERSION} as 11.99.9" - fi + php_versions="${{ steps.parse-php-versions.outputs.php_versions }}" + + MATRIX_JSON=$(cat reusable-workflows/phpstan-configuration/matrix-config.json) + + IFS=',' read -ra VERSIONS_ARRAY <<< "$php_versions" + + FILTERED_MATRIX_JSON=$(echo $MATRIX_JSON | jq --arg php_versions "$php_versions" ' + { + matrix: [ + .configs[] | + select(.php_version == $php_versions) | + .matrix[] + ] + }') + + ENCODED_MATRIX_JSON=$(echo $FILTERED_MATRIX_JSON | jq -c .) + + echo "matrix=${ENCODED_MATRIX_JSON}" >> $GITHUB_OUTPUT - - name: "Install dependencies with Composer" - uses: "ramsey/composer-install@v2" - with: - dependency-versions: "${{ matrix.dependencies }}" - - - name: "Run a static analysis with phpstan/phpstan" - run: "vendor/bin/phpstan analyse ${{ matrix.phpstan_args }} -c phpstan.neon --memory-limit=-1" + static-analysis: + needs: setup-matrix + strategy: + matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }} + uses: pimcore/workflows-collection-public/.github/workflows/reusable-static-analysis-centralized.yaml@main + with: + APP_ENV: test + PIMCORE_TEST: 1 + PRIVATE_REPO: ${{ needs.setup-matrix.outputs.private_repo}} + PHP_VERSION: ${{ matrix.matrix.php-version }} + SYMFONY: ${{ matrix.matrix.symfony }} + DEPENDENCIES: ${{ matrix.matrix.dependencies }} + EXPERIMENTAL: ${{ matrix.matrix.experimental }} + PIMCORE_VERSION: ${{ matrix.matrix.pimcore_version }} + COMPOSER_OPTIONS: ${{ matrix.matrix.composer_options }} + secrets: + SSH_PRIVATE_KEY_PIMCORE_DEPLOYMENTS_USER: ${{ secrets.SSH_PRIVATE_KEY_PIMCORE_DEPLOYMENTS_USER }} + COMPOSER_PIMCORE_REPO_PACKAGIST_TOKEN: ${{ secrets.COMPOSER_PIMCORE_REPO_PACKAGIST_TOKEN }} \ No newline at end of file diff --git a/composer.json b/composer.json index 7b63f49..06aafff 100644 --- a/composer.json +++ b/composer.json @@ -8,10 +8,11 @@ "prefer-stable": true, "minimum-stability": "dev", "require": { + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", "handcraftedinthealps/elasticsearch-dsl": "^8.0", "pimcore/opensearch-client": "^1.1", "pimcore/elasticsearch-client": "^1.1", - "pimcore/pimcore": "^11.5", + "pimcore/pimcore": "^11.5 || ^12.0", "symfony/config": "^6.2", "symfony/console": "^6.2", "symfony/dependency-injection": "^6.2", @@ -22,7 +23,7 @@ "symfony/routing": "^6.2" }, "require-dev": { - "phpstan/phpstan": "^1.9.11" + "phpstan/phpstan": "^1.12.15" }, "autoload": { "psr-4": {