Merge pull request #1402 from ergebnis/dependabot/composer/ergebnis/l… #2668
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://docs.github.com/en/actions | |
name: "Integrate" | |
on: # yamllint disable-line rule:truthy | |
pull_request: null | |
push: | |
branches: | |
- "main" | |
jobs: | |
code-coverage: | |
name: "Code Coverage" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "xdebug" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Set up problem matchers for phpunit/phpunit" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Collect code coverage with Xdebug and phpunit/phpunit" | |
env: | |
XDEBUG_MODE: "coverage" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" | |
- name: "Send code coverage report to codecov.io" | |
uses: "codecov/codecov-action@v5.0.2" | |
with: | |
files: ".build/phpunit/logs/clover.xml" | |
token: "${{ secrets.CODECOV_TOKEN }}" | |
coding-standards: | |
name: "Coding Standards" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Lint YAML files" | |
uses: "ibiqlik/action-yamllint@v3.1.1" | |
with: | |
config_file: ".yamllint.yaml" | |
file_or_dir: "." | |
strict: true | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
tools: "phive" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.9.2" | |
with: | |
trust-gpg-keys: "0xC00543248C87FB13,0x033E5F8D801A2F8D,0x2DF45277AEF09A2F" | |
- name: "Run ergebnis/composer-normalize" | |
run: ".phive/composer-normalize --ansi --dry-run" | |
- name: "Cache cache directory for friendsofphp/php-cs-fixer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: ".build/php-cs-fixer" | |
key: "php-${{ matrix.php-version }}-php-cs-fixer-${{ github.ref_name }}" | |
restore-keys: | | |
php-${{ matrix.php-version }}-php-cs-fixer-main | |
php-${{ matrix.php-version }}-php-cs-fixer- | |
- name: "Run friendsofphp/php-cs-fixer" | |
run: "vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.php --diff --dry-run --show-progress=dots --verbose" | |
compile-phar: | |
name: "Compile Phar" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
env: | |
COMPOSER_NORMALIZE_PHAR: ".build/phar/composer-normalize.phar" | |
COMPOSER_VERSION: "2.7.7" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
ini-values: "memory_limit=-1, phar.readonly=0" | |
php-version: "${{ matrix.php-version }}" | |
tools: "phive" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Require composer/composer" | |
run: "composer require composer/composer:${{ env.COMPOSER_VERSION }} --ansi --no-interaction --no-progress" | |
- name: "Remove git placeholder configuration with jq" | |
run: "echo $(cat box.json | jq 'del(.git)') > box.json" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.9.2" | |
with: | |
trust-gpg-keys: "0xC00543248C87FB13,0x033E5F8D801A2F8D,0x2DF45277AEF09A2F" | |
- name: "Validate configuration for humbug/box" | |
run: ".phive/box validate box.json --ansi" | |
- name: "Compile composer-normalize.phar with humbug/box" | |
run: ".phive/box compile --ansi --config=box.json" | |
- name: "Show info about composer-normalize.phar with humbug/box" | |
run: ".phive/box info ${{ env.COMPOSER_NORMALIZE_PHAR }} --ansi" | |
- name: "Run composer-normalize.phar" | |
run: "${{ env.COMPOSER_NORMALIZE_PHAR }} --ansi" | |
- name: "Run composer-normalize.phar with argument and options" | |
run: "${{ env.COMPOSER_NORMALIZE_PHAR }} --dry-run --no-ansi composer.json" | |
dependency-analysis: | |
name: "Dependency Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
tools: "phive" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.9.2" | |
with: | |
trust-gpg-keys: "0xC00543248C87FB13,0x033E5F8D801A2F8D,0x2DF45277AEF09A2F" | |
- name: "Run maglnet/composer-require-checker" | |
run: ".phive/composer-require-checker check --ansi --config-file=$(pwd)/composer-require-checker.json --verbose" | |
mutation-tests: | |
name: "Mutation Tests" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "xdebug" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run mutation tests with Xdebug and infection/infection" | |
env: | |
XDEBUG_MODE: "coverage" | |
run: "vendor/bin/infection --ansi --configuration=infection.json --logger-github" | |
refactoring: | |
name: "Refactoring" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Cache cache directory for rector/rector" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: ".build/rector" | |
key: "php-${{ matrix.php-version }}-rector-${{ github.ref_name }}" | |
restore-keys: | | |
php-${{ matrix.php-version }}-rector-main | |
php-${{ matrix.php-version }}-rector- | |
- name: "Run automated refactoring with rector/rector" | |
run: "vendor/bin/rector --ansi --config=rector.php --dry-run" | |
security-analysis: | |
name: "Security Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Check installed packages for security vulnerability advisories" | |
run: "composer audit --ansi" | |
static-code-analysis: | |
name: "Static Code Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, opcache, pcntl, phar, posix, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run vimeo/psalm" | |
run: "vendor/bin/psalm --config=psalm.xml --output-format=github --shepherd --show-info=false --stats --threads=4" | |
tests: | |
name: "Tests" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: | |
- "7.4" | |
- "8.0" | |
- "8.1" | |
- "8.2" | |
- "8.3" | |
dependencies: | |
- "lowest" | |
- "locked" | |
- "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.2.2" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.31.1" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Set up problem matchers for phpunit/phpunit" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.2" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.1.2" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Remove platform configuration with composer" | |
if: "matrix.dependencies != 'locked'" | |
run: "composer config platform.php --ansi --unset" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.2" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run unit tests with phpunit/phpunit" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/phpunit.xml --testsuite=unit" | |
- name: "Run integration tests with phpunit/phpunit" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/phpunit.xml --testsuite=integration" |