build.yaml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # https://docs.github.com/en/actions
  2. name: Build
  3. on:
  4. pull_request:
  5. push:
  6. branches:
  7. - main
  8. jobs:
  9. unit-tests:
  10. name: Tests
  11. runs-on: ubuntu-latest
  12. strategy:
  13. matrix:
  14. php-version:
  15. - 7.3
  16. - 7.4
  17. - 8.0
  18. steps:
  19. - name: Checkout
  20. uses: actions/checkout@v2
  21. - name: Install PHP
  22. uses: shivammathur/setup-php@v2
  23. with:
  24. coverage: none
  25. php-version: ${{ matrix.php-version }}
  26. - name: Determine composer cache directory
  27. id: determine-composer-cache-directory
  28. run: echo "::set-output name=directory::$(composer config cache-dir)"
  29. - name: Cache dependencies installed with composer
  30. uses: actions/cache@v2
  31. with:
  32. path: ${{ steps.determine-composer-cache-directory.outputs.directory }}
  33. key: php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.json') }}
  34. restore-keys: php-${{ matrix.php-version }}-composer-
  35. - name: Install dependencies
  36. run: composer install --no-interaction --no-progress
  37. - name: Run phpunit/phpunit
  38. run: vendor/bin/phpunit
  39. tests-with-coverage:
  40. name: "Tests with coverage and PR Comments"
  41. runs-on: ubuntu-latest
  42. strategy:
  43. matrix:
  44. php-version:
  45. - 7.4
  46. steps:
  47. - name: Checkout
  48. uses: actions/checkout@v2
  49. - name: Install PHP
  50. uses: shivammathur/setup-php@v2
  51. with:
  52. coverage: pcov
  53. php-version: ${{ matrix.php-version }}
  54. - name: Setup problem matchers for PHP
  55. run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
  56. - name: Setup problem matchers for PHPUnit
  57. run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
  58. - name: Determine composer cache directory
  59. id: determine-composer-cache-directory
  60. run: echo "::set-output name=directory::$(composer config cache-dir)"
  61. - name: Cache dependencies installed with composer
  62. uses: actions/cache@v2
  63. with:
  64. path: ${{ steps.determine-composer-cache-directory.outputs.directory }}
  65. key: php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.json') }}
  66. restore-keys: php-${{ matrix.php-version }}-composer-
  67. - name: Install dependencies
  68. run: composer install --no-interaction --no-progress
  69. - name: Run phpunit/phpunit with code coverage
  70. run: vendor/bin/phpunit --coverage-text --coverage-clover=clover.xml --coverage-xml=coverage/coverage.xml --log-junit=coverage/junit.xml
  71. - name: Run infection
  72. run: vendor/bin/infection --threads=4 --min-msi=81 --min-covered-msi=81 --coverage=coverage