mirror of
https://git.tt-rss.org/fox/tt-rss.git
synced 2025-12-27 15:51:17 +01:00
128 lines
3.0 KiB
YAML
128 lines
3.0 KiB
YAML
name: PHP Code Quality
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '**.php'
|
|
- 'phpstan.neon'
|
|
- 'phpunit.xml'
|
|
# Allow manual triggering
|
|
workflow_dispatch:
|
|
# Allow other workflows (e.g. Publish) to invoke this one.
|
|
workflow_call:
|
|
|
|
|
|
env:
|
|
fail-fast: true
|
|
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
|
|
jobs:
|
|
phpstan:
|
|
name: PHPStan
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Set up PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '8.4'
|
|
coverage: none
|
|
# PHPUnit is installed to support PHPStan checking tests/
|
|
tools: phpstan/phpstan:^2.1, phpunit/phpunit:^12.4
|
|
|
|
# https://phpstan.org/user-guide/result-cache
|
|
- name: Restore result cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: .phpstan-tmp
|
|
key: phpstan-result-cache-${{ github.run_id }}
|
|
restore-keys: |
|
|
phpstan-result-cache-
|
|
|
|
- name: Run PHPStan
|
|
run: phpstan analyze --no-progress
|
|
|
|
# https://phpstan.org/user-guide/result-cache
|
|
- name: Save result cache
|
|
uses: actions/cache/save@v4
|
|
if: ${{ !cancelled() }}
|
|
with:
|
|
# same as in phpstan.neon
|
|
path: .phpstan-tmp
|
|
key: phpstan-result-cache-${{ github.run_id }}
|
|
|
|
phpunit:
|
|
name: PHPUnit
|
|
runs-on: ubuntu-latest
|
|
continue-on-error: ${{ matrix.experimental }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php: ['8.3', '8.4']
|
|
experimental: [false]
|
|
include:
|
|
- php: '8.5'
|
|
experimental: true
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Set up PHP ${{ matrix.php }}
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
# Check https://phpunit.de/supported-versions.html for PHP version compatibility
|
|
php-version: ${{ matrix.php }}
|
|
coverage: none
|
|
tools: phpunit/phpunit:^12.4
|
|
|
|
- name: Run PHPUnit (standard tests)
|
|
run: phpunit --exclude-group integration
|
|
|
|
- name: PHPUnit (tests with mocked dependencies)
|
|
run: |
|
|
phpunit --no-configuration --bootstrap tests/MockedDepsBootstrap.php tests/mocked/
|
|
|
|
rector:
|
|
name: Rector
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Set up PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: latest
|
|
coverage: none
|
|
tools: rector/rector:^2.2
|
|
|
|
# https://getrector.com/documentation/cache-in-ci#content-github-actions
|
|
- name: Restore result cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: .rector-tmp
|
|
key: rector-result-cache-${{ github.run_id }}
|
|
restore-keys: |
|
|
rector-result-cache-
|
|
|
|
- name: Run Rector (dry run)
|
|
run: rector --dry-run
|
|
|
|
# https://getrector.com/documentation/cache-in-ci#content-github-actions
|
|
- name: Save result cache
|
|
uses: actions/cache/save@v4
|
|
if: ${{ !cancelled() }}
|
|
with:
|
|
# same as in rector.php
|
|
path: .rector-tmp
|
|
key: rector-result-cache-${{ github.run_id }}
|