name: CI

on:
  push:
  pull_request:
  schedule:
    - cron: '0 10 * * 5'

jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php:
          - 7.4
        composer_args:
          - ''
          - '--prefer-stable'
          - '--prefer-stable --prefer-lowest'
    name: PHP ${{ matrix.php }} ${{ matrix.composer_args }}
    steps:
      - uses: actions/checkout@v2
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          coverage: none
      - name: Build
        env:
          COMPOSER_ARGS: ${{ matrix.composer_args }}
        run: composer update --no-interaction --no-progress --prefer-dist $COMPOSER_ARGS
      - name: Lint
        run: vendor/bin/parallel-lint -e php,phpt --exclude tests/temp src tests
      - name: Tests
        run: vendor/bin/tester -c tests/php.ini -s tests
      - name: PHPStan
        run: |
          vendor/bin/phpstan analyse
          vendor/bin/phpstan analyse -c phpstan.tests.neon.dist
      - if: failure()
        uses: actions/upload-artifact@v2
        with:
          name: output
          path: tests/**/output

  code_style:
    runs-on: ubuntu-latest
    needs: [ tests ]
    name: Code Style
    steps:
      - uses: actions/checkout@v2
      - uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
          coverage: none
      - name: Build
        run: composer update --no-interaction --no-progress --prefer-dist --prefer-stable
      - name: Check Code Style
        run: vendor/bin/phpcs

  code_coverage:
    runs-on: ubuntu-latest
    needs: [ tests ]
    continue-on-error: true
    name: Code Coverage
    steps:
      - uses: actions/checkout@v2
      - uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
          coverage: none
      - run: composer global require php-coveralls/php-coveralls
      - name: Build
        run: composer update --no-interaction --no-progress --prefer-dist --prefer-stable
      - name: Calculate coverage
        run: vendor/bin/tester -c tests/php.ini -p phpdbg tests --coverage coverage.xml --coverage-src src
      - name: Upload Coverage Report
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: php-coveralls --verbose --config tests/coveralls.yml


Migrate CI to Github Actions
Migrate CI to Github Actions
