ci.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. name: continuous-integration
  2. on:
  3. push:
  4. branches:
  5. - master
  6. - release/*
  7. pull_request:
  8. jobs:
  9. unit-testing:
  10. name: PHPUnit (PHP ${{ matrix.php-versions }})
  11. runs-on: ubuntu-latest
  12. strategy:
  13. fail-fast: false
  14. matrix:
  15. php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
  16. coverage: ['pcov']
  17. code-style: ['yes']
  18. code-analysis: ['no']
  19. include:
  20. - php-versions: '7.1'
  21. coverage: 'none'
  22. code-style: 'yes'
  23. code-analysis: 'yes'
  24. - php-versions: '8.4'
  25. coverage: 'pcov'
  26. code-style: 'yes'
  27. code-analysis: 'yes'
  28. steps:
  29. - name: Checkout
  30. uses: actions/checkout@v4
  31. - name: Setup PHP, with composer and extensions
  32. uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
  33. with:
  34. php-version: ${{ matrix.php-versions }}
  35. extensions: mbstring, dom, fileinfo, mysql, redis, opcache
  36. coverage: ${{ matrix.coverage }}
  37. tools: composer
  38. - name: Get composer cache directory
  39. id: composer-cache
  40. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  41. - name: Cache composer dependencies
  42. uses: actions/cache@v3
  43. with:
  44. path: ${{ steps.composer-cache.outputs.dir }}
  45. # Use composer.json for key, if composer.lock is not committed.
  46. # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
  47. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  48. restore-keys: ${{ runner.os }}-composer-
  49. - name: Install composer dependencies
  50. run: composer install --no-progress --prefer-dist --optimize-autoloader
  51. - name: Code Analysis (PHP CS-Fixer)
  52. if: matrix.code-style == 'yes'
  53. run: PHP_CS_FIXER_IGNORE_ENV=true php vendor/bin/php-cs-fixer fix --dry-run --diff
  54. - name: Code Analysis (PHPStan)
  55. if: matrix.code-analysis == 'yes'
  56. run: composer phpstan
  57. - name: Test with phpunit
  58. run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
  59. - name: Code Coverage
  60. uses: codecov/codecov-action@v3
  61. if: matrix.coverage != 'none'