ci.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. name: CI
  2. on:
  3. - push
  4. - pull_request
  5. jobs:
  6. test:
  7. runs-on: ubuntu-latest
  8. strategy:
  9. matrix:
  10. php-version:
  11. - "7.1"
  12. - "7.2"
  13. - "7.3"
  14. - "7.4"
  15. - "8.0"
  16. - "8.1"
  17. name: PHP ${{ matrix.php-version }}
  18. steps:
  19. - name: Checkout
  20. uses: actions/checkout@v2
  21. - name: Setup PHP, with composer and extensions
  22. uses: shivammathur/setup-php@v2
  23. with:
  24. php-version: ${{ matrix.php-version }}
  25. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  26. coverage: none
  27. - name: Get composer cache directory
  28. id: composer-cache
  29. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  30. - name: Cache composer dependencies
  31. uses: actions/cache@v2
  32. with:
  33. path: ${{ steps.composer-cache.outputs.dir }}
  34. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  35. restore-keys: ${{ runner.os }}-composer-
  36. - name: Install dependencies
  37. run: composer install --no-progress --prefer-dist --optimize-autoloader
  38. - name: Setup problem matchers for PHP
  39. run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
  40. - name: Setup problem matchers for PHPUnit
  41. run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
  42. - name: Configure matchers
  43. uses: mheap/phpunit-matcher-action@v1
  44. - name: Test with PHPUnit
  45. run: ./vendor/bin/phpunit --no-coverage
  46. php-cs-fixer:
  47. runs-on: ubuntu-latest
  48. steps:
  49. - name: Checkout
  50. uses: actions/checkout@v2
  51. - name: Setup PHP, with composer and extensions
  52. uses: shivammathur/setup-php@v2
  53. with:
  54. php-version: 7.4
  55. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  56. coverage: none
  57. tools: cs2pr
  58. - name: Get composer cache directory
  59. id: composer-cache
  60. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  61. - name: Cache composer dependencies
  62. uses: actions/cache@v2
  63. with:
  64. path: ${{ steps.composer-cache.outputs.dir }}
  65. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  66. restore-keys: ${{ runner.os }}-composer-
  67. - name: Composer Install
  68. run: composer global require friendsofphp/php-cs-fixer
  69. - name: Add environment path
  70. run: export PATH="$PATH:$HOME/.composer/vendor/bin"
  71. - name: Code style with PHP-CS-Fixer
  72. run: php-cs-fixer fix --dry-run --diff
  73. coverage:
  74. runs-on: ubuntu-latest
  75. steps:
  76. - name: Checkout
  77. uses: actions/checkout@v2
  78. - name: Setup PHP, with composer and extensions
  79. uses: shivammathur/setup-php@v2
  80. with:
  81. php-version: 7.4
  82. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  83. coverage: xdebug
  84. - name: Get composer cache directory
  85. id: composer-cache
  86. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  87. - name: Cache composer dependencies
  88. uses: actions/cache@v2
  89. with:
  90. path: ${{ steps.composer-cache.outputs.dir }}
  91. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  92. restore-keys: ${{ runner.os }}-composer-
  93. - name: Install dependencies
  94. run: composer install --no-progress --prefer-dist --optimize-autoloader
  95. - name: Coverage
  96. run: |
  97. ./vendor/bin/phpunit --coverage-clover coverage-clover.xml
  98. curl -LO https://scrutinizer-ci.com/ocular.phar
  99. php ocular.phar code-coverage:upload --format=php-clover coverage-clover.xml