-name: phpstan
+name: analyse-php
on: [push, pull_request]
jobs:
build:
if: ${{ github.ref != 'refs/heads/l10n_development' }}
- runs-on: ubuntu-20.04
- strategy:
- matrix:
- php: ['7.4']
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
- php-version: ${{ matrix.php }}
+ php-version: 8.1
extensions: gd, mbstring, json, curl, xml, mysql, ldap
- name: Get Composer Cache Directory
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer packages
- uses: actions/cache@v1
+ uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ matrix.php }}
+ key: ${{ runner.os }}-composer-8.1
+ restore-keys: ${{ runner.os }}-composer-
- name: Install composer dependencies
run: composer install --prefer-dist --no-interaction --ansi
- - name: Run PHPStan
- run: php${{ matrix.php }} ./vendor/bin/phpstan analyse --memory-limit=2G
+ - name: Run static analysis check
+ run: composer check-static
-name: phpunit
+name: test-php
on: [push, pull_request]
jobs:
build:
if: ${{ github.ref != 'refs/heads/l10n_development' }}
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
strategy:
matrix:
php: ['7.4', '8.0', '8.1']
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer packages
- uses: actions/cache@v1
+ uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}
+ restore-keys: ${{ runner.os }}-composer-
- name: Start Database
run: |
php${{ matrix.php }} artisan migrate --force -n --database=mysql_testing
php${{ matrix.php }} artisan db:seed --force -n --class=DummyContentSeeder --database=mysql_testing
- - name: phpunit
+ - name: Run PHP tests
run: php${{ matrix.php }} ./vendor/bin/phpunit
[](https://github.com/BookStackApp/BookStack/releases/latest)
[](https://github.com/BookStackApp/BookStack/blob/development/LICENSE)
[](https://crowdin.com/project/bookstack)
-[](https://github.com/BookStackApp/BookStack/actions)
-[](https://github.styleci.io/repos/41589337)
+[](https://github.com/BookStackApp/BookStack/actions)
+[](https://github.com/BookStackApp/BookStack/actions)
[](https://codeclimate.com/github/BookStackApp/BookStack/maintainability)
[](https://gh-stats.bookstackapp.com/)
php artisan db:seed --class=DummyContentSeeder --database=mysql_testing
```
-Once done you can run `php vendor/bin/phpunit` in the application root directory to run all tests.
+Once done you can run `composer test` in the application root directory to run all tests.
### 📜 Code Standards
-PHP code style is enforced automatically [using StyleCI](https://github.styleci.io/repos/41589337).
-If submitting a PR, any formatting changes to be made will be automatically fixed after merging.
+PHP code standards are managed by [using PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer).
+Static analysis is in place using [PHPStan](https://phpstan.org/) & [Larastan](https://github.com/nunomaduro/larastan).
+The below commands can be used to utilise these tools:
+
+```bash
+# Run code linting using PHP_CodeSniffer
+composer lint
+
+# As above, but show rule names in output
+composer lint -- -s
+
+# Auto-fix formatting & lint issues via PHP_CodeSniffer phpcbf
+composer format
+
+# Run static analysis via larastan/phpstan
+composer check-static
+```
+
+If submitting a PR, formatting as per our project standards would help for clarity but don't worry too much about using/understanding these tools as we can always address issues at a later stage when they're picked up by our automated tools.
### 🐋 Development using Docker
* [OneLogin's SAML PHP Toolkit](https://github.com/onelogin/php-saml) - _[MIT](https://github.com/onelogin/php-saml/blob/master/LICENSE)_
* [League/CommonMark](https://commonmark.thephpleague.com/) - _[BSD-3-Clause](https://github.com/thephpleague/commonmark/blob/2.2/LICENSE)_
* [League/Flysystem](https://flysystem.thephpleague.com) - _[MIT](https://github.com/thephpleague/flysystem/blob/3.x/LICENSE)_
-* [StyleCI](https://styleci.io/) - _Hosted Service_
* [pragmarx/google2fa](https://github.com/antonioribeiro/google2fa) - _[MIT](https://github.com/antonioribeiro/google2fa/blob/8.x/LICENSE.md)_
* [Bacon/BaconQrCode](https://github.com/Bacon/BaconQrCode) - _[BSD-2-Clause](https://github.com/Bacon/BaconQrCode/blob/master/LICENSE)_
* [phpseclib](https://github.com/phpseclib/phpseclib) - _[MIT](https://github.com/phpseclib/phpseclib/blob/master/LICENSE)_
* [Clockwork](https://github.com/itsgoingd/clockwork) - _[MIT](https://github.com/itsgoingd/clockwork/blob/master/LICENSE)_
* [PHPStan](https://phpstan.org/) & [Larastan](https://github.com/nunomaduro/larastan) - _[MIT](https://github.com/phpstan/phpstan/blob/master/LICENSE) and [MIT](https://github.com/nunomaduro/larastan/blob/master/LICENSE.md)_
+* [PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) - _[BSD 3-Clause](https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt)_