aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/matchers/phpcs.json19
-rw-r--r--.github/matchers/phpstan.json16
-rw-r--r--.github/matchers/phpunit.json25
-rw-r--r--.github/workflows/php.yml99
4 files changed, 142 insertions, 17 deletions
diff --git a/.github/matchers/phpcs.json b/.github/matchers/phpcs.json
new file mode 100644
index 0000000..339af9a
--- /dev/null
+++ b/.github/matchers/phpcs.json
@@ -0,0 +1,19 @@
+{
+ "problemMatcher": [
+ {
+ "owner": "phpcs",
+ "fileLocation": "relative",
+ "pattern": [
+ {
+ "regexp": "^\"(.+)\",(\\d+),(\\d+),(.+),\"(.+)\",(.+),(\\d+),(\\d+)$",
+ "file": 1,
+ "line": 2,
+ "column": 3,
+ "severity": 4,
+ "message": 5,
+ "code": 6
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/.github/matchers/phpstan.json b/.github/matchers/phpstan.json
new file mode 100644
index 0000000..3e6bc6c
--- /dev/null
+++ b/.github/matchers/phpstan.json
@@ -0,0 +1,16 @@
+{
+ "problemMatcher": [
+ {
+ "owner": "phpstan",
+ "severity": "error",
+ "pattern": [
+ {
+ "regexp": "^(.+):(\\d+):(.+)$",
+ "file": 1,
+ "line": 2,
+ "message": 3
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/.github/matchers/phpunit.json b/.github/matchers/phpunit.json
new file mode 100644
index 0000000..0869357
--- /dev/null
+++ b/.github/matchers/phpunit.json
@@ -0,0 +1,25 @@
+{
+ "problemMatcher": [
+ {
+ "owner": "phpunit",
+ "fileLocation": "absolute",
+ "pattern": [
+ {
+ "regexp": "^\\d+\\)\\s.*$"
+ },
+ {
+ "regexp": "^(.*)$",
+ "message": 1
+ },
+ {
+ "regexp": "^\\s*$"
+ },
+ {
+ "regexp": "^(.*):(\\d+)$",
+ "file": 1,
+ "line": 2
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
index defd044..039daca 100644
--- a/.github/workflows/php.yml
+++ b/.github/workflows/php.yml
@@ -1,27 +1,92 @@
-name: build
+name: checks
on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
+ - push
+ - pull_request
jobs:
- php-build:
+ test-php:
+ name: test (php ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php-versions: ['7.2', '7.3', '7.4']
+ steps:
+ - name: Git checkout
+ uses: actions/checkout@v2
- runs-on: ubuntu-latest
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ coverage: xdebug
- steps:
- - uses: actions/checkout@v2
+ - name: Validate composer.json and composer.lock
+ run: composer validate
- - name: Validate composer.json and composer.lock
- run: composer validate
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- - name: Install dependencies
- run: composer install --prefer-dist --no-progress --no-suggest
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-composer-
- # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit"
- # Docs: https://getcomposer.org/doc/articles/scripts.md
+ - name: Install dependencies
+ run: composer install --prefer-dist --no-progress --no-suggest
- - name: Run test suite
- run: make check -k
+ - name: PHPUnit
+ run: |
+ echo "::add-matcher::.github/matchers/phpunit.json"
+ make test
+ echo "::remove-matcher owner=phpunit::"
+
+ - name: Coveralls publish
+ env:
+ COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ composer require --quiet --no-interaction cedx/coveralls
+ vendor/bin/coveralls build/phpunit/cov.xml
+
+ lint:
+ name: lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git checkout
+ uses: actions/checkout@v2
+
+ - name: Validate composer.json and composer.lock
+ run: composer validate
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-composer-
+
+ - name: Install dependencies
+ run: composer install --prefer-dist --no-progress --no-suggest
+
+ - name: PHPCS
+ if: always()
+ run: |
+ echo "::add-matcher::.github/matchers/phpcs.json"
+ vendor/bin/phpcs --report=csv
+ echo "::remove-matcher owner=phpcs::"
+
+ - name: PHPStan
+ if: always()
+ run: |
+ echo "::add-matcher::.github/matchers/phpstan.json"
+ vendor/bin/phpstan analyse --error-format=raw --no-progress
+ echo "::remove-matcher owner=phpstan::"