summaryrefslogtreecommitdiffstats
path: root/.github/workflows/php.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/php.yml')
-rw-r--r--.github/workflows/php.yml50
1 files changed, 50 insertions, 0 deletions
diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
new file mode 100644
index 0000000..8321fa1
--- /dev/null
+++ b/.github/workflows/php.yml
@@ -0,0 +1,50 @@
+name: PHP Tests
+
+on:
+ push:
+ branches:
+ - master
+ - release/*
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ lint:
+ name: Static analysis for php ${{ matrix.php }} on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ php: ['7.2', '7.3', '7.4', '8.0', '8.1']
+ os: ['ubuntu-latest']
+
+ steps:
+ - name: Checkout code base
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ tools: phpcs
+
+ # The cleanup is required because otherwise the tests fail on PHP 8+.
+ # Some of our deps are not officially compatible with that but will
+ # pass the lint tests. Removing composer.json and composer.lock first
+ # ensures that the test dep setup succeeds. Not removing vendor, but
+ # only renaming it ensures the files are scanned still.
+ - name: Cleanup
+ run: rm composer.* && mv vendor real-vendor
+
+ - name: Setup dependencies
+ run: composer require -n --no-progress overtrue/phplint
+
+ - name: PHP Lint
+ if: success() || matrix.allow_failure
+ run: ./vendor/bin/phplint -n --exclude={^vendor/.*} -- .
+
+ - name: PHP CodeSniffer
+ if: success() || matrix.allow_failure
+ run: phpcs