diff options
-rw-r--r-- | .github/matchers/phpcs.json | 19 | ||||
-rw-r--r-- | .github/matchers/phpstan.json | 16 | ||||
-rw-r--r-- | .github/matchers/phpunit.json | 25 | ||||
-rw-r--r-- | .github/workflows/php.yml | 88 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | phpcs.xml | 1 |
7 files changed, 131 insertions, 26 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 479a9f9..039daca 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -1,46 +1,92 @@ -name: build +name: checks on: - 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 + - 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 + - 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: Run test suite - run: make check -k - - - name: PHPStan xml report - if: always() + - name: PHPUnit run: | - mkdir -p build/phpstan - vendor/bin/phpstan analyse --no-progress --error-format=checkstyle > build/phpstan/checkstyle.xml - - - name: Analysis Publisher - uses: digirati-labs/analysis-publisher@0.0.1 - if: failure() - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - args: > - --report-type=checkstyle --path=**/build/phpcs/checkstyle.xml - --report-type=checkstyle --path=**/build/phpstan/checkstyle.xml - --publisher=github_check + echo "::add-matcher::.github/matchers/phpunit.json" + make test + echo "::remove-matcher owner=phpunit::" - name: Coveralls publish - if: always() 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::" @@ -166,7 +166,7 @@ check: vendor lint analyse test # Lint php code with phpcs. .PHONY: lint lint: $(phpcs_dir) - phpcs --report-full --report-checkstyle=$(phpcs_dir)/checkstyle.xml + phpcs --report-full --report-summary --cache=$(phpcs_dir)/result.cache # Analyse php code with phpstan. .PHONY: analyse @@ -176,7 +176,7 @@ analyse: # Test php code with phpunit. .PHONY: test test: $(phpunit_dir) - phpunit --log-junit $(phpunit_dir)/junit.xml + phpunit # Create dirs if the do not exist $(dirs): @@ -1,6 +1,6 @@ # W-CMS -[![build][github]][action] ![style][codestyle] ![phpstan][phpstan] [![coverage][coverage]][coveralls] +[![checks][github]][action] ![style][codestyle] ![phpstan][phpstan] [![coverage][coverage]][coveralls] W is a lightweight CMS tool, meant to help you design a website using a unique approach. It's targeting artists, or experimental projects. @@ -178,7 +178,7 @@ Then, to make the release, run the following command: To only build the release zip, simply run `make dist`. This will create a zip file in `dist/` of the current version. -[github]: https://github.com/vincent-peugnet/wcms/workflows/build/badge.svg +[github]: https://github.com/vincent-peugnet/wcms/workflows/checks/badge.svg [action]: https://github.com/vincent-peugnet/wcms/actions [codestyle]: https://img.shields.io/badge/code%20style-PSR12-brightgreen [phpstan]: https://img.shields.io/badge/phpstan-level%205-green @@ -15,7 +15,6 @@ <arg name="colors" /> <arg name="parallel" value="75" /> <arg value="p" /> - <arg name="cache" value="build/phpcs/result.cache" /> <!-- Include the whole PSR12 standard --> <rule ref="PSR12"></rule> |