continuous-integration.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. name: "Continuous Integration"
  2. on:
  3. - push
  4. - pull_request
  5. env:
  6. COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist"
  7. jobs:
  8. tests:
  9. name: "CI"
  10. runs-on: ubuntu-latest
  11. strategy:
  12. matrix:
  13. php-version:
  14. - "7.2"
  15. - "7.3"
  16. - "7.4"
  17. - "8.0"
  18. # disabled for now as phpspec/prophecy does not allow 8.1
  19. # - "8.1"
  20. dependencies: [highest]
  21. include:
  22. - php-version: "7.2"
  23. dependencies: lowest
  24. - php-version: "8.0"
  25. dependencies: lowest
  26. steps:
  27. - name: "Checkout"
  28. uses: "actions/checkout@v2"
  29. - name: "Install PHP"
  30. uses: "shivammathur/setup-php@v2"
  31. with:
  32. coverage: "none"
  33. php-version: "${{ matrix.php-version }}"
  34. extensions: mongodb, redis, amqp
  35. - name: Get composer cache directory
  36. id: composercache
  37. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  38. - name: Cache dependencies
  39. uses: actions/cache@v2
  40. with:
  41. path: ${{ steps.composercache.outputs.dir }}
  42. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
  43. restore-keys: ${{ runner.os }}-composer-
  44. - name: Remove elasticsearch/elasticsearch on PHP 8
  45. if: "startsWith(matrix.php-version, '8.')"
  46. run: 'composer remove elasticsearch/elasticsearch --dev --no-update'
  47. - name: Add require for mongodb/mongodb to make tests runnable
  48. run: 'composer require ${{ env.COMPOSER_FLAGS }} mongodb/mongodb --dev --no-update'
  49. # This does not affect runtime, only tests were fixed in psr/log 1.1.2 so it's
  50. # ok to require this only when running tests
  51. - name: Bump required version of psr/log for tests purposes to fix the --prefer-lowest builds
  52. run: 'composer require ${{ env.COMPOSER_FLAGS }} psr/log:^1.1.2 --no-update'
  53. - name: "Handle lowest dependencies update"
  54. if: "contains(matrix.dependencies, 'lowest')"
  55. run: "echo \"COMPOSER_FLAGS=$COMPOSER_FLAGS --prefer-lowest\" >> $GITHUB_ENV"
  56. - name: "Install latest dependencies"
  57. run: |
  58. composer update ${{ env.COMPOSER_FLAGS }}
  59. - name: "Run tests"
  60. run: "composer exec phpunit -- --verbose"