Full tests with oldest PHP version #17
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
name: Full tests with oldest PHP version | |
on: | |
schedule: | |
- cron: '5 16 * * 3' | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- '**.md' | |
permissions: | |
contents: read | |
pull-requests: read | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
#Code Climate Secret | |
HAS_CC_SECRET: ${{secrets.CC_TEST_REPORTER_ID != '' }} | |
#Coveralls Secret | |
HAS_CA_SECRET: ${{secrets.COVERALLS_REPO_TOKEN != '' }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup PHP 8.1 | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: pcov | |
tools: composer:v2 | |
- name: Echo PHP version | |
run: php -v | |
- name: Validate composer.json | |
run: composer validate | |
- name: Create the composer.lock for the cache key | |
run: composer update --no-install | |
- name: Restore cache Composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: vendor/ | |
key: ${{ format('{0}-composer-php81-{1}', runner.os, hashFiles('composer.lock')) }} | |
restore-keys: ${{ format('{0}-composer-php81-', runner.os) }} | |
- name: Install dependencies | |
run: composer install -vvv | |
- name: List libraries | |
run: composer show | |
- name: Run test suite with coverage for codeclimate and upload results | |
if: ${{ env.HAS_CC_SECRET == 'true' }} | |
uses: paambaati/[email protected] | |
env: | |
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}} | |
with: | |
coverageCommand: vendor/bin/phpunit | |
coverageLocations: ${{github.workspace}}/.phpunit-cache/clover.xml:clover | |
- name: Run test suite for forks or version without code coverage | |
if: ${{ env.HAS_CC_SECRET != 'true' }} | |
run: vendor/bin/phpunit | |
- name: Upload code coverage on Coveralls.io | |
if: ${{ env.HAS_CA_SECRET == 'true' }} | |
uses: coverallsapp/github-action@v2 | |
with: | |
github-token: ${{ secrets.COVERALLS_REPO_TOKEN }} | |
file: ${{github.workspace}}/.phpunit-cache/clover.xml | |
## Quality checks | |
## PHP-CS-Fixer is needed with only one version of PHP | |
- name: Create the PHP-CS-Fixer composer.lock for the cache key | |
run: composer update --working-dir=quality/php-cs-fixer --no-install | |
- name: Cache Composer PHP-CS-FIXER packages | |
id: composer-phpcsfixer-cache | |
uses: actions/cache@v4 | |
with: | |
path: quality/php-cs-fixer/vendor/ | |
key: ${{ format('{0}-phpcsfixer-{1}', runner.os, hashFiles('quality/php-cs-fixer/vendor/composer.lock')) }} | |
restore-keys: ${{ format('{0}-phpcsfixer-', runner.os) }} | |
- name: Install PHP-CS-Fixer | |
run: composer install --working-dir=quality/php-cs-fixer | |
- name: Run PHP-CS-Fixer | |
run: ./quality/php-cs-fixer/vendor/bin/php-cs-fixer fix --config=quality/php-cs-fixer/.php-cs-fixer.php --dry-run --allow-risky=yes --diff | |
## PHP-MESS-DETECTOR | |
- name: Create the PHP-MESS-DETECTOR composer.lock for the cache key | |
run: composer update --working-dir=quality/php-mess-detector --no-install | |
- name: Cache Composer PHP-MESS-DETECTOR packages | |
id: composer-phpmd-cache | |
uses: actions/cache@v4 | |
with: | |
path: quality/php-mess-detector/vendor/ | |
key: ${{ format('{0}-phpmd-{1}', runner.os, hashFiles('quality/php-mess-detector/vendor/composer.lock')) }} | |
restore-keys: ${{ format('{0}-phpmd-', runner.os) }} | |
- name: Install PHP-MESS-DETECTOR | |
run: composer update --working-dir=quality/php-mess-detector | |
- name: Run PHP-MESS-DETECTOR on lib directory | |
run: ./quality/php-mess-detector/vendor/bin/phpmd lib text quality/php-mess-detector/ruleset.xml | |
- name: Run PHP-MESS-DETECTOR on tests directory | |
run: ./quality/php-mess-detector/vendor/bin/phpmd tests text quality/php-mess-detector/test-ruleset.xml | |
## PHP CODE SNIFFER | |
- name: Create the PHP CODE SNIFFER composer.lock for the cache key | |
run: composer update --working-dir=quality/php-code-sniffer --no-install | |
- name: Cache Composer PHP-CS packages | |
id: composer-php-cs-cache | |
uses: actions/cache@v4 | |
with: | |
path: quality/php-code-sniffer/vendor/ | |
key: ${{ format('{0}-phpcs-{1}', runner.os, hashFiles('quality/php-code-sniffer/vendor/composer.lock')) }} | |
restore-keys: ${{ format('{0}-phpcs-', runner.os) }} | |
- name: Install PHP-CS | |
run: composer update --working-dir=quality/php-code-sniffer | |
- name: Run PHP-CS | |
run: ./quality/php-code-sniffer/vendor/bin/phpcs --standard=quality/php-code-sniffer/phpcs.xml -s | |
## PHP-STAN | |
- name: Create the PHP-STAN composer.lock for the cache key | |
run: composer update --working-dir=quality/php-stan --no-install | |
- name: Cache Composer PHP-STAN packages | |
id: composer-php-stan-cache | |
uses: actions/cache@v4 | |
with: | |
path: quality/php-stan/vendor/ | |
key: ${{ format('{0}-phpstan-{1}', runner.os, hashFiles('quality/php-stan/vendor/composer.lock')) }} | |
restore-keys: ${{ format('{0}-phpstan-', runner.os) }} | |
- name: Install PHP-STAN | |
run: composer update --working-dir=quality/php-stan | |
- name: Run PHP-STAN | |
run: ./quality/php-stan/vendor/bin/phpstan analyse --configuration=quality/php-stan/php-stan.neon lib tests --error-format=table --no-progress --no-interaction --no-ansi --level=9 --memory-limit=256M -v |