phplrt/phplrt

View on GitHub
.github/workflows/main.yml

Summary

Maintainability
Test Coverage
name: build

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

jobs:
  test:
    name: PHP ${{matrix.php}}, ${{ matrix.os }}, ${{ matrix.stability }}
    runs-on: ${{ matrix.os }}
    if: "!contains(github.event.head_commit.message, '[ci skip]')"
    strategy:
      fail-fast: false
      matrix:
        php: [ '8.1', '8.2', '8.3' ]
        os: [ ubuntu-latest, macos-latest, windows-latest ]
        stability: [ prefer-lowest, prefer-stable ]
    steps:
      - name: Set Git To Use LF
        run: |
          git config --global core.autocrlf false
          git config --global core.eol lf
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup PHP ${{ matrix.php }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          tools: composer:v2
          extensions: mbstring
          coverage: pcov
          ini-values: "memory_limit=-1"
      - name: Get Composer Cache Directory
        id: composer-cache
        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
      - name: Restore Composer Cache
        uses: actions/cache@v4
        with:
          path: ${{ steps.composer-cache.outputs.dir }}
          key: ${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.json') }}
          restore-keys: ${{ runner.os }}-${{ matrix.php }}-composer-
      - name: Install Dependencies (PHP Stable)
        uses: nick-invision/retry@v3
        with:
          timeout_minutes: 5
          max_attempts: 5
          command: composer update --${{ matrix.stability }} --prefer-dist --no-interaction --no-progress
      - name: Execute Tests
        run: vendor/bin/phpunit --colors=always --coverage-clover=coverage.xml
      - name: Upload Coverage
        if: matrix.os == 'ubuntu-latest'
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./coverage.xml