Merge pull request #29 from ergebnis/dependabot/composer/rector/recto… #86
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" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
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/Unit/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" | |
- name: "Send code coverage report to codecov.io" | |
uses: "codecov/codecov-action@v3.1.4" | |
with: | |
files: ".build/phpunit/logs/clover.xml" | |
token: "${{ secrets.CODECOV_TOKEN }}" | |
coding-standards: | |
name: "Coding Standards" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- 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.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run ergebnis/composer-normalize" | |
run: "composer normalize --ansi --dry-run" | |
- name: "Create cache directory for friendsofphp/php-cs-fixer" | |
run: "mkdir -p .build/php-cs-fixer/" | |
- name: "Cache cache directory for friendsofphp/php-cs-fixer" | |
uses: "actions/cache@v3.3.1" | |
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 --verbose" | |
dependency-analysis: | |
name: "Dependency Analysis" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.8.0" | |
with: | |
trust-gpg-keys: "0x033E5F8D801A2F8D" | |
- name: "Run maglnet/composer-require-checker" | |
run: ".phive/composer-require-checker check --config-file=$(pwd)/composer-require-checker.json" | |
mutation-tests: | |
name: "Mutation Tests" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
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" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Create cache directory for rector/rector" | |
run: "mkdir -p .build/rector/" | |
- name: "Cache cache directory for rector/rector" | |
uses: "actions/cache@v3.3.1" | |
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" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
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" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Create cache directory for vimeo/psalm" | |
run: "mkdir -p .build/psalm/" | |
- 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" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
dependencies: | |
- "lowest" | |
- "locked" | |
- "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v3.5.3" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.25.5" | |
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.8.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v3.3.1" | |
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.8.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run unit tests with phpunit/phpunit" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/Unit/phpunit.xml" |