renfordt/ICStorm

View on GitHub
.github/workflows/php.yml

Summary

Maintainability
Test Coverage
# https://docs.github.com/en/actions

on:
  pull_request: null
  push: null
  schedule:
    - cron: "15 0 * * *"

name: CI

env:
  COMPOSER_ROOT_VERSION: "11.1-dev"

permissions:
  contents: read

jobs:
  dependency-validation:
    name: Dependency Validation

    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.2
          coverage: none
          tools: none

      - name: Ensure that composer.json is valid
        run: composer validate --no-ansi --strict composer.json

      - name: Ensure that dependencies can be installed
        run: composer install --no-ansi --dry-run

  #coding-guidelines:
  #  name: Coding Guidelines

  #    if: github.event_name != 'schedule'

  #    runs-on: ubuntu-latest

  #   steps:
  #      - name: Checkout
  #        uses: actions/checkout@v4
  #
  #      - name: Install PHP
  #        uses: shivammathur/setup-php@v2
  #        with:
  #          php-version: 8.2
  #          coverage: none
  #          tools: none

  #      - name: Composer install
  #        run: composer install

  #      - name: Run PHP-CS-Fixer
  #        run: ./vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix --dry-run --show-progress=dots --using-cache=no --verbose

  unit-tests:
    name: Unit Tests

    needs:
      - dependency-validation

    runs-on: ${{ matrix.os }}

    env:
      PHP_INI_VALUES: memory_limit=-1, assert.exception=1, zend.assertions=1, error_reporting=-1, log_errors_max_len=0, display_errors=On

    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest

        php-version:
          - "8.2"
          - "8.3"

    steps:
      - name: Configure Git to avoid issues with line endings
        if: matrix.os == 'windows-latest'
        run: git config --global core.autocrlf false

      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PHP with extensions
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          #extensions: ${{ env.PHP_EXTENSIONS }}
          ini-values: ${{ env.PHP_INI_VALUES }}
          tools: none

      - name: Install dependencies with Composer
        run: composer install --no-ansi --no-interaction --no-progress

      - name: Run tests with PHPUnit
        run: php ./vendor/phpunit/phpunit/phpunit --testsuite default

  code-coverage:
    name: Code Coverage

    if: github.event_name != 'schedule'

    needs:
      - unit-tests

    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PHP with extensions
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.2
          coverage: pcov
          ini-values: assert.exception=1, zend.assertions=1, error_reporting=-1, log_errors_max_len=0, display_errors=On
          tools: none

      - name: Install dependencies with Composer
        run: composer install --no-ansi --no-interaction --no-progress

      - name: Collect code coverage with PHPUnit
        run: php ./vendor/phpunit/phpunit/phpunit --coverage-clover clover.xml

      - name: Send code coverage report to CodeClimate
        uses: paambaati/codeclimate-action@v5
        env:
          CC_TEST_REPORTER_ID: 9e282ada616888f3a9fc652ee98ccb47651d1e105e9a4637a60efaf6d66fe71f
        with:
          coverageLocations: ${{github.workspace}}/clover.xml:clover
          debug: true