ci.yml 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. name: CI
  2. on:
  3. workflow_dispatch:
  4. push:
  5. paths:
  6. - 'src/**'
  7. - 'test/**'
  8. - 'composer.json'
  9. - 'phpunit.xml.dist'
  10. pull_request:
  11. paths:
  12. - 'src/**'
  13. - 'test/**'
  14. - 'composer.json'
  15. - 'phpunit.xml.dist'
  16. jobs:
  17. tests:
  18. runs-on: ubuntu-latest
  19. strategy:
  20. fail-fast: true
  21. matrix:
  22. php: ['7.3', '7.4', '8.0', '8.1', '8.2']
  23. laravel: [5.5.*, 6.*, 7.*, '^8.0', '^9.0']
  24. dependency-version: [prefer-lowest, prefer-stable]
  25. exclude:
  26. - laravel: '^9.0'
  27. php: '7.3'
  28. - laravel: '^9.0'
  29. php: '7.4'
  30. name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
  31. env:
  32. EXTENSIONS: dom, curl, bcmath, libxml, mbstring, fileinfo
  33. EXT_CACHE_KEY: ext-cache-v1
  34. steps:
  35. - name: Checkout code
  36. uses: actions/checkout@v2
  37. - name: Setup extensions cache environment
  38. id: cache-env
  39. uses: shivammathur/cache-extensions@v1
  40. with:
  41. php-version: ${{ matrix.php }}
  42. extensions: ${{ env.EXTENSIONS }}
  43. key: ${{ env.EXT_CACHE_KEY }}
  44. - name: Cache extensions
  45. uses: actions/cache@v1
  46. with:
  47. path: ${{ steps.cache-env.outputs.dir }}
  48. key: ${{ steps.cache-env.outputs.key }}
  49. restore-keys: ${{ steps.cache-env.outputs.key }}
  50. - name: Setup PHP
  51. uses: shivammathur/setup-php@v2
  52. with:
  53. php-version: ${{ matrix.php }}
  54. extensions: ${{ env.EXTENSIONS }}
  55. coverage: none #pcov
  56. tools: cs2pr
  57. - name: Get composer cache directory
  58. id: composer-cache
  59. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  60. - name: Cache composer dependencies
  61. uses: actions/cache@v1
  62. with:
  63. path: ${{ steps.composer-cache.outputs.dir }}
  64. key: ${{ runner.os }}-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
  65. restore-keys: ${{ runner.os }}-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-
  66. - name: Install dependencies
  67. run: |
  68. composer require "illuminate/support:${{ matrix.laravel }}" --no-interaction --no-update --no-progress --no-suggest --ignore-platform-req=php
  69. composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest --ignore-platform-req=php
  70. - name: Execute tests
  71. run: composer test
  72. - name: Check .php files for syntax errors
  73. run: composer php:syntax -- --checkstyle | cs2pr
  74. - uses: actions/cache@v3
  75. id: cache-db
  76. with:
  77. path: ~/.symfony/cache
  78. key: db
  79. - name: Check composer dependencies for known security issues
  80. uses: symfonycorp/security-checker-action@v3
  81. with:
  82. lock: ./composer.lock