diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2573e4d..4ac4c2a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,31 +10,10 @@ updates: directory: "/" schedule: - interval: "weekly" - day: "tuesday" + interval: "daily" time: "04:00" timezone: "Europe/Berlin" - groups: - security-updates: - applies-to: "security-updates" - patterns: - - "*" - exclude-patterns: - - "friendsofphp/php-cs-fixer" - - "sirbrillig/phpcs-variable-analysis" - - "slevomat/coding-standard" - - "squizlabs/php_codesniffer" - version-updates: - applies-to: "version-updates" - patterns: - - "*" - exclude-patterns: - - "friendsofphp/php-cs-fixer" - - "sirbrillig/phpcs-variable-analysis" - - "slevomat/coding-standard" - - "squizlabs/php_codesniffer" - open-pull-requests-limit: 10 reviewers: @@ -54,9 +33,6 @@ updates: include: "scope" prefix: "composer" - #allow: - # - '*' - ignore: - dependency-name: "browscap/browscap" - dependency-name: "elasticsearch/elasticsearch" @@ -83,92 +59,17 @@ updates: - dependency-name: "symfony/http-foundation" - dependency-name: "symfony/yaml" - # Disable rebasing for all pull requests - rebase-strategy: "disabled" - - - package-ecosystem: "npm" - - directory: "/" - - schedule: - interval: "weekly" - day: "tuesday" - time: "04:00" - timezone: "Europe/Berlin" - - groups: - security-updates: - applies-to: "security-updates" - patterns: - - "*" - version-updates: - applies-to: "version-updates" - patterns: - - "*" - - open-pull-requests-limit: 10 - - reviewers: - - "mimmi20" - - assignees: - - "mimmi20" - - labels: - - "dependencies" - - versioning-strategy: "increase" - - target-branch: "master" - - commit-message: - include: "scope" - prefix: "npm" - - ignore: - - dependency-name: "@localnerve/imagemin-gifsicle" - - dependency-name: "@localnerve/imagemin-pngquant" - - dependency-name: "@node-minify/core" - - dependency-name: "@node-minify/no-compress" - - dependency-name: "@node-minify/terser" - - dependency-name: "@typescript-eslint/eslint-plugin" - - dependency-name: "@typescript-eslint/parser" - - dependency-name: "@typescript-eslint/typescript-estree" - - dependency-name: "@vheemstra/vite-plugin-imagemin" - - dependency-name: "@vitest/coverage-istanbul" - - dependency-name: "@vitest/ui" - - dependency-name: "cssnano" - - dependency-name: "cssnano-preset-default" - - dependency-name: "imagemin" - - dependency-name: "postcss-load-config" - - dependency-name: "supports-color" - - dependency-name: "vitest" - - # Disable rebasing for all pull requests - rebase-strategy: "disabled" + rebase-strategy: "auto" - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "weekly" - day: "tuesday" + interval: "daily" time: "04:00" timezone: "Europe/Berlin" - groups: - # Specify a name for the group, which will be used in pull request titles - # and branch names - security-updates: - applies-to: "security-updates" - patterns: - - "*" - version-updates: - applies-to: "version-updates" - patterns: - - "*" - open-pull-requests-limit: 10 reviewers: @@ -185,5 +86,4 @@ updates: commit-message: prefix: "github-actions" - # Disable rebasing for all pull requests - rebase-strategy: "disabled" + rebase-strategy: "auto" diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml new file mode 100644 index 0000000..a08b4a7 --- /dev/null +++ b/.github/workflows/auto-approve.yml @@ -0,0 +1,19 @@ +name: "Auto approve" + +on: + - pull_request_target + +jobs: + auto-approve: + runs-on: "ubuntu-24.04" + + if: ${{ github.actor == 'dependabot[bot]' }} + + permissions: + pull-requests: write + + steps: + - uses: "fastify/github-action-merge-dependabot@v3" + with: + approve-only: true + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml new file mode 100644 index 0000000..5c3c100 --- /dev/null +++ b/.github/workflows/auto-merge.yml @@ -0,0 +1,21 @@ +name: "Auto merge" + +on: + - pull_request_target + +jobs: + automerge: + runs-on: "ubuntu-24.04" + + if: ${{ github.actor == 'dependabot[bot]' }} + + permissions: + pull-requests: write + contents: write + + steps: + - uses: "fastify/github-action-merge-dependabot@v3" + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + use-github-auto-merge: true + merge-method: "merge" diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 36889ed..bf8e63d 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -66,177 +66,30 @@ jobs: phpcs-options: "" tests: - name: "UnitTests with PHPUnit" + name: "UnitTests" needs: "analytics" - runs-on: "${{ matrix.operating-system }}" - - timeout-minutes: 10 - - continue-on-error: false - - strategy: - fail-fast: false - - matrix: - operating-system: - - "ubuntu-22.04" - - "ubuntu-24.04" - - php-version: - - "8.1" - - "8.2" - - "8.3" - - dependencies: - - "lowest" - - steps: - - name: "Checkout" - uses: "actions/checkout@v4" - with: - # Disabling shallow clone is recommended for improving relevancy of reporting - fetch-depth: 0 - lfs: false - persist-credentials: false - - - name: "Install PHP" - uses: "shivammathur/setup-php@2.31.1" - with: - php-version: "${{ matrix.php-version }}" - extensions: "none, phar, json, opcache, ctype, curl, dom, iconv, intl, mbstring, simplexml, tokenizer, xml, xmlwriter" - ini-values: "opcache.enable=1, opcache.fast_shutdown=0, zend.assertions=1, assert.exception=On, intl.default_locale=de, intl.use_exceptions=1, zend.exception_ignore_args=0" - coverage: "none" - tools: "composer:v2" - env: - fail-fast: true - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - phpts: "nts" - debug: true - - - name: "Update dependencies with composer" - uses: "ramsey/composer-install@3.0.0" - with: - dependency-versions: "${{ matrix.dependencies }}" - composer-options: "--optimize-autoloader --prefer-dist --prefer-stable -v" - - - name: "Run unit tests with phpunit/phpunit" - run: "vendor/bin/phpunit -c phpunit.xml --no-coverage --display-warnings --display-deprecations" - - - name: "Enable annotations for validation errors and warnings" - uses: "korelstar/xmllint-problem-matcher@v1" - - - name: "Validate phpcs.xml" - uses: "ChristophWurst/xmllint-action@v1" - with: - xml-file: "phpunit.xml" - xml-schema-file: "vendor/phpunit/phpunit/phpunit.xsd" - - code-coverage: - name: "Code Coverage with PHPUnit" - - needs: "analytics" - - runs-on: "${{ matrix.operating-system }}" - - timeout-minutes: 10 - - continue-on-error: false - - strategy: - fail-fast: false - - matrix: - operating-system: - - "ubuntu-22.04" - - "ubuntu-24.04" - - php-version: - - "8.1" - - dependencies: - - "lowest" - - steps: - - name: "Checkout" - uses: "actions/checkout@v4" - with: - # Disabling shallow clone is recommended for improving relevancy of reporting - fetch-depth: 0 - lfs: false - persist-credentials: false - - - name: "Install PHP" - uses: "shivammathur/setup-php@2.31.1" - with: - php-version: "${{ matrix.php-version }}" - extensions: "none, phar, json, opcache, ctype, curl, dom, iconv, intl, mbstring, simplexml, tokenizer, xml, xmlwriter" - ini-values: "opcache.enable=1, opcache.fast_shutdown=0, zend.assertions=1, assert.exception=On, intl.default_locale=de, intl.use_exceptions=1, zend.exception_ignore_args=0, xdebug.mode=coverage" - coverage: "xdebug" - tools: "composer:v2" - env: - fail-fast: true - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - phpts: "nts" - debug: true - - - name: "Update dependencies with composer" - uses: "ramsey/composer-install@3.0.0" - with: - dependency-versions: "${{ matrix.dependencies }}" - composer-options: "--optimize-autoloader --prefer-dist --prefer-stable -v" - - - name: "Create cache directory for phpunit/phpunit" - run: "mkdir -p .build/coverage" - - - name: "Collect code coverage with Xdebug and phpunit/phpunit" - run: "vendor/bin/phpunit -c phpunit.xml --coverage-clover=.build/coverage/clover.xml --coverage-text --coverage-xml=.build/coverage/coverage-xml --log-junit=.build/coverage/phpunit.junit.xml --display-warnings --display-deprecations" - - - name: "Upload coverage to Codecov" - uses: "codecov/codecov-action@v4.6.0" - with: - file: ".build/coverage/clover.xml" - flags: "phpunit,php-${{ matrix.php-version }},${{ matrix.operating-system }}" - verbose: false - env: - CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" - - - name: "Upload coverage to Codeclimate" - uses: "paambaati/codeclimate-action@v9.0.0" - env: - CC_TEST_REPORTER_ID: "${{ secrets.CODECLIMATE_API_KEY }}" - with: - coverageLocations: ".build/coverage/clover.xml:clover" - debug: false - - - name: "Upload coverage to Coveralls" - uses: "coverallsapp/github-action@v2" - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - flag-name: "php ${{ matrix.php-version }} on ${{ matrix.operating-system }}" - parallel: true - file: ".build/coverage/clover.xml" - format: "clover" - debug: false - - - name: "Run mutation tests with infection/infection" - env: - STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} - run: "vendor/bin/infection --show-mutations --only-covered --min-covered-msi=93 --min-msi=90 --coverage=.build/coverage --logger-github --no-progress -vv" - - finish-code-coverage: - runs-on: "ubuntu-24.04" - - needs: "code-coverage" - - if: always() - - steps: - - name: "Coveralls Finished" - uses: "coverallsapp/github-action@v2" - with: - parallel-finished: true + uses: "mimmi20/ci/.github/workflows/test.yml@8.1" + with: + extensions: "ctype, dom, fileinfo, intl, simplexml, tokenizer, xml, xmlwriter" + ini-values: "opcache.enable=1, opcache.fast_shutdown=0, zend.assertions=1, assert.exception=On, intl.default_locale=de, intl.use_exceptions=1, zend.exception_ignore_args=0" + coverage: "xdebug" + composer-options: "--optimize-autoloader --prefer-dist --prefer-stable -v" + test-name: "" + min-msi: 90 + min-covered-msi: 93 + skip-phpunit: false + skip-vitest: true + skip-stryker: true + upload-codecov: true + upload-codeclimate: true + upload-coveralls: true + upload-flag: "" + secrets: + ENV_CODECLIMATE_API_KEY: ${{ secrets.CODECLIMATE_API_KEY }} + ENV_CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + ENV_STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} # This is a meta job to avoid to have to constantly change the protection rules # whenever we touch the matrix. @@ -249,7 +102,6 @@ jobs: needs: - "tests" - - "code-coverage" steps: - name: Successful run diff --git a/phpunit.xml b/phpunit.xml index 5e76839..90810cf 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -2,17 +2,25 @@ @@ -28,8 +37,6 @@ - -