|
4 | 4 | push: |
5 | 5 | pull_request: |
6 | 6 |
|
| 7 | +env: |
| 8 | + COVERAGE: '0' |
| 9 | + |
7 | 10 | jobs: |
8 | 11 | build: |
9 | 12 | name: Build and Test |
10 | 13 | runs-on: ubuntu-latest |
11 | | - env: |
12 | | - extensions: json |
13 | | - composer_version: 2 |
14 | 14 | strategy: |
15 | 15 | matrix: |
16 | | - php_version: |
| 16 | + php: |
17 | 17 | - '7.4' |
18 | 18 | - '8.0' |
| 19 | + include: |
| 20 | + - php: '8.0' |
| 21 | + coverage: true |
19 | 22 | steps: |
20 | 23 | - uses: actions/checkout@v2 |
21 | 24 |
|
22 | 25 | - name: Get Composer Cache Directory |
23 | 26 | id: composer-cache |
24 | | - run: | |
25 | | - echo "::set-output name=dir::$(composer config cache-files-dir)" |
| 27 | + run: echo "::set-output name=dir::$(composer config cache-files-dir)" |
26 | 28 |
|
27 | 29 | - uses: actions/cache@v2 |
28 | 30 | with: |
29 | 31 | path: ${{ steps.composer-cache.outputs.dir }} |
30 | 32 | key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} |
31 | | - restore-keys: | |
32 | | - ${{ runner.os }}-composer- |
| 33 | + restore-keys: ${{ runner.os }}-composer- |
33 | 34 |
|
34 | 35 | - name: Setup PHP with extensions |
35 | 36 | uses: shivammathur/setup-php@v2 |
36 | 37 | with: |
37 | | - php-version: ${{ matrix.php_version }} |
38 | | - extensions: ${{ env.extensions }} |
| 38 | + php-version: ${{ matrix.php }} |
| 39 | + extensions: json |
39 | 40 | ini-values: memory_limit=-1 |
40 | 41 | coverage: pcov |
41 | | - tools: composer:v2, cs2pr, php-cs-fixer |
| 42 | + tools: composer, cs2pr, php-cs-fixer |
42 | 43 |
|
43 | 44 | - name: Install prerequisites |
44 | 45 | run: | |
45 | | - export PATH="$PATH:$HOME/.composer/vendor/bin" |
46 | | - mkdir -p build/logs |
47 | | - wget https://github.com/satooshi/php-coveralls/releases/download/v2.4.3/php-coveralls.phar |
48 | 46 | wget -O box.phar https://github.com/humbug/box/releases/download/3.13.0/box.phar |
49 | | - export BOX_BIN=$(pwd)/box.phar |
| 47 | + echo "BOX_BIN=$(pwd)/box.phar" >> $GITHUB_ENV |
50 | 48 | sudo chown -R $(whoami):$(whoami) . |
51 | 49 |
|
52 | 50 | - name: Install dependencies |
53 | | - run: composer install --prefer-dist --no-interaction --no-progress |
| 51 | + if: startsWith(matrix.php, '8.0') |
| 52 | + run: composer install --prefer-dist --no-interaction --no-progress --ansi |
| 53 | + |
| 54 | + - name: Update dependencies |
| 55 | + if: "!startsWith(matrix.php, '8.0')" |
| 56 | + run: composer update --no-interaction --no-progress --ansi |
| 57 | + |
| 58 | + - name: Enable code coverage |
| 59 | + if: matrix.coverage |
| 60 | + run: echo "COVERAGE=1" >> $GITHUB_ENV |
54 | 61 |
|
55 | 62 | - name: Run phpunit |
56 | | - run: vendor/bin/simple-phpunit |
| 63 | + run: | |
| 64 | + mkdir -p build/logs/phpunit |
| 65 | + if [ "$COVERAGE" = '1' ]; then |
| 66 | + vendor/bin/simple-phpunit --coverage-clover build/logs/phpunit/clover.xml |
| 67 | + else |
| 68 | + vendor/bin/simple-phpunit |
| 69 | + fi |
57 | 70 |
|
58 | 71 | - name: Run php-cs-fixer |
59 | | - run: php-cs-fixer fix --dry-run --format=checkstyle | cs2pr |
| 72 | + run: php-cs-fixer fix --dry-run --format=checkstyle --ansi | cs2pr |
60 | 73 |
|
61 | 74 | - name: Run phpstan |
62 | | - run: | |
63 | | - vendor/bin/phpstan analyse |
| 75 | + run: vendor/bin/phpstan analyse --ansi |
64 | 76 |
|
65 | 77 | - name: Run e2e tests |
| 78 | + if: startsWith(matrix.php, '8.0') |
| 79 | + run: bin/compile |
| 80 | + |
| 81 | + - name: Upload coverage results to Coveralls |
| 82 | + if: matrix.coverage |
| 83 | + env: |
| 84 | + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
66 | 85 | run: | |
67 | | - php bin/compile |
| 86 | + composer global require --prefer-dist --no-interaction --no-progress --ansi php-coveralls/php-coveralls |
| 87 | + export PATH="$PATH:$HOME/.composer/vendor/bin" |
| 88 | + php-coveralls --coverage_clover=build/logs/phpunit/clover.xml -v |
| 89 | + continue-on-error: true |
0 commit comments